{"_id":"bigkoa","_rev":"25-fbb7a124e0ad69bcf60bdbbfeea4309f","name":"bigkoa","description":"> BigKoa = BigView + Koa","dist-tags":{"latest":"0.1.15"},"versions":{"0.1.0":{"name":"bigkoa","version":"0.1.0","description":"[![Build](https://travis-ci.org/i5ting/bigview.svg?branch=v2)](https://travis-ci.org/i5ting/bigview) [![codecov.io](https://codecov.io/github/i5ting/bigview/coverage.svg?branch=v2)](https://codecov.io/github/i5ting/bigview?branch=v2) [![js-standard-style]","main":"index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3"},"devDependencies":{"ava":"^0.16.0","biglet":"^1.3.14","codecov":"^1.0.1","ejs":"^2.3.4","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lru-cache":"^4.0.2","nyc":"^10.0.0","open":"0.0.5","sinon":"^1.17.7","standard":"^8.4.0","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","test":"nyc ./node_modules/.bin/ava -v","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard index.js"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","gitHead":"77d743a033724c66241be6a44bdebcc7925c0116","_id":"bigkoa@0.1.0","_npmVersion":"5.4.2","_nodeVersion":"8.7.0","_npmUser":{"name":"i5ting","email":"shiren1118@126.com"},"dist":{"integrity":"sha512-Hn4B6uPAgU0CuqTYB3bCh7kcTxk44WaJgZLU4NW2Mkj6lMEaWea3IH42cfBLoBgW+Zm58VDa4giE8XhOXCWBZA==","shasum":"c6f57804056b10302f70c80c3b39ad3d798f0c7b","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgqiEN09H83XHH/dIHNTyhFNkHdNLlG1lQWVCOGAasqAIgEm02O4byIUpugPJxETQX1yyahHUjnTn3qmCdy1pj/f0="}]},"maintainers":[{"name":"i5ting","email":"shiren1118@126.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa-0.1.0.tgz_1514893821449_0.4209478374104947"},"directories":{}},"0.1.1":{"name":"bigkoa","version":"0.1.1","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3"},"devDependencies":{"ava":"^0.16.0","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^8.4.0","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard index.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"352ef5e2dd1c2a43f9bf6d6ad7d54b33206824db","_id":"bigkoa@0.1.1","_npmVersion":"5.4.2","_nodeVersion":"8.7.0","_npmUser":{"name":"i5ting","email":"shiren1118@126.com"},"dist":{"integrity":"sha512-5IS7Nlxa7s8adHuBP5HnFUOqt2VG1FvrHaK8GYb7Sc4Myh8iaH5H7Z0Fe83hGLzKQRjxJMLg79Vbt8D2Nku+jg==","shasum":"404001b51ff0dad8b2ac5aa0044a91457be772ec","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsYztgnaj5a884tL20QiO2t/Cjg8UQLXEPxJsjXN5veQIgbIqgsQzYGGAPUvSYwPedRdnb4XFQP3WVCq/7p3Vg9lw="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"},{"email":"shiren1118@126.com","name":"i5ting"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa-0.1.1.tgz_1515849036406_0.4258558638393879"},"directories":{}},"0.1.2":{"name":"bigkoa","version":"0.1.2","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"ad1f96644eb598e3e9abcd6d98ef75fe0f038dd3","_id":"bigkoa@0.1.2","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-0PECqzdRai0w6IKdK2+5T3m7+QYxVrIYC0Twy6R9bZNaFbduPPTovhf7Ysh5O1kdv9NkUP52rB4YAqasRd6YNw==","shasum":"e65177593eabb2d496b597a716e71b56b36684a2","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8iNv4g7AOAgDswZ1MFH1zPKB5EQkNepiyY3zqvsOR/AIhAJRV5qpwfoILVzAr+kWS+v5+dntz3POE6+zoN2DnTP/y"}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"},{"email":"shiren1118@126.com","name":"i5ting"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa-0.1.2.tgz_1516851828631_0.05729572125710547"},"directories":{}},"0.1.3":{"name":"bigkoa","version":"0.1.3","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"ad1f96644eb598e3e9abcd6d98ef75fe0f038dd3","_id":"bigkoa@0.1.3","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-1eGbnAX17tJVDJ8Ye9N+XHSDEqGTV/rQZaK75ol4adI5BsHHV8kmLt2IjyPCMRtku+grRpWCwKE9ZY4DNsGfxw==","shasum":"8dcbc72bbbd3184bcdcf87dfbfd7582b0a0c17f5","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICeBcZhAb0RXQoUt+8vGgOPoACr7Avg1c1LOaEnHsrIXAiEA1sA35E1/PpN+pMKU+onLM0ePeZwIHzKAfUKN+ygXp/k="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"},{"email":"shiren1118@126.com","name":"i5ting"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa-0.1.3.tgz_1516860705999_0.899586470099166"},"directories":{}},"0.1.4":{"name":"bigkoa","version":"0.1.4","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"b9d3b394191d724b738572d15da78c12c3391783","_id":"bigkoa@0.1.4","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-M00+dkFw4AvLppPxdZntAGmA1hbp0c5TciPdn6IhjNR2iWDGVtXyxA2KzDXXATSh3gID7Px5JkSqbs5HJsQwbg==","shasum":"45f95fe686c413a5885fdc8560120c3187487c5f","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHKIbh3S1qqoco8Sq/gVff9TSSq/zDzMkCU2gaZkdDciAiA4Q/TKSS4Oez1Pja2izwbWFEIu4L7fReIYrcxWARPUUg=="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"},{"email":"shiren1118@126.com","name":"i5ting"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa-0.1.4.tgz_1517302968250_0.7733220690861344"},"directories":{}},"0.1.5":{"name":"bigkoa","version":"0.1.5","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"48daed8cef48150dad95c67113238058e058327f","_id":"bigkoa@0.1.5","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-SKKbBfdBN5TaDEtnUYWN5qL2ATRmu38ZWmEQMxx3Fh2w1f2mJvCPZxhyOvJ28+qc/KDH8+IxlsMYSZfjykcF4A==","shasum":"082aefe67f799008d28e6b2bdfa0cb8084a1ff85","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBTIDNSzCS72UpJzwI3ip4W10mUFrBlyxkycboBQILVhAiEA+hgCYT3/WHC7PKIOXMI0Gz4jubRl2upjJegMfJs7AEk="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"},{"email":"shiren1118@126.com","name":"i5ting"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa-0.1.5.tgz_1517826032181_0.11120329238474369"},"directories":{}},"0.1.6":{"name":"bigkoa","version":"0.1.6","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"049364ad54214538d4eca281ed9e79fb9c8203c4","_id":"bigkoa@0.1.6","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-G266ZPxRH+KNu7+q26G5ol3vt4mPJJKy7bclV9zLVY9Ks5MDTVlLEZoLv/+wQmKPnK1krLLfDeXxHEc+rT3G6w==","shasum":"95c961b5cc78f3f87597ea8da2a0790fa0dcd0c6","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.6.tgz","fileCount":109,"unpackedSize":251489,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCLbGygWf5IzoBi4KdsPi+RvYEfStQ5ryXU5XQT6EM0ZgIgaJrgU2W4FGn47OYuwj/Kdv1IN0VV+VFWuvtA+vjObJ4="}]},"maintainers":[{"email":"shiren1118@126.com","name":"i5ting"},{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.6_1518415414843_0.41556378445338393"},"_hasShrinkwrap":false},"0.1.7":{"name":"bigkoa","version":"0.1.7","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"bc4c5ac34dd44dce70fecec926f454a9fe66ca7e","_id":"bigkoa@0.1.7","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-ZVkT83A4mWf5KhPkhDVoCuuOxhXjpV822gUalylO/P0CmlMP6joGnfyLIb7P36StnVrcdPpFuSu9DVG5qwmJSA==","shasum":"9214aa504d5120ccead96c88199881167fd4de78","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.7.tgz","fileCount":109,"unpackedSize":251595,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLZShkxd6x0YZxiksSY0JX4No9M0Pldo3SZlwD3/OQ/wIhAODjql/frmUDBij52Ya+y8jzjtCJjfoXRQgO/Dakqrj9"}]},"maintainers":[{"email":"shiren1118@126.com","name":"i5ting"},{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.7_1519809427775_0.15448928644357185"},"_hasShrinkwrap":false},"0.1.8":{"name":"bigkoa","version":"0.1.8","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"8c3e43881156a0a8e74a6a8ac9a41857fd4ed444","_id":"bigkoa@0.1.8","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-kZ8xadRybgkjLT+GWP9ymGd4DiMsV/Q8beSrevySGDeRo1IA60RxcHePCZ13YMd5y71r+TtVnYt9LgVHjFettA==","shasum":"2b4cdf4085b063abfd72105eef0f832e7019f786","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.8.tgz","fileCount":110,"unpackedSize":253989,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD8yT9PsYsMwAbWTOOFsrAlGw4rpSdYVPKBLlDkQvK76wIgVOftKv90ZojZk0gCiQ3x30zqYeTagtZJUy7/g7YVb80="}]},"maintainers":[{"email":"shiren1118@126.com","name":"i5ting"},{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.8_1523442543561_0.36634858378697444"},"_hasShrinkwrap":false},"0.1.9":{"name":"bigkoa","version":"0.1.9","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.0.0","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"1ea4b04ab45c30d4c2e8ca319f8767ec8d4a56ae","_id":"bigkoa@0.1.9","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"integrity":"sha512-+PMH2ZOoUDQkRbVqu1aQy83i5yCxfRDgq6eEzxfPGNaW6NbaSPhz9eRzkegO9smc8stClt+PHFaCLobDVmlxog==","shasum":"dfa6e281c6207ac8df57647eb7eb182bb316b5fa","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.9.tgz","fileCount":111,"unpackedSize":254125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4B86CRA9TVsSAnZWagAAd3AP/RQ8KsBUzC096YrfmvB5\ngX5eauA/NVAMgLfO8+b1/4LCw3plzd6GhRuJI9T0NDaN1LyEbXH6+YyMaDcu\namDT70SGsFKN0bLIdcMk6ykBaMvNQ0dqZj6+Seb9939O+p9XAZsRObkbWNrk\npqkSzO9LwgvGBQ6FGiK5DaJdK34snoQYzDEiSJ8mVx61nzA5qnM/AKDsHU9v\nsnJWdSzaZ7wsL+2/UOh5J1W60GMqpodIPBpk9Q+aYrTifxrN2xfY4YiR5vcF\nEGsTPoZhqCMrampp9lHFOfaeAmKo5YmIvI/JX3vHxxSh8Da3T909BFJ3Na1X\nXrs7SD5tUva2PfXwdOW9JNrMFLcwyGvuLwYDyEVXp3Ko01xv+0sJdHEz6yZO\ndGsC/+mkBLqxQAh/3S02IytxlOp3TCE9IdtGkrnb9hyyijceNCnIFNtLYXpQ\nEzvjGk67yb8bBlz0V9wIdCkc+rBcbnGVNAsTBXSsQvUWeoCy1D3WW07is1/N\n9Ar7PerwgZsmGbHosTVrj/RG74wcBw+w0XopF+xasWfD5iDr2x6y0jgbVljb\nA9IWvz+gCHDCqA4G1ZKiWGNdjEtg8E4HX1RIXCYHdWu5XMhjBKwGjlL0vXjO\nBpDTOmuSG+ZNgry6gQx0HeUihpbC0s2ZEiziXg5R+P+gHzskenIjxTmhcrSa\nEhW2\r\n=d3nn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0Hn8Ncq78F92wNo7AN1uj4wdonFS3BnMb08yYplsqpAIgFVGGFHqkOtvu6vdASoE/a5o2JjXazdbByT5gCcm/Uec="}]},"maintainers":[{"email":"shiren1118@126.com","name":"i5ting"},{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.9_1524637496757_0.8807705339878451"},"_hasShrinkwrap":false},"0.1.10":{"name":"bigkoa","version":"0.1.10","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","eslint":"^4.19.1","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.3.2","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"5643e9fb09b4d9519fdd98def738defff6aeec9e","_id":"bigkoa@0.1.10","_shasum":"6a7a02a2dc8e295e9aff9713caa7154ea01b4a91","_from":".","_npmVersion":"3.3.6","_nodeVersion":"5.0.0","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"shasum":"6a7a02a2dc8e295e9aff9713caa7154ea01b4a91","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.10.tgz","fileCount":111,"unpackedSize":255030,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4XDFCRA9TVsSAnZWagAAsq0QAI7gZSZ0BxhITmn6bIK2\naRefkeakSVd6IWEzZjDhEQTZUTPHlpNDeZHBWfu93W4oqnZ4X+Wb4FabKmcV\nfYNPLLhJqpFtR9WosGGGlg5DDk8/6PvGuQrV3sD6cnIKZQfzatBw9me/sydB\n2TY3mbmX/DWNNL1EIAPzTMeOfPRstmBfigQ4aOp9KyDmSy6oSH+ocBq5VnOd\nKuxCAc7tzsDCie0xye8ZK1BXwcW+Gru2fmYKyUmL/gW1UqPXIzDF1AcwFWAs\nI8YfKBetp0R8TtWse0+DQ17sZa8S/Zga8/tgI7URptNFFhD2LzYnLuK6X/Jq\nuNXRG9lrW9GUwAn+nYdFkbO7/BLXX51xAPARMHm/ZstkPgi3iPopFB74AFjm\n7iPySjucbs8tp/Mf/N4N8hbUB4J1AbnsirKMNQJedemop+0BQ4yemqIgM3rZ\nL4GPwSm3VgesNnSC27OwdKTgySlNYountst8RrXiL1XpDfPhYhrZN1Dsy33Z\nK+OXmFnGAs5JvBssiq9l0vye4DNAN1nkOsKcvdOJTgrofrGFg1DrUY8TRCDE\n1zOxA/MAvlA+4K8jMDz+yhD9TSc104FDxX0eQqUsHFNRv95TEkaQWw2cJeRt\n6WSmdAIsh5hHYub+wKJ9bslHhlYVbf+cvC22LcNivk0P22lB2UGiYcdJrpHp\nzgBX\r\n=ZN2z\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-6NZ7sIzvr6uhp+JgYlQYSLVReXgct7aZNh1fSykKwH3EpbOA75ZpzmdtTKb0jRtlljQlJD+JkXIaayPgqHispg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIERM0YG4P4z5hjMrOr7soMZoCJU2zEjyE3joLrC0tmMRAiEAyl4pMAVV/JX2HRroYyqEdmjVnnhWnfyza9vfZN0S8/o="}]},"maintainers":[{"email":"shiren1118@126.com","name":"i5ting"},{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.10_1524723907899_0.07327832742464646"},"_hasShrinkwrap":false},"0.1.11":{"name":"bigkoa","version":"0.1.11","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","eslint":"^4.19.1","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.3.2","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"4a1888144cf6aa66250f09be52e9b5dd9eecbd8f","_id":"bigkoa@0.1.11","_shasum":"460a162fcfc5850402b3c411079d779885f2933f","_from":".","_npmVersion":"3.3.6","_nodeVersion":"5.0.0","_npmUser":{"name":"jack_pu","email":"kakashjack@gmail.com"},"dist":{"shasum":"460a162fcfc5850402b3c411079d779885f2933f","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.11.tgz","fileCount":111,"unpackedSize":254820,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa8DOrCRA9TVsSAnZWagAAO24P/2kA9yt1bq9HTKzzOBkA\nR9PpzdpebixHnLiHb7Js8KYaGDO9DNy/3bRHDGlMWF0v8pUeG8g8UBu4PwoD\nIt7ZqCI81AeltTEO+ShtiRM2lDtKD6hA2uoq73Atz2lyN8itU7EXjD0Le6G6\nOYSRsjemXHWcSPcD2mCwGFjCiKFri0ys/7HIoG0pU/n5HwFFExlXpZWrBp6/\njwXnxGGq9JnsuobdzBUC30eFPHcib5M46IvLA7rZh3BnVRmAMXDc9oRLREr6\n85HBKR+1iHJN+beOwJBRzSw+ScwFoZqCOBQSyfb1E2WSKKmsTSMZ7coojfWI\nc53ndmnl2rH5uUD2ZsBv+SE+IRKVR2/1zYJW768km5aQz3Z4DE2MlvQFxwZB\nMAwVFd8te84cr+qfvwqQ20FFUSJhp62sjWGTH5OEOFlJ5cf0Q/TiGB9DcygA\nTC75806NIRxNYgFxtVRihebw+tugK/NMKiS5XdPThtp98i4PkEYAaIrVKv7A\nX5Oly9rmNDMfqCzl3cRUw010qRlc8MTP2tZnE5Wrpyn0Aa9G1bnEHTnBQ6WY\npJ1K5R04FPWN0JtDhJPY0ZdfY4phtap8X+0ZaiyEaLMNqdU2Dz+0jRN1Tczw\n4weeY5x9tCXRIQsBZQ6dlNEUW9BmYIdrtf8YDRW8eYw1tgovTKxPAL6JzWcj\nsZJf\r\n=qeJV\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-fqASEAklASrp+oVBeWzCqksr8NhHiUMypOQATKvHWcpu/pcW4Ise5B4YUNLlOIC+5cIPDUzIi25zuILij8uUOQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCnkyFX4S9DPUO3eX7l6K4o3SCsmQCGE40FVApqEllZtQIhAOK8XNyocpd8Lfd3FfGMXsMOWaegYGcwof6bC4Dp/GUj"}]},"maintainers":[{"email":"shiren1118@126.com","name":"i5ting"},{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.11_1525691306525_0.47567406650694255"},"_hasShrinkwrap":false},"0.1.12":{"name":"bigkoa","version":"0.1.12","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","eslint":"^4.19.1","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.3.2","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"2e3ce236e3e67d438306a3873fda17818a12be1f","_id":"bigkoa@0.1.12","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"zhaoxingyue","email":"974445496@qq.com"},"dist":{"integrity":"sha512-f3ssUVDTLsTJvyKWVlSUBYkt3i2cBGx2aQL12xR2G4gvuD8HOO4V8tYc06rRgc3+7Cjux40owVazzh0WWteb+A==","shasum":"89169203e31df36379ebf3e78c9038396d27ae43","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.12.tgz","fileCount":110,"unpackedSize":253950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcq7AxCRA9TVsSAnZWagAACa4P/RHYSuui07amzYzSHC06\nWlLTRjgcngfnX6fFfMo3zGTdovLC0tG/ZC1KEam3sDZOs0CUD8CJ8ZeHooZm\nuZJrfpjfrYLxYcwvlelUSOIq3Fda2KhlqQraIb5WEGtDPbuek8t10A3wLzxG\nHkhaAOIzxviG83i/EXn+n296+FJUXqvhjRUuSjvbotkMo4Hi7kB/mpDNs3it\nlu3Sh5TuKg59Z1YSl+Imv301/2CK7Bv4OEI87o09rwTnTS9O4AF2/7G2wMux\n3rcxxCOlcp0bV3yyjBBOKGhxI2Wr8no7Au0cdGDDuzTUop2cSdFfiCu+WWGT\n5BC3ttUJN1bMP6GmOeUg6v6dvLkbsKOjOewUuzOF2Jk7mY9KuxAT9v99VtKp\n13tirOYSr+rEM7F/kOJsVVRt+fQoVCoLORBD9rt9Eu46m6fr6y5SrfgcoHXk\ni6/qRH/oLMqR5h79QFRRkPH7+KJnu5IAhTMYOeTcFapbWii0J7+3w1N5vwrD\n1kvxrR1F3vU798QqF3Nfb8GFxtRF4a56uJXDcOoliuOYIdicQwS5OQFbtSRP\nz85DNd3weoqFyHQ9m5NqkXrb5w3Z21AmyuI4VQvS2JleIDWEp5wGqCDYc761\ndHIbvnzTJWxjsyEcDr1l69D4BV3m/iufaH3xs35+L12hufNWrB75df8GsfCF\nRMyX\r\n=7yol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9uHrJQe6ECEJ63FbLSToYJDdX7R28jZFad4AVhTgApAiEArjr02w+6p3zf98G02tLp1ke/SKe4JSsYRs0Hd3Papo4="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"shiren1118@126.com","name":"langshu"},{"email":"569105585@qq.com","name":"zhangyuang"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.12_1554755632930_0.15709697250101606"},"_hasShrinkwrap":false},"0.1.13":{"name":"bigkoa","version":"0.1.13","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","eslint":"^4.19.1","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.3.2","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"fe9ce4a1e22f0e4db10622482d3b7718fd2a6d27","_id":"bigkoa@0.1.13","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"zhaoxingyue","email":"974445496@qq.com"},"dist":{"integrity":"sha512-r9AKpzt5YKrkhHOS2AQgKweip0/ZqDK0Q19DTRXfJ/K+PPlOeN7nS0+PdVJIMtZEJ3TVFF63xVlRGOMe/XGE+w==","shasum":"79d66f0c18f903591784a660623161c9a64a26e6","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.13.tgz","fileCount":110,"unpackedSize":253970,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrGerCRA9TVsSAnZWagAAE7cP/AorlSBA22qMu/lXFWhr\nE7SqyFj4w2BGf+jFu7arRJzHj0BowHmQPQ2qKmXl5whXIAq3MkeI/7w6oQ2a\n8WZVfcLDeysuctYGyUBhluOajAC1hPbC47uVIu6fXlWfAz0LPKW9bAie+TeB\n6YfvOL+z3htRXRmdulPR63E43BwMe1Z2yPKBAA/vIRs9KF7tqCr0bO2FQLoA\nTqle7F/2pEeX2SKjQzpUJSV1D0rNk4xv6+iXQczUYGXG9rmX6H+dQutpbQPg\nAPzLLGYsI+eynJXjj2dmF6eUE71hZP4PIpsJ0od0GYc95Y/G6mdf2ERPEa15\nqjeSe+pOmR/+2lGL0+GIIO0MJ7bCdWBT2/Ps+zNN0Ea0ABzUG1s/ATxtlp0B\nbeoeLHSc/VqnrDVEkydytaDio3gCpgoZnxSjf1y6a6KgD+Vl7G5F6izA8c3+\nLhA0XeBOPTPN5S9uHQJ4wICeRAmmcAubYU3cI3J0pVWaOGYLzPMJh6BIx9yy\neEisSYGJEVVwa+XI7VBT8CeqFTBTWiTeaGDheTS45Ueo9pf8ZFlNYNAs6Ekj\npTwNKFy9WPNrTfnKYqVWnjC54XgqDXeMg95MYrUvaC3SgtR/RPKSDtIRSNtH\nIu5MKArTclMV3UHvCjEN7/EcCGqsnsUyM1AJCRYvJl65vxhaQgPXIKXE96pN\nh/YC\r\n=F2wL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcjC8QggA3D7Ri87NobBZTVarDTqfL4zgdV2t7JMJTUwIgDeoNc2TKo2BLBwxoeQs47yQIRKHbOdX5sDenR4EUGAo="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"shiren1118@126.com","name":"langshu"},{"email":"569105585@qq.com","name":"zhangyuang"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.13_1554802602206_0.55425144474305"},"_hasShrinkwrap":false},"0.1.14":{"name":"bigkoa","version":"0.1.14","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","eslint":"^4.19.1","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.3.2","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"af69ad39be546c2c35ecb9b71e95f85016718f67","_id":"bigkoa@0.1.14","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"zhaoxingyue","email":"974445496@qq.com"},"dist":{"integrity":"sha512-lYhYqQLM28mNUKgjiWyhMS3hCH6UAU0nNv0/BZz0Lq4dGPZzh3HPC5BO+Y6pEg/X0dj8X7hiA1PhoQX5Tyjvsw==","shasum":"624024e47cf92770b6fac7d933516e72ef6a9c9a","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.14.tgz","fileCount":110,"unpackedSize":253950,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrGoSCRA9TVsSAnZWagAAibwQAIva5CkQ1wnFAAeufjN6\nFAv9QnTQYpTkJObQ8NhrOob+IpAXwANaf2p7aRaLDLyQCy/EtcuXa3LwWzT1\nZXU+PApZI4GYTe0klMiRHGMuoJOtxKNTQQQtIYA5Y0c0bGdXNAzK/Y5rTNA6\nH4NeOSQg6sfrxBnmbl0BsAToIcsB/j6eoPiBCs+/jIZjc00n3WCR9EkfD4Hv\nI07jBLYz2GEe045DyWRxxOm0MWNFqIi6vciUdeIOJYlUZYaIRUxKBg2gN9FA\noPSsbaGwpeN1xWLiU1Cas+6Aj8+cCKApHfbY2dGs0tA5OgWz8iM/9Bhi6nyY\nqkHwTGZyOlgrSMBHHNZL0oQc+01dDfjsjmrg5en2CwNkPE4mUrf4uCPvYUS6\npFZ8eEY8p4XcNE5Wye5Bms182+1vxKdWXmeZaChtyM6/2FJj+Gi7UrUGuSkw\nptcZ8LiuY8YKU3h3bOfbDREau1QJmy0as5IQRyEr4Krvfm3OoS040E+xGAft\nNySnyulY1fCAQ/23r1DwJxqjipknwAFVY7Elthtl8776yR6EqJcq9jU53+mi\ni+NMTnHtX4DMLgCY1dP3eTgz3YNa7etOtUDFjXOE8rQaYwat3K1ug9dw4+LP\nCMzGB4iDM6/Bv2hFF43ZN+FTLEPKa+yklLPOLnkoCJrhEvs95eSszsxPLHn7\nabh+\r\n=zVX2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCEmTNpEMjz8yKzlDuTkPG/mLEoEJEK3BI8WYxuLXmVwwIgeAmSaxDQ6qdOQZtpyWG1+aOouIbyeceD6A8NNhZ1pw8="}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"shiren1118@126.com","name":"langshu"},{"email":"569105585@qq.com","name":"zhangyuang"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.14_1554803217628_0.1630299088793592"},"_hasShrinkwrap":false},"0.1.15":{"name":"bigkoa","version":"0.1.15","description":"> BigKoa = BigView + Koa","main":"src/index.js","dependencies":{"bluebird":"^3.4.7","debug":"^2.3.3","lru_map":"^0.3.3"},"devDependencies":{"ava":"^0.16.0","benchmark":"^2.1.4","biglet":"^1.3.14","chromedriver":"^2.34.1","co-exec":"^1.0","codecov":"^1.0.1","cross-spawn":"^5.1.0","ejs":"^2.3.4","eslint":"^4.19.1","ghooks":"^1.2.4","husky":"^0.14.3","koa":"^2.4.1","koa-bodyparser":"^3.2.0","koa-logger":"^2.0.1","koa-onerror":"^1.2.1","koa-static":"^3.0.0","lazy-req":"^2.0.0","lru-cache":"^4.0.2","nightwatch":"^0.9.19","nightwatch-helpers":"^1.2.0","nunjucks":"^3.0.1","nyc":"^10.3.2","open":"0.0.5","selenium-server":"^2.53.1","sinon":"^1.17.7","standard":"^10.0.2","testchunks":"^1.0.1"},"scripts":{"start":"node --trace_gc examples/bin","precommit":"npm run standard && npm test","test:unit":"nyc ./node_modules/.bin/ava test/unit -v","test:e2e":"node test/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","report-coverage":"nyc report --reporter=lcov > coverage.lcov && codecov","standard":"standard src/*.js src/mode/*.js","chromedriver":"npm install --save-dev chromedriver --chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver"},"engines":{"node":">= 8"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","nyc":{"exclude":["examples","test"]},"gitHead":"bc208320882d52f79dec0f83ffdd513a52ff6563","_id":"bigkoa@0.1.15","_npmVersion":"6.4.1","_nodeVersion":"10.15.1","_npmUser":{"name":"zhaoxingyue","email":"974445496@qq.com"},"dist":{"integrity":"sha512-uMVDbluDhY2iTwq0VR2CkOTN21FRk44g7uxrQ4SbQTAhqTlrsV/JO1+gOhkHB+03z73oj5qXPDLZeBIaTpIvjA==","shasum":"07f38c01b672a3472c5a6c883cf6d5e7ef776215","tarball":"https://registry.npmjs.org/bigkoa/-/bigkoa-0.1.15.tgz","fileCount":110,"unpackedSize":253919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcrLKXCRA9TVsSAnZWagAAWWAP/RNoLN+XnEUh72DeFG9s\nKEx60N+Ul46duXa3cj+s1IZupQQebqQ6wrBDIEZFvmRuHJFbkynsXR0VA0Dk\nrnQzUf6lU3KUlNxMu/hGunyfSNv3vBT/irIXWFnkOFaUFLtzpgAPI8EcnxLy\nMdXICn4SOqFld1iMmX1qgLv6Tyqa2FMIssoDW8qNRWWhbFlPWdUbZNMZ/kY+\nh9mCp/4CmmqWrLzXJOU9fksxXkfIcHmDSUDXG0LyhZn+IIADEEVZHUN4lPZU\nb8w+fltHBZlUM92qoSjOT7NErxjRRyE+ULRC3MJ8WcwaWRpAtEpDVxHQ26be\n7ae2ohATc2ngsrmOtsprf1Hs8KOtypJAWsj1V4YzaTLPTsZY2/5cYbJpwvZO\nw1NzBzelR5fCpLelMHkQ69yEQ6l84fg57jXJ1KDQpb3cjuSURGOaz60tUBAS\nTb5pUQvae2XeLwSIMHELrSeXdYT1g5x3tbXvQGk7miv+xbzgmN8gUKJE3wJo\nO51JkQsCj34UKxpjA2vujicFgDUWU9fGyHE57q2pQ+QpppyPhzl9dZ+NjK2S\nHv3KVwai26Njc5mNgu5cnG5L1H+OE7Ii5NQJQGy2bIGD1kWmbGiYdM7ZHk9j\n/wULm2sINNU1GPNfxjYJGevWXWicvP4/iH5AkKyhzYnQMW318c+ujYJdr74V\njWgK\r\n=ihoI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAqyKIuucwajqubuCuZaRpqYWr9K+yl4b837RlvnjpuwIhAMhXTwXRDJ4FT9FuT/E58JbQKBjtsLkRQaL95z9xgE4C"}]},"maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"shiren1118@126.com","name":"langshu"},{"email":"569105585@qq.com","name":"zhangyuang"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/bigkoa_0.1.15_1554821782254_0.433909625131325"},"_hasShrinkwrap":false}},"readme":"# BigKoa （Node.js 8.x +）\n\n> BigKoa = BigView + Koa\n\n<a href=\"https://circleci.com/gh/bigviewjs/bigkoa/tree/master\"><img src=\"https://img.shields.io/circleci/project/bigviewjs/bigkoa/master.svg\" alt=\"Build Status\"></a>\n[![codecov.io](https://codecov.io/github/bigviewjs/bigkoa/coverage.svg?branch=master)](https://codecov.io/github/bigviewjs/bigkoa?branch=master)\n[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)\n\n\n- bigkoa [![NPM version](https://img.shields.io/npm/v/bigkoa.svg?style=flat-square)](https://www.npmjs.com/package/bigkoa)\n- biglet [![NPM version](https://img.shields.io/npm/v/biglet.svg?style=flat-square)](https://www.npmjs.com/package/biglet)\n- bigview-cli [![NPM version](https://img.shields.io/npm/v/bigview-cli.svg?style=flat-square)](https://www.npmjs.com/package/bigview-cli)\n- bigconsole [![NPM version](https://img.shields.io/npm/v/bigconsole.svg?style=flat-square)](https://www.npmjs.com/package/bigconsole)\n\n## 特性\n\n- 模块化\n- 具有测试性\n- 支持mock数据\n- 生成html片段（便于对比）\n- 提供Scaffold（bigview-cli）\n- 提供调试UI（bigconsole）\n\n## 功能点\n\n- 支持静态布局和动态布局\n- 支持5种bigpipe渲染模式\n  - parallel.js   并行模式， 先写布局，并行请求，但在获得所有请求的结果后再渲染\n  - pipeline.js  (默认) 管线模式：即并行模式， 先写布局，并行请求，并即时渲染\n  - reduce.js    顺序模式： 先写布局，按照pagelet加入顺序，依次执行，写入\n  - reducerender.js 先写布局，然后顺序执行，在获得所有请求的结果后再渲染\n  - render.js 一次渲染模式：即普通模式，不写入布局，所有pagelet执行完成，一次写入到浏览器。支持搜索引擎，用来支持那些不支持JS的客户端。\n- 支持子pagelet，无限级嵌套\n- 支持根据条件渲染模板，延时输出布局\n- bigview支持错误模块显示，仅限于布局之前\n\n## 生命周期\n\nbigview的生命周期\n\n- before\n- .then(this.beforeRenderLayout.bind(this))\n- .then(this.renderLayout.bind(this))\n- .then(this.afterRenderLayout.bind(this))\n- .then(this.beforeRenderPagelets.bind(this))\n- .then(this.renderPagelets.bind(this))\n- .then(this.afterRenderPagelets.bind(this)\n- end\n\nbigview的生命周期精简\n\n- before\n- renderLayout\n- renderPagelets\n- end\n\nbiglet的生命周期\n\n- before\n- .then(self.fetch.bind(self))\n- .then(self.parse.bind(self))\n- .then(self.render.bind(self))\n- end\n\n## Scaffold\n\nInstall\n\n```\n$ npm i -g bigview-cli\n```\n\nUsages\n\n```\n$ bpm a b c\ngenerate ~/a/MyPagelet.js\ngenerate ~/a/index.html\ngenerate ~/a/index.js\ngenerate ~/a/req.js\ngenerate ~/b/MyPagelet.js\ngenerate ~/b/index.html\ngenerate ~/b/index.js\ngenerate ~/b/req.js\ngenerate ~/c/MyPagelet.js\ngenerate ~/c/index.html\ngenerate ~/c/index.js\ngenerate ~/c/req.js\n```\n\n## 安装\n\n```\n$ npm i -S bigview\n```\n\n## mode 1 并行渲染\n\n```js\nconst MyBigView = require('./MyBigView')\n\napp.get('/', function (req, res) {\n  var bigpipe = new MyBigView(req, res, 'basic/index', { title: \"测试\" })\n\n  var Pagelet1 = require('./bpmodules/basic/p1')\n  var pagelet1 = new Pagelet1()\n\n  var Pagelet2 = require('./bpmodules/basic/p2')\n  var pagelet2 = new Pagelet2()\n\n  bigpipe.add(pagelet1)\n  bigpipe.add(pagelet2)\n\n  bigpipe.start()\n});\n```\n\n## mode 2 支持嵌套子布局\n\n```\napp.get('/nest', function (req, res) {\n  var bigpipe = new MyBigView(req, res, 'nest/index', { title: \"测试\" })\n\n  var Pagelet1 = require('./bpmodules/nest/p1')\n  var pagelet1 = new Pagelet1()\n\n  var Pagelet2 = require('./bpmodules/nest/p2')\n  var pagelet2 = new Pagelet2()\n\n  pagelet1.addChild(pagelet2)\n\n  bigpipe.add(pagelet1)\n\n  bigpipe.start()\n});\n```\n\n### a) 静态布局\n\nviews/nest/index.html是bp的布局文件\n\n```\n<!doctype html>\n<html class=\"no-js\">\n<head>\n    <title><%= title %></title>\n    <link rel=\"stylesheet\" href=\"/stylesheets/style.css\">\n</head>\n<body>\n    <div id=\"pagelet2\" class=\"pagelet2\">load,,,,</div>\n\n    <ul>\n    <% pagelets.forEach(function(p){ %>\n        <li><%= p.name %> | <%= p.selector %>\n        <% if (p.children.length) { %>\n            <ul>\n            <% p.children.forEach(function(sub){ %>\n                <li> subPagelet = <%= sub.name %> | <%= sub.selector %>\n            <% }) %>\n            </ul>\n        <% } %>\n    <% }) %>\n    </ul>\n\n    <% pagelets.forEach(function(p){ %>\n       <div id=\"<%= p.location %>\" class=\"<%= p.selector %>\">loading...<%= p.name %>...</div>\n    <% }) %>\n\n    <script src=\"/js/jquery.min.js\"></script>\n    <script src=\"/js/bigpipe.js\"></script>\n    <script>\n        var bigpipe=new Bigpipe();\n\n        <% pagelets.forEach(function(p){ %>\n\n        bigpipe.ready('<%= p.name %>',function(data){\n            $(\"#<%= p.location %>\").html(data);\n        })\n        <% }) %>\n\n        bigpipe.ready('pagelet2',function(data){\n            $(\"#pagelet2\").html(data);\n        })\n\n    </script>\n</body>\n</html>\n```\n\n遍历pagelets来生成各种页面需要的即可。\n\n### b) 延时输出布局\n\nviews/nest2/index.html是bp的布局文件\n\n```\n<!doctype html>\n<html class=\"no-js\">\n<head>\n    <title><%= title %></title>\n    <link rel=\"stylesheet\" href=\"/stylesheets/style.css\">\n</head>\n<body>\n    <ul>\n    <% pagelets.forEach(function(p){ %>\n        <li><%= p.name %> | <%= p.selector %>\n        <% if (p.children.length) { %>\n            <ul>\n            <% p.children.forEach(function(sub){ %>\n                <li> subPagelet = <%= sub.name %> | <%= sub.selector %>\n            <% }) %>\n            </ul>\n        <% } %>\n    <% }) %>\n    </ul>\n\n    <% pagelets.forEach(function(p){ %>\n       <div id=\"<%= p.location %>\" class=\"<%= p.selector %>\">loading...<%= p.name %>...</div>\n    <% }) %>\n\n    <script src=\"/js/jquery.min.js\"></script>\n    <script src=\"/js/bigpipe.js\"></script>\n    <script>\n        var bigpipe=new Bigpipe();\n\n        <% pagelets.forEach(function(p){ %>\n\n        bigpipe.ready('<%= p.name %>',function(data){\n            $(\"#<%= p.location %>\").html(data);\n        })\n        <% }) %>\n    </script>\n</body>\n</html>\n```\n\n此时无任何pagelet2的布局\n\n\n在bpmodules/nest2/p1/p1.html里，输出pagelet2的布局。\n\n```\n  <script>bigpipe.set(\"pagelet1\", '<%= is %>');</script>\n\n  <div id=\"pagelet2\" class=\"pagelet2\">load,,,,</div>\n\n  <script>\n      bigpipe.ready('pagelet2',function(data){\n          $(\"#pagelet2\").html(data);\n      })\n  </script>\n```\n\n## mode 3：根据条件渲染模板\n\n自定义p1和p2，设置`this.immediately = false`\n\n```\n'use strict'\n\nconst Pagelet = require('../../../../packages/biglet')\n\nmodule.exports = class MyPagelet extends Pagelet {\n  constructor () {\n      super()\n      this.root = __dirname\n      this.name = 'pagelet1'\n      this.data = { is: \"pagelet1测试\" }\n      this.selector = 'pagelet1'\n      this.location = 'pagelet1'\n      this.tpl = 'p1.html'\n      this.delay = 4000\n      this.immediately = false\n  }\n\n  fetch () {\n\t\tlet pagelet = this\n\t\treturn require('./req')(pagelet)\n\t}\n}\n\n```\n\n自定义BigView基类\n\n```\n'use strict'\n\nconst BigView = require('../../../packages/bigview')\n\nmodule.exports = class MyBigView extends BigView {\n  before () {\n    let self = this\n     return new Promise(function(resolve, reject) {\n       self.showPagelet = self.query.a\n       resolve(true)\n    })\n  }\n\n  afterRenderLayout () {\n    let self = this\n\n    if (self.showPagelet === '1') {\n      self.run('pagelet1')\n    } else {\n      self.run('pagelet2')\n    }\n\n    // console.log('afterRenderLayout')\n    return Promise.resolve(true)\n  }\n}\n```\n\n在bigview\n\n```\n'use strict'\n\nconst debug = require('debug')('bigview')\nconst fs = require('fs')\nconst MyBigView = require('./MyBigView')\n\nmodule.exports = function (req, res) {\n  var bigpipe = new MyBigView(req, res, 'if/index', { title: \"条件选择pagelet\" })\n\n  bigpipe.add(require('./p1'))\n  bigpipe.add(require('./p2'))\n\n  bigpipe.start()\n}\n```\n\n- http://127.0.0.1:4005/if?a=1\n- http://127.0.0.1:4005/if?a=2\n\n## 出错模块\n\n- bigview出错，即在所有pagelets渲染之前，显示错误模块，终端其他模块渲染\n- 如果是pagelets里的某一个出错，可以自己根据模板去，模块内的错误就模块自己处理就好了\n\n```js\n    var bigpipe = new MyBigView(req, res, 'error/index', { title: \"测试\" })\n    // bigpipe.mode = 'render'\n    bigpipe.add(require('./p1'))\n    bigpipe.addErrorPagelet(require('./error'))\n```\n\n显示ErrorPagelet，可以在bigview的生命周期，执行子Pagelets之前。reject一个error即可。\n\n比如在afterRenderLayout里，reject\n\n```\n\tafterRenderLayout() {\n\t\tlet self = this\n\t\t// console.log('afterRenderLayout')\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tsetTimeout(function() {\n\t\t\t\treject(new Error('xxxxxx'))\n\t\t\t\t// resolve()\n\t\t\t}, 0)\n\t\t})\n\t}\n```\n\n通过`addErrorPagelet`设置Error时要显示的模块，如果要包含多个，请使用pagelet子模块。\n\n另外，如果设置了ErrorPagelet，布局的时候可以使用errorPagelet来控制错误显示\n\n```\n<!doctype html>\n<html class=\"no-js\">\n<head>\n    <title><%= title %></title>\n    <link rel=\"stylesheet\" href=\"/stylesheets/style.css\">\n</head>\n<body>\n    <div id=\"<%= errorPagelet.location %>\" class=\"<%= errorPagelet.selector %>\">\n        <ul>\n        <% pagelets.forEach(function(p){ %>\n            <li><%= p.name %> | <%= p.selector %>\n        <% }) %>\n        </ul>\n\n        <% pagelets.forEach(function(p){ %>\n        <div id=\"<%= p.location %>\" class=\"<%= p.selector %>\">loading...<%= p.name %>...</div>\n        <% }) %>\n    </div>\n\n    <script src=\"/js/jquery.min.js\"></script>\n    <script src=\"/js/bigpipe.js\"></script>\n    <script>\n        var bigpipe=new Bigpipe();\n\n        <% pagelets.forEach(function(p){ %>\n\n        bigpipe.ready('<%= p.name %>',function(data){\n            $(\"#<%= p.location %>\").html(data);\n        })\n        <% }) %>\n\n        bigpipe.ready('<%= errorPagelet.name %>',function(data){\n            $(\"#<%= errorPagelet.location %>\").html(data);\n        })\n    </script>\n    <script src=\"/bigconsole.min.js\"></script>\n</body>\n</html>\n```\n\n## Pagelet里触发其他模块\n\n提供trigger方法，可以触发1个多个多个其他模块，无序并行。结果返回的是Promise\n\n```\n'use strict'\n\nconst Pagelet = require('../../../../packages/biglet')\nconst somePagelet1 = require('./somePagelet1')\nconst somePagelet2 = require('./somePagelet2')\nconst somePagelet = require('./somePagelet')\n\nmodule.exports = class MyPagelet extends Pagelet {\n\tconstructor () {\n\t\tsuper()\n\n\t\tthis.root = __dirname\n\t\tthis.name = 'pagelet1'\n\t}\n\n\tfetch () {\n    // 触发一个模块\n    this.trigger(new somePagelet())\n    // 触发一个模块\n    this.trigger([new somePagelet1(), new somePagelet2()])\n\t}\n}\n\n```\n\n不允许，直接\n\n```\nreturn this.trigger([require('./somePagelet1'), require('./somePagelet2')])\n```\n\n这样会有缓存，不会根据业务请求来进行不同处理。\n\n也可以强制的fetch里完成\n\n```\n'use strict'\n\nconst Pagelet = require('../../../../packages/biglet')\nconst somePagelet1 = require('./somePagelet1')\nconst somePagelet2 = require('./somePagelet2')\nconst somePagelet = require('./somePagelet')\n\nmodule.exports = class MyPagelet extends Pagelet {\n\tconstructor () {\n\t\tsuper()\n\n\t\tthis.root = __dirname\n\t\tthis.name = 'pagelet1'\n\t}\n\n\tfetch () {\n    // 触发多个模块\n    return this.trigger([new somePagelet1, new somePagelet2()])\n\t}\n}\n\n```\n\n## 生成预览数据\n\n```\napp.get('/', function (req, res) {\n  var bigpipe = new MyBigView(req, res, 'basic/index', { title: \"测试\" })\n\n  var Pagelet1 = require('./bpmodules/basic/p1')\n  var pagelet1 = new Pagelet1()\n\n  var Pagelet2 = require('./bpmodules/basic/p2')\n  var pagelet2 = new Pagelet2()\n\n  bigpipe.add(pagelet1)\n  bigpipe.add(pagelet2)\n\n  // bigpipe.preview('aaaa.html')\n  bigpipe.previewFile = 'aaaa.html'\n  bigpipe.start()\n});\n```\n\n方法\n\n- 设置previewFile\n- bigpipe.preview('aaaa.html')\n\n## 获取数据\n\n```js\n'use strict'\n\nconst Pagelet = require('../../../../packages/biglet')\n\nmodule.exports = class MyPagelet extends Pagelet {\n\tconstructor () {\n\t\tsuper()\n\n\t\tthis.root = __dirname\n\t\tthis.name = 'pagelet1'\n\t\tthis.data = { is: \"pagelet1测试\" }\n\t\tthis.location = 'pagelet1'\n\t\tthis.tpl = 'p1.html'\n\t\tthis.selector = 'pagelet1'\n\t\tthis.delay = 2000\n\t}\n\n  fetch () {\n    return new Promise(function(resolve, reject){\n      setTimeout(function() {\n        // self.owner.end()\n        resolve(self.data)\n      }, 4000);\n    })\n  }\n}\n```\n\n只需要重写fetch方法，并且返回Promise对象即可。如果想多个，就利用Promise的链式写法解决即可\n\n## http支持\n\n无论http也好，还是其他方式（rpc）也好，都是需要参数的\n\n- bigview为单页应用入口\n- bigview只定义布局，以及各个pagelet位置（当然也可以在before里完成http请求）\n- bigview入口是express路由，可以获取querystring\n- bigview里包含多个pagelet\n- pagelet里需要发起接口请求，获取数据后，想浏览器写html片段\n\n所以要做的，依然是上面的fetch方法，由于pagelet是独立的，所以无法直接获取bigview页面的参数。\n\n但是pagelet里有一个owner对象，其实就是bigview对象。\n\n先看一下模块入口\n\n```\n'use strict'\n\nconst debug = require('debug')('bigview')\nconst fs = require('fs')\nconst MyBigView = require('./MyBigView')\n\nmodule.exports = function (req, res) {\n  var bigpipe = new MyBigView(req, res, 'basic/index', { title: \"测试\" })\n\n  var Pagelet1 = require('./p1')\n  var pagelet1 = new Pagelet1()\n\n  var Pagelet2 = require('./p2')\n  var pagelet2 = new Pagelet2()\n\n  bigpipe.add(pagelet1)\n  bigpipe.add(pagelet2)\n\n  // bigpipe.preview('aaaa.html')\n  bigpipe.isMock = true\n  bigpipe.previewFile = 'aaaa.html'\n  bigpipe.start()\n}\n```\n\n很明显这就是一个express中间件。\n\n```\napp.get('/', require('./bpmodules/basic'));\n```\n\n所以获取QueryString就很简单了，从req.query里获得就可以了。然后赋值给bigpipe对象。\n\n实际上，bigview已经做了这件事，它自身已经绑定了3个获取参数的属性\n\n- this.query  //  ?a=1&b=2\n- this.params  //  /a/:id    this.params.id\n- this.body 仅限于POST等类型的请求，估计用的不会很多\n\n所以在req.js里可以这样使用\n\n- pagelet.owner.query\n- pagelet.owner.params\n- pagelet.owner.body\n\n例子如下\n\n```\n'use strict'\n\nmodule.exports = function (pagelet) {\n    console.log(pagelet.owner.query)\n\n    pagelet.delay = 1000\n    return new Promise(function(resolve, reject){\n      setTimeout(function() {\n        // self.owner.end()\n        resolve(pagelet.data)\n      }, pagelet.delay)\n    })\n}\n```\n\n\n## 定义实现render方法，支持更多模板引擎\n\n```js\n'use strict'\n\nconst Pagelet = require('../../../../packages/biglet')\n\nmodule.exports = class MyPagelet extends Pagelet {\n\tconstructor () {\n\t\tsuper()\n\n\t\tthis.root = __dirname\n\t\tthis.name = 'pagelet1'\n\t\tthis.data = { is: \"pagelet1测试\" }\n\t\tthis.location = 'pagelet1'\n\t\tthis.tpl = 'p1.html'\n\t\tthis.selector = 'pagelet1'\n\t\tthis.delay = 2000\n\t}\n\n    fetch () {\n        return new Promise(function(resolve, reject){\n            setTimeout(function() {\n                // self.owner.end()\n                resolve(self.data)\n            }, 4000);\n        })\n    }\n\n    render (tpl, data) {\n        const ejs = require('ejs')\n        let self = this\n\n        return new Promise(function(resolve, reject){\n            ejs.renderFile(tpl, data, self.options, function(err, str){\n                // str => Rendered HTML string\n                if (err) {\n                    console.log(err)\n                    reject(err)\n                }\n\n                resolve(str)\n            })\n        })\n    }\n}\n```\n\n重写render()方法，如果不重写则采用默认的模板引擎ejs编译。\n\nrender方法的参数\n\n- tpl，即pagelet对应的模板\n- data，是pagelet对应的模板编译时需要的数据\n\n\n\n## 模块目录的思考\n\n```\n.\n├── MyBigView.js（实现类，继承自bigview）\n├── index.js （返回MyBigView以及p1和p2等pagelet模块的组织）\n├── p1（pagelet模块）\n│   ├── index.js\n│   ├── p1.html\n│   └── req.js\n└── p2（pagelet模块）\n    ├── index.js\n    ├── p2.html\n    └── req.js\n```\n\n### pagelet模块\n\npagelet的本章是返回模板引擎编译后的html片段。\n\n> 模板引擎编译（模板 + 数据） = html\n\n唯一比较麻烦的是数据的来源，可能是静态数据，也可能是api请求的数据，所以在设计pagelet的时候，通过集成fetch方法来实现自定义数据。为了进一步\n\n```\n├── p1（pagelet模块）\n│   ├── index.js\n│   ├── p1.html\n│   └── req.js\n```\n\n说明\n\n- index.js （实现类，继承自biglet）可以完成各种配置\n- p1.html 是模板\n- req.js 是获取api数据的，提供给模板引擎data的请求文件，返回Promise对象\n\n## 支持mock数据\n\nbigpipe\n\n```\n  bigpipe.isMock = true\n  bigpipe.previewFile = 'aaaa.html'\n```\n\npagelet带定\n\n```\nvar Pagelet1 = require('./bpmodules/basic/p1')\nvar pagelet1 = new Pagelet1()\n\npagelet1.mock = true\n\npagelet1.data = {\n  xxx: yyy\n}\n\npagelet1.test()\n```\n\nor\n\n```\n$ pt bpmoduless/p1 url\n$ pt bpmoduless/p1 aaaa.json\n```\n\n自动跑测试，并给出测试结果\n\n## 支持 gzip 压缩\n\nenable gzip:\n\n```javascript\nconst bigkoa = new BigKoa({ gzip: true })\n```\n\n\n## More\n\npagelet能复用么？\n\n直接请求，也未尝不可\n\n- pagelet独立模块复用\n- http方式调用pagelet（需要深入思考一下）\n\n性能改进\n\n- req.js，有http改成rpc\n- 缓存模板\n- 缓存编译结果\n\n与传统Ajax比较\n\n- 减少HTTP请求数：多个模块更新合成一个请求\n- 请求数减少：多个chunk合成一个请求\n- 减少开发成本：前端无需多写JavaScript代码\n- 降低管理成本：模块更新由后端程序控制\n- URL优雅降级：页面链接使用真实地址\n- 代码一致性：页面加载不劢态刷新模块代码相同\n\n前端优化，参考微博的方式\n\n异步加载显示模块的方式：BigPipe方式降低模块开发成本、管理成本\n\n```\nvar FM=function(a,b,c){function bN(b,c){a.clear&&(bN=a.clear)(b,c)}function bM(b,c,d){a.start&&(bM=a.start)(b,c,d)}function bL(a){return a===null?\"\":Object.prototype.toString.call(a).slice(8,-1).toLowerCase()}function bK(){bv(function(){bH();for(var a in J){if(I[a]){bB(P,I[a]);delete\n\n\n<script>FM.view({\"ns\":\"pl.common.webim\",\"domid\":\"pl_common_webim\",\"css\":[\"style/css/module/list/comb_webim.css?version=f25a07f3fbb17183\"],\"js\":[\"webim_prime/js/common/all.js?version=8fde40d2c1ecd58b\"]})</script>\n<script>FM.view({\"ns\":\"pl.top.index\",\"domid\":\"plc_top\",\"css\":[],\"js\":[\"home/js/pl/top/index.js?version=8fde40d2c1ecd58b\"],\"html\":\"\"})</script>\n\n<script>\npl.trigger('pagelet1',{\n  css: ['pl1.css'],\n  js: ['pl1.js'],\n  data: {},\n  html:'<span>Here is pagelet1</span>'\n});\n</script>\n```\n\n- 同一个pagelet可能触发多次\n\n\n模块的css可以采用各种预处理编写，在提供bigpipe打包功能，合并到一起或者单独引入(可以再考虑)。\n\n- 目前是模板引擎里嵌入js和css\n- 显示的方式，应该可以完成更多优化功能，对模板化更好\n- 优化开发方式\n\n4种模式\n\n- sync 默认就是此模式，直接输出。\n- quicking 此类 widget 在输出时，只会输出个壳子，内容由用户自行决定通过 js，另起请求完成填充，包括静态资源加载。\n- async 此类 widget 在输出时，也只会输出个壳子，但是内容在 body 输出完后，chunk 输出 js 自动填充。widget 将忽略顺序，谁先准备好，谁先输出。\n- pipeline 与 async 基本相同，只是它会严格按顺序输出。\n\nBigPipe的三种模式：\n\n- 一次渲染模式：即普通模式，支持搜索引擎，用来支持那些不支持JS的客户端。\n- 管线模式：即并行模式，并行请求，并即时渲染。(已实现)\n- 并行模式：并行请求，但在获得所有请求的结果后再渲染。\n\n## 参考\n\nhttp://velocity.oreilly.com.cn/2011/ppts/WK_velocity.pdf\n\nreview\n\n- 测试独立\n- render统一（？）\n- 初始化参数\n- fetch（）就够用了，不必before（精简生命周期，fetch后增加parse）\n- layout：先返回布局（压测）（ok）\n- out模式：同步\n- 日志\n- 开关\n- 性能\n- 共享内存\n- 约定，所有的数据，只能绑定到data上，改成parse\n- pagelet（传model）\n- 继承自event，外接日志(基本实现)\n\n- 静态布局和动态布局说明\n\n- bigview指定模板demo\n- pagelet指定外部模板demo\n\n- ng proxy给个头compress,expire-buffer\n- 分享\n- 封装前端bigpipe库\n\n## TODO\n\n- 增加事件\n- 支持bigview向浏览器写入方法\n- 支持error模块指定\n- 支持条件\n\n## 感谢\n\n- 冯地木\n- 张凯\n- 张代应\n- 陈愉镔\n\n\n<!--  -->\n## Timeout\n\n主流程bigview上5秒超时，biglet里fetch、parse等操作默认1秒超时，如果不满足，请设置timeout（单位是毫秒）\n\n## 模块是否渲染\n\n当获取数据后，某些模块不必要展示的时候，打破biglet的渲染promise链即可\n\nbiglet\n\n- before （reject）\n- fetch （reject）\n- parse （reject）\n- render\n\n移除了show属性，没有意义\n","maintainers":[{"email":"kakashjack@gmail.com","name":"jack_pu"},{"email":"shiren1118@126.com","name":"langshu"},{"email":"569105585@qq.com","name":"zhangyuang"},{"email":"974445496@qq.com","name":"zhaoxingyue"}],"time":{"modified":"2022-06-13T04:36:26.547Z","created":"2018-01-02T11:50:21.669Z","0.1.0":"2018-01-02T11:50:21.669Z","0.1.1":"2018-01-13T13:10:36.760Z","0.1.2":"2018-01-25T03:43:48.741Z","0.1.3":"2018-01-25T06:11:46.185Z","0.1.4":"2018-01-30T09:02:48.345Z","0.1.5":"2018-02-05T10:20:32.345Z","0.1.6":"2018-02-12T06:03:34.954Z","0.1.7":"2018-02-28T09:17:07.835Z","0.1.8":"2018-04-11T10:29:03.620Z","0.1.9":"2018-04-25T06:24:56.915Z","0.1.10":"2018-04-26T06:25:08.083Z","0.1.11":"2018-05-07T11:08:26.601Z","0.1.12":"2019-04-08T20:33:53.122Z","0.1.13":"2019-04-09T09:36:42.323Z","0.1.14":"2019-04-09T09:46:57.780Z","0.1.15":"2019-04-09T14:56:22.437Z"},"keywords":[],"author":{"name":"i5ting"},"license":"MIT","readmeFilename":"README.md"}