{"_id":"mpregular","_rev":"80-3542961baeb1f35c05331816700069b8","name":"mpregular","dist-tags":{"latest":"0.3.1","beta":"0.0.39-beta.3","next":"0.2.0-next.0","pre":"0.2.0-0"},"versions":{"0.0.1":{"name":"mpregular","version":"0.0.1","author":{"name":"leeluolee"},"description":"<a href=\"http://regularjs.github.io\">   ![regularjs](http://regularjs.github.io/image/regular-icon-100.png) </a>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"0e2538682f8d8864febdc8080366cf0001607877","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-uP1yTpqorZNdqCIOol4BPy6bJAaFrJb2zI9HKC/Jiw5/wFzfVF98insdY3DFOWtLRUp12znD1NMnnDJlqsJaXA==","shasum":"7ce5ad2e836e6dd5052d6ae61bab6dd16e4005ad","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.1.tgz","fileCount":52,"unpackedSize":584392,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3bo2CRA9TVsSAnZWagAAK9gP/2BU2zU9/cBnFCAfTE2S\nDzNmOD0RqX8dXiZ2nD2DHl6m9auuuQgT6DCLqstSmllM6HeXULj1A3lrM5xK\n+ykvTTKeoJxBDtIhN/iav1JiThi7KemrcNVIOTweBalv9+cotpkMp7fIV4bH\nR+1aokqwp1gcQDeuCQ+UESng9BheAosRdAL5bkSOHpEsTa7RGTvshOvT7jAZ\n6oTzTaT4XBJCspZu50F4ZvjgmKjqWu4yULuf8+HZ+oHtbxYlzuV+AbIfOHuY\nL98C0LHeD07TbOm897z4cRRYmlBpInLjIvK0gZqBaaxPEeHq07SBNrqPnkc0\n3TycHQTWdtJ5sb/2l6FFqkVLvlQf0rAi3gfXTveWclecLxRfMaqDwSgBouhy\n+Rl2LlFjCbQBLaBVgLpAGzjIGRkz6ghNY+ytBHwODXb0L3xoeUVgf3ROCqAr\nK6U4SF8AxucMm3HnNsc93FaERG5GzTMopQu3LDPdqiBjMErwg0JVHZvCLPss\n1kDQl5KKKGp0rGwwQBTqBTCsL2Y5KTdMndnGyOLRBmYAnO9IOcy4DgY/nc9Z\nEisbQXJwerHpsZTVKItROdLJfAvY/VvzKGR89cXUDxnFS0ATNXrRCqHBKjf2\nBXyYawp1wyLKdzoE/uCYTgDgkxQiEvsTcpTcVSTf5P9gycAK7YQcGX2cFm31\nDmUK\r\n=jfjo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID4HpebFkcd5wU4GXOlEVj1keDuV3zR95IIdAz4InEGpAiBqyDaruKkJRJodddD1yhIvlh30aI5JZNtqbqYopwnTxw=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.1_1524480565523_0.3800210165669544"},"_hasShrinkwrap":false},"0.0.2":{"name":"mpregular","version":"0.0.2","author":{"name":"leeluolee"},"description":"<a href=\"http://regularjs.github.io\">   ![regularjs](http://regularjs.github.io/image/regular-icon-100.png) </a>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"39fb9782d5548e249653dcebc5a74dfe7aafb99f","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-nf6IWw6CeJiJuxFkaoYxGRFhv00K8j1OZKqq7FGRDIizrpS4pwzlqhA/28LAAJjIJFgzqRhEIy5y7P34xsT6xQ==","shasum":"c6ed7fb401dfd550e76d0c755bca82127e5d8380","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.2.tgz","fileCount":52,"unpackedSize":586492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4BkSCRA9TVsSAnZWagAA1mQP/jktd0orlyC28XgJIdS9\n5iaIQXpWWKZ6YZtoc/dm3ZuksLqX4OCD7FW1SmAZHq1vLiSIlqvz3AC0aEEa\nRn0/zU3yRkPvqj7qxyc1QC2a2mMWNRq8NiSEMT/t8ul/sSU2YKGnM88vHNLo\nL0UeCdEqEu4PucVlxmr3Cc4cwtxdISX2vFxMZSpEgvALCRmksgvtM8HmX8tJ\nQ9i06VtBD3eQqUF6C0tQmyVZ6hUuwLW6CgveNWC1732UfQ4eB6THAhfb1cVp\nItIOwye18dG5/BvY8f7b3iEns56A1Xv2QkaHTDTpiC8Vnzvz2g746yP9x9DM\n8NECUhR3yvFZRSX5uH6gaiYrw6k2a6QmidR3rYBHIIpZlnHgnzt27ec4EoWu\npNmBAKAAZ3DhV8as9LA5djqOvxofd5bgVF+MoqekjftGfIVukvoq9R9ZcZxL\nSBDJV/aSYmTi8I/wANbWLCz4LAWze9K005MXTWp2GrFcHNh5cmgfbPLwE6Fc\nhp8AmODrI1JMDbACvCAMJlN4dB3Ji7G01ptGIh/VjhjObaqXd+VV0aE8/gYD\nXd69kYBZGqYVVMej1WBjxecP6OR5/n0KG20Uz6AEeht9NT5cVCVT8eHUQshC\n78a2VjTm3rioMhSbDvZFOilhomKA0CcinT4+waxfWaJHvpLMNDp20JhJ8M/a\nAqr6\r\n=Uu1W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQ0pndWs0S2f2XgD6lM5TbomU/HGaxkye+DUhZFu4j0AiB6u1WLNZkNwXsF/wB0xloz75TuT7LucVdvi3+g7ChSRA=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.2_1524635921447_0.12223149707472403"},"_hasShrinkwrap":false},"0.0.3":{"name":"mpregular","version":"0.0.3","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"6d904fc0b5f0d89a9f842e0ad8738335bb43421f","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-XjtJvSa7Ygg55L4z58M3W5xZJGZmqBbUhv5nnt7XZnOvXcTesTTXtY8WQuB5xnn2yN6OBdJKQ4M0iIhVQyiBSg==","shasum":"412c6e50b4d55e026065064d5a7d0c35a0fd9b87","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.3.tgz","fileCount":52,"unpackedSize":582576,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+WMNCRA9TVsSAnZWagAAVSYP/jMKLqE1VmIz968W3/VL\n+5oCa2kTVxWKTfj5jepo67k0GQ+5h8xIi/APNR3ZiS9Gd2hf81IopVp6EKF+\nlzfh5/PIHL2PxCOVDsuKKlMOZ0GGaxEvnDbVNhj8vf+dlzfQavGK4lCRupsM\nyc0H7UpFVM1IHXIMib9Bnnf2ACagSv0hNfhwJgWyK9aAPrntnFu0nbube6N2\nDohu9JZQoAlQB0skaisQktlhptN0OQ7qmDN12RfJAKUbWnfu4QvlY9QZg88t\nxTR+8Jr3EUhVDfWrTEGVLVQA4tb5cP8wlZTCCzh89yzuS9sxUZAmVzH6w4ys\nBBpJlIkyAutebGAqXu1p8AhztNWtBy8W2E3JhhaFRpG/vgRV3P7y4EFNcWZX\nKJODrbT757MauW0s4IwUL1rU8WdeIAcViDq60EZ9pXCqoyOG52gO9hxOU7RC\ngk36dl9YkG+lrBXiQ+j8J9RDjrIr7SlYm81sGrMgkD6QxbMeV7Sky2x5esH8\n76spWYuVFQetPQQcXgfBKeRuL3sMEJcOIxOgLPHu4LMtph8YiIKRWiHn9O3F\nzorCDZAQtenVRhDbUArBfimm3/+V8sE4nCt8bKkzhCQs37bxAD6oP5k4qvyd\nLMorKzsr8uTGNP88tkp+qCvK6hPCwS579UEe+bixhgz/TtFZ2X73a0g6+Cv9\nD6Pw\r\n=BBo6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVRNdYCjwESqdrQib17zpK5RqW6KRF5/KtBFxOTBUQxgIgXM8urFFaTdM1ifk8zSEYT2x/jtbQmX9x1hbnZbQTvh4="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.3_1526293260899_0.022000658451735156"},"_hasShrinkwrap":false},"0.0.4":{"name":"mpregular","version":"0.0.4","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"d6ab61bccb6782d202e5bb8517960cbfca08b273","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-8VwgS0E9JXZqfqlGTCndB4vg2XvKP0MnxlzQqL+jv3FZvVu2oLPYNOrFHD5qwP/WiuLS+JumyHOg49ebCA5KQA==","shasum":"5761b0c498885c1e175bd318a953fb1d52a27807","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.4.tgz","fileCount":52,"unpackedSize":582611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa+tKJCRA9TVsSAnZWagAAjdEQAJ95uF5mZdbFDcHwMVtE\nyHB7ESskRae/smXjHm4tmRw3XbhL6j7oq71KjiilIjYLT406IJnK2PHTlfnO\nb7Bg6QQGM3jj8E/kJXcLngi/d5VMprwAJF+WzZwpHAfr9a8f2MQYCCQPsj5t\nObU2bxx8FBc0actqrA3cQ1QDY6NnwbwPx8+3R+ArtOfrX3up62G+Rt13RA6Q\n5RTWsB6EhhUxjSLhW5S6jo2D/elLg6wiKTY8Aw5auiK9VId9FeMEc49AZHjV\ngailyCSpiJFl4jCAi6jYM88BezSNHqZkkIyds8K3WUD9FiPSdfOzhGJEMiKp\ncXztMxKcszK4GA/Th/kb7iRc2k68oNTiNoA4lfhPlZr50/g5pzcM883YyOoE\nrbfyssU1D5l31gd8La8s7ZvaLDY2jNJXnEnicJXbCDFPz0ubFc7ijtLML4x5\nzb8GTyxdhJH8HOY3yqGx+F2byka/WeclzMgSzyPygL66PkJNAQnOqdDyqh70\n8M6pgtykPlbewOlH0yGUJUPuT0LgYJQP3k0To0Y33PyupLdl1uDkP0x/2EdW\n0A0rhG4aCMHBm93K4apW0cNo4mKCMX/vvVQzk8FHabQc0gl0g4uxTq8/P4L9\nfL5xVPNypEsBUK0HP3GOZ4vDb8oRjwwP1dNeLWD5uCRTmGTHZ+Bw7V0fzOFR\nLI9J\r\n=lZFs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEgqZyRo3w1HcGgFOOv/VK+Y/tRI2oLlqEyjRODW6bs0AiEAhX32fdKitGjjzvloGv0aox93O9G8Lf7hAJTZwKCEf8w="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.4_1526387336069_0.24195842485819496"},"_hasShrinkwrap":false},"0.0.5":{"name":"mpregular","version":"0.0.5","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"90936b2ff8648b015e6e0c1b2adf7d3704d9ff60","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-++iNiuWBhJKklZeDh9zNlZU/A6uBXeXyL81UlJQKPc/lKceuYmy3qqfZGwSz3wYhQaH3k9INIdx02UFBADlVYA==","shasum":"f10b3fcc18687432ccc15bffbbc401587ea558a9","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.5.tgz","fileCount":52,"unpackedSize":582540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa/BuwCRA9TVsSAnZWagAAz/AP+QFxl7nSOjvRY92mNebn\nZT0fGO8Py3ZLUiG4tpAcn2JftCZsLvvZGHjQovbbwSUX3UeQwZWrLcO7MAzu\nOLg8ejy9dtScoFTj/cXxIf8+1FGkCI0bF8R3CPMkM41ZIkjPdltEFy1h+vKg\ngquxzqh3WZbBtKKXF2/ghJLOnQb3wY8MbdcShdXqpA7gWMP/VMWsrkB+1pm8\nLClW+IbnQuDeKLgTTRQyiQXaeNYsYlMs5offisNHK2ea3UGi4QGwgqfDrLV8\n5N7EnPqRU0zWyCLFJqFo6Bimq1PP01iy4LH+S1xnGoORCinIZNbMRjuJBO64\nU3TG3Fwjf+b+G3d+blD7gOoujKeAU0I8GrsJPaLLg6uGrQdWkxiIiziKHJ+5\nenajV/b8V2FMGWW5mjVcD2TVIvtny5vekvCbqZNshErWq/RBDxGre6XO6xlz\n4rY/2N10r8bA6wxHjd3ZH5FDdcfgm3cWAe+uAWljY3xDx+kzh1q4LO44EEDi\nxq6HisOw0SuQeye8WrNeM+4N6XX3A//4Q7jR7ti3tIxUHC7q7TtQsPKeVpPU\nSnlsyyTAOMh88kQNudu1i2mapSdZ23JSXk41AjnOtSywUkz5jgGL6RlBipJd\nIEMoxTsnqEC8fm3dZQqUW/G4ImCx5H23zF7hYTQSxg6wRKQYOIK6MxNvfLsW\ncr3R\r\n=ea2k\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCcMhIzH202MsCuPhAzOOgSvlhS3OHMLaxyeBVPN6tPCwIhAM4gdqGvScs87AOz9/79j/+WYm9/iS92Id39X5ZMT+vk"}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.5_1526471599702_0.41149004603923145"},"_hasShrinkwrap":false},"0.0.6":{"name":"mpregular","version":"0.0.6","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"9c35c45c40c4a70c05b4327454e8cd9d1112eb65","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-MbE1yks5xHpeQ1CPhWNk4CqsCjdvw05zGbPe9/+Rzgjr80yeJapIjFqKnnvTQHCoILvcdoX8FImf3Liv6FI1PQ==","shasum":"1b50cafca0a54a198c375030f24a18b252ad15b9","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.6.tgz","fileCount":60,"unpackedSize":937826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbATGoCRA9TVsSAnZWagAA6nsP/0pEYKn6BArVtGHLiwQd\n80p7ZTev/QZEOB8WRtdbfSJbmrQlFx42WYIocTebsAuR9knXeWp5DTwVl5jy\nRTge5lXEmL726dCviO2ooOBa30O2g//0XXrSmZu4fBDtxz/WeIZ1L6mieBOm\nHEDveSWn0Ur35/p89B5gPYkFWi6oClU6RcJwsrsre9/1JeLtND5EO8Zt1lF6\nFPsmURofV6UEi3K3Lb55j92qqkqGTGaWCTQSctDPjxJiJFacVJatQf2TIY1w\nqxkQaM8nQP3dvR5n5TXqsfxaGYXtx95x3dFB0N4iwcvWeYrD4DijFWUFv4Ug\n3hIkji+il7Ue1nPfJ9ffMaLiaT+rCahnLFj2DgEIQLgXiKOJmonVlbyoTSdM\nZtuKK1ubHyXEzghCHvkH5SfYOx6JR+Fflp1c/ZYsmiiZgB8XDMUXqc2gNVcF\n0BJJ2gICFlNFE31Z5WkamYDT5hdZMr74xskOeuIunoo2BP1KCmYq27No70CQ\n5ebZRzOZ/oPBYqO+Kp/Mv62xOf57QfPGN5K8qjSUPAZAHPKW22PIIqNdJrSO\n6Ojo98D3nfZeW/aW5ovm9ukFbZJ1iIHGNqVW6ra2gv5gKUTU4NPAQYqsKceB\nwavZbZBTk2M9xWnpQ0L/GnYSOO5TdBUuaSa9/FuRjduA0bzVLgEQ6bw79NZf\nFotL\r\n=rlb6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6nFvhzk5Zpclh1h3SwMVp7tR1ZeqMP7l/BrbjE3hNeAiEA22tcbvHDOZ9VhJcuijxqCK/JdjfyRz1Ffv6pLKRYhKA="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.6_1526804903171_0.8505554035830856"},"_hasShrinkwrap":false},"0.0.7":{"name":"mpregular","version":"0.0.7","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"60439883a1ba473d78727c9685f0aceee6df3ad6","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.7","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-ykOWADSAhpqTAfjOCvWLbXQpMeIRq4hBoY6B9kN8rzinhgmkVPvrelbjl3N2tAXxBEsgWwyEVWOXiAoOaeB5ZQ==","shasum":"1c973c53836bcc915b03b8b6f7e05bec93c464f4","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.7.tgz","fileCount":61,"unpackedSize":940535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbAljLCRA9TVsSAnZWagAA4ysP/i21ixiY+I1qg75t1aV+\nFYfmbaiIvnBhhCYlSoa1RNBbjenaP2bYp+TYtFYYHyYWihGAlax0MOoB+/jd\nXe+Mf9jfXDOCKeFIxYcTEBglTCQyJW1Op5D3l17qSLA7K3BM0WWtTJ2sdSOE\nyc/XsbtBlXyeNKS8ZAOGU6vi/nQg+BOqZGFkT49ccrNDXV8FNXtsN6AzwPFT\n9bVBgRpjPoT+6MZiJjmWIcqSNSSVUHimH57LFiMb6o2+2ElsmPCYBdDQsNIk\nBhFUJem4hAQFlz17gZItWLbI0/I7MsIQtI2SGnAI/aOwacjduBYIEYc78Ftt\nQOMT2AqyrcfG2Fpl7ENfVwlyjaRK1e61/VJtunU6JNfdydPy6XmENNeswJP9\ndavfqwLmIrMPmqr8RmfMnzo09AePJcKcdtx25HJuQ6G5unpPiPvqpjq3aY02\nX20rxk8c8pf6RxaXhmNuw5kXBFa2iCi7XhnB4haRakK11KbKJ0MZKqJLEHIc\nPFLplvFoIiAk4TpiHvDR9POySR8lV9fOpT3cSS3SxOtB9eM0dpZp4AJfypUC\ngPIuedvA8pbDJNX4hER3FGTxwfH8p/fXsRDW9s469dUPDhJ8WR/FSKuTm3K8\nwOedZfx0bIk8mE6E4Xmwij6nV2jYkp/dQ0D44kTFKp8/ykpVMeAdjUSP+XP+\n7KVL\r\n=/HeD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGwZDaM20mZsSkTjYbNYT4tEDcCPo69ZA7lc2nAhEOY1AiAcb/rwIS5DIgVnugivsfucHUWo5kIm9iY6pvhUqnwJCw=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.7_1526880459134_0.7788332844563628"},"_hasShrinkwrap":false},"0.0.8":{"name":"mpregular","version":"0.0.8","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"683d77f2830d8dc1662579bdd852a9aaa944c5da","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.8","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-wnYmoIxF5OE2StXfQ4WQl7yiYNeGMmRvBKn7P7ZdI51Nnf8z21mfV5kxH663cT/Ktvinrczqsg41vslP1Z56+w==","shasum":"55251e1c60931d1c075df527019b701c4048bfa7","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.8.tgz","fileCount":61,"unpackedSize":940749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBOd+CRA9TVsSAnZWagAAzGAQAI7PHwx4nBHjlrogBOlo\nNmzcIPenkr0LmaX33Cet2y9MAi3jMT+1w1bPmZDEVOekJVJ9GYxTeDjHNsy4\nJgiTMr2FxfA3oSf+TuHtCRthmZrtebTxl47PXJQyNNaFyyw1SIBEQyOCInvv\nvYe376Ct23sEKCcG1xWdBu+NUA0mg11Fr3+kqNdXml5hS7iZmdp51ujL0lcZ\nKGf0GhMyUjoCx3UBq8kONFEj1ZU+Ni/C6IZKda7GH5J7y3Pwh33xqkN7BmW3\nWPSkr1SCJM/zvk+Nosr3b50ayGw5zGhhNrNfvX0lXe5xL2qjOFlAznQGbAUb\n5JkPRQ7IEUDf0Y8pA4cisgnMWSScm44KI5ABkdHWIcNIk83DSkitAfZqEaDj\nINj8gRzX9k7ViJIZF3TaIHDQR+3KIashFIz9DGwPAcWbJ7jKJOnfn+/bRkvC\nfEY0OQUVWkRAbZO5HYcgS/xVfa/NYR9symFHdoYDr3uGxgszzlzKioJx/DWG\n5oI1MxxwAgopAosnmRqsgfF4deCeS5/lip+p0UzE9vpjq5JPufPp58jMrPCL\naQiC/84PusYga8GEuBo3Sq5T5BcdAj/p++x3x8B/DDkyRuTyBTTc0Pu8wKPQ\ncJ34QH5Lap1pVWLjStrWbxY0/XRBjboE9o+djqQeK2WHqMW+BjC3WT3EpRBs\n/Cel\r\n=zWxs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH6g6x+G1t5CeZ2PoML0C3FlmOC8x9T8G6F8mehWknIwAiEAxLvFS43grM0p3l3hmv9dbB6E/9cQ+e4CSd7T8EkOjZo="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.8_1527048061656_0.03994002305554334"},"_hasShrinkwrap":false},"0.0.9":{"name":"mpregular","version":"0.0.9","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"29dda44ff4c529e4800b036ca2dab4f80614d973","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.9","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-Y5tNPPIhPPuvZsicUuHMV7rx3e6dKDXPw9SSnxubADQW4AlmFFjAUVArKLEvn9u/pck2XWNrBA0CF5TcRFNTvA==","shasum":"45cefcad317110fc203b6f134a66b61b368af011","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.9.tgz","fileCount":61,"unpackedSize":940779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBSSHCRA9TVsSAnZWagAAqLQP+gIv88Ap8XHrbDC2hnrK\nt0bzgeR4QuopHSXoV1no90eFYTXrcJpNiyT8e6Za8sSAybPwj9qfIecIMw2+\nlN3KZfz7/Ux1FrsAatFxcKHglV7HKHzq0xLcee8Pr7Z78VgxNx34ba0bQmgX\nhfnckdoOgirhqm1Juv8KcY8jaOrskr78CZ8bsW7Y92QFmL1o4q/XKrxZNooS\nUjTTQykBzaWyrlWqYcpj0p1FIIoIotDBQgQhYCpmEKavPIhV/hLkcJiXAHRr\nxEui+Y0jyKcuemVQ8KyPXBDVUFSoU3QQM6JcOSEevXE5f78DXn0XUpFIz4Hw\nKG4v1wSbhN6ePOqVfL+IDTjF0q6K+n1ou8aO7Losct/aYG4HwfbBXwkw+znR\nBmDfKNW+Zts0Q95gogY+bMtANvNVqLE3AqEBvAMIKeFmLqdiKa5kdk7q7whc\nFOZnLk5MJW0wknMTupwA2HyzPid4iwzs+1/BSymlHH1MuKidSXTuHWYrxVym\nGQhKnDhmx7qi9jU1DIjLiz1iftr1gyapOhCS08OtIlctX/M+6iwwX5yEIl6p\nfv96BD2Sl0nJeRFnStMvV1GhLGifp7aR2DYRizEKp4FEcaLM+Tsgp2d2/wW7\n9PoG8+BxdXBqwDPwk7zh8a//R2T4RMmq0K/oKBesb++6tNqmlyNQCB0RWa7v\nVSkD\r\n=BOO1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB7GHMySvP6n8+9nZMglDiYWGHC6Ng/VuDpKtorkKLHvAiAzEpE3jkZEnRo8chrL95+4NZdMw/lm7CXEIz/D0cMtpg=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.9_1527063686945_0.15668184427909582"},"_hasShrinkwrap":false},"0.0.10":{"name":"mpregular","version":"0.0.10","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"9593e140239cef94b69bd3e3964faa9dc7c8387c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.10","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-YvHgV61/4BOz2mJURHhcjm3QJXGWJT5OM1WkeMTeFT/qMdVF5vE9QkxaEqNZBA7WtT3FFSkNgEKsrbGoERETSA==","shasum":"9fe33e5a02623264857a3ded56910d79dd3c90f0","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.10.tgz","fileCount":61,"unpackedSize":940662,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBTCaCRA9TVsSAnZWagAA9eEP/RzlYXwuss5WI/7I+Qin\n+p4OBpemlestojaJbchS8DRnIHnMv4JwkQ5V7AhPwcIq3+ymnwXpqtIElHoS\nvyrXZpEWiWBLlDrJ5Q6iBGw7QTkMN1JrRdfGRyDGbAGuxvP8/V+fn/YmJQ2u\nK1m7j9xy7yzGvdwXifml0j9XekgT6x9CzzqVG2I8xK85THbr3W5FKTVVi6fu\nM1523ZHa+VT4la7iAo8cjxl9VlE+sSAejT230MUxsYeJdz+nvK4Z0SCfNFdd\nW4BGaK8gluRfbxxS399uGxwmu48TkOZ2fNBQ0ZAktRm9m9oOJLXTrgORV90c\nif9Pa7Zu0af4Gfr5DU1tH6zWZ7HYbj4W34tmqkCdbwUqz7wb2qbLoc3zJGq8\nPDhMTCnVT/L6r5PQymUlijx+usZNMlMMp23xctr1qk/hwZsfyqO35LOiufD1\nLh5X1nckXT7mqBCRnkKBB+AFYZgBMpjl++rEQzBhH0JI2PaOtWmxQXPts1ym\njtIwVXERdwCCKHj2uG2BZI3pi65xeP62f8cvmiw/XIvAQXIm+2AdvmWxyRkp\nKV7edgLqbRGVXMBvFj7qDJa7MGJrpnQPl5X6j7I+4t8XB/SXjhMpTU+i9MIL\nTRmWRFw4VHgsp6/+cRHxN5H1oMFtwWbmRXw8MFLdU4Ef/q04R4iEc0nhK5j7\nUZZM\r\n=8jp/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGnfrN2QYcIvKDtn9q8jrXuKdp9VBgCKdaAt5HJ+IZQ2AiAhsD17DxWu3cHU6BafOYqSMYlm5uR3YnJf1yPO9HV3fA=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.10_1527066778121_0.9639479432480054"},"_hasShrinkwrap":false},"0.0.11":{"name":"mpregular","version":"0.0.11","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"9593e140239cef94b69bd3e3964faa9dc7c8387c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.11","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-RWVdsPKUtCdQ6gusZwUtwldsBABg2Iznt6XVGdsjkJmsfhtsIQ12umODRs8vKkjmdd2lp8nIRM7eHhiaghpiBg==","shasum":"c88d820026465aa303d3310d4c018300c4bcd80a","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.11.tgz","fileCount":63,"unpackedSize":940918,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBsFdCRA9TVsSAnZWagAAVXwP/3DH8p0AmAacoOysAuB0\nc8YVAQCCLjXvGazGVNgBs/0kB4I7o2o31weHoC8gsMfvlwGVyCR0TUUNQi4H\naId52ib2Jwv1zjFGMvDCcjHl/QvW/dBrkxyutUMII4wpDJ/okQ1GnUTOcPvB\nhT2Fv0yjIlh9qanwUmpX3X1xtS7ZWs8BRp0eoLs/b0baLYXsSjniKVxfSJd5\nqcI4yPiDjFev2D8HFHJyLyoWygeAy/Do70xvH58SYWlXHcMawLhPaYxGFb4O\nZdxh6qFbIdnI/3vpQMDOhJWzVqxkM6FlDP8gf1euEHe2nb3z1/E/Bp1w6QjV\ncsuhL8KLyyCjnq2O0nD5RKj2JGeCtU/MKIZtv4gbMAKLiR2Y6nbL3idEsT8D\nna3nDbPr3W/He0MkKB2dhgDPpZW8qxTcs7CCqgYQQHT0E9S0ylk823q+9X5s\nBX9d1IkzTWMfIJAeEv6aTDY07zsPvSo4pv0csMsFlVWtTOeVRak2G5bTVK/k\n8ePLBR5lbgeoOssiFwbtQaa1WRLsp0/caYV0mT7V92rT9HG59+y1e7lpmjXJ\nsxQtdBWhhqVfSpXnQX9ITGop7fpWhI/lDVysFtaEQRo4jnEz4t2a74Fwe8+8\nFMDAJmli8ldQWBd4v8UGi9eiPdwGNo+Wf1VmVKqfjGB1UoXKoXmIipcXa7Zz\nviiv\r\n=9hh9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5SThj5KkCG9Mg3nX4evxbKsPhb3UpHNxY1G5eq012ygIgSE4ZLbBNGG0SazfS9YWuOyltoLEfwqusjH3helBo5zw="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.11_1527169372480_0.8857117223857192"},"_hasShrinkwrap":false},"0.0.12":{"name":"mpregular","version":"0.0.12","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"12bc4204ea366a3493c08217b91e0b20d6648f73","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.12","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-X+58250QGVn6/nC3CKmpPU/QqpKCpZuJN4X4KsABFMBIwSB7tmFHRPGKkH4YN2M1Fya69RLhPMizyONF633rNQ==","shasum":"1273143d611ebb0fe86fb1158725170dc2a15421","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.12.tgz","fileCount":61,"unpackedSize":940972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbBtIfCRA9TVsSAnZWagAAPmAP/3lJY7SIydGsXKmzoPhS\nQT53u7bOZ35XFaxbMZbkVPXgERkHiSvUWn1M6/9tkSSySZt/8sf301b689Xy\nKmw5Y/9W3cNN/upFM0ihTrge2was2ElDGJZyxYoVEC+6m1R5CbI0yis7X9Gs\nZgHq+oyx2MoltGhO9EU4F+z4tr8HmUkOYwGOMJfZa8lDRbxd6Kdr20G9NGIw\nmw6YR73SZ3Se14mJ5uyy+Hx8IPxwYCPwTxzVn0e24366jDIJ5JLoGeciT4P0\nnSLgS3UsJS9I3/V5+W5NxFMXrbNUruYWCpznjLSitA2oHZhXoGvI3R/pz3xl\nEGtonmUMtzqqHnqhlPR4L+v18ZgPieXc9kbMwBs+OdlFuiX+U8BtiB1wsMWB\nu6SOpqi1d9Qx6l989yvvpuAC/cdj1t3JnQ6j46Qj9q5HvfVvt8sNOvnFgpQr\nEybJskjXCpyDuxXWZAVnwrvHM/oNTZqSvteVZhCH5+29sw2cXZI2KDWR52ET\n8HXusSe9U9HWyOS96J3WgSnPyfnWmJsR4ddnXjRh3uXjRoXTA0oEAK8ASAHd\nGYQLtN3U2ehiTwDn0teETpvKOLKNkINHH1UP6+2bVDVDpWt6qZ1U5Bgq/oCs\npRO8YvulLwTjlOxmWtPlOFtXI7GANGmtJbw7UXQmiU/hcw6ecw2yiZ3av9Kl\nmUBl\r\n=BPtR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFA5LNCgDJL6RHBuyBvzrDCISywGmk+5bCIss8zvGoXwAiA0d+5CBZEjFeKSfo3OmZw5qE8cbsNtbId2qoJM7jWTOQ=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.12_1527173663205_0.017616006723513156"},"_hasShrinkwrap":false},"0.0.13":{"name":"mpregular","version":"0.0.13","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"fd374c9fbfc2c1758d2edfaa5f79335bde0b8692","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.13","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-8JhiufB5933F3guX5zdcAXWGa0RS/ju5kHB5qT3aJCYLsB1VMeNBJmYRkavwqw1WNIPkBe6bdV+at9NryCLENA==","shasum":"95e62f82c9e70172286892088e9b933275993e92","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.13.tgz","fileCount":61,"unpackedSize":796616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCS9HCRA9TVsSAnZWagAASzYP/3t0Xb5jRM2741sPpnJB\nmDkCMKAxa9DUGvcKHwzkzyGK4vh4bdMwuRx2dsPbuKUe+UaynJEnsEf1lXdz\nXMK8KHx66JQCvnrwLeKK9rsOPjPRFjrtmM3xkfaRzeQQ9LNkck4frFgCnkto\nRf2fg0zPGsTxNyk0Nl1hZ8/qFdoGisIu8kGsqnS0wecFg3QxHml/ez+00FDe\ncw9UdRXQastnqG+pTplOuwW/5Wi7nSUMT0npiMIOLgDtfIs7BixB8RYDeZkl\nTNTkrZR5iHrgO9AwgOqvTQ2z4MIkfs0AVGe/fRh0XXiz1SEwbFct7IV16S5O\nCu54VkF/EnXeGY3Nug5h2iwxAb0UqMyPA8pYw/gkz3mHWbm/OFpGyvjpQdu2\nEmENSj3cwMiB9kZe6C7/i74MGaNvapzezkckI7aaq2ztT54RbOfR52BeUCRA\nfCzuYHBGY2xcg2DAMc4Apll6DfUToDmrSedt1Ecdvxl7KSqZd8B0rctlpQRb\nCnD9lKFhTWaA7p13IitbSUCtSgDCZzUG+zgvsBciJeHSsokbGfB1xid/2mDV\nFDlWzDU2KLK+qfA9dWSXmGuj6HExWKxTnVi9KgdtPNPSoqCap5rZQvt1hyh/\n2cCsfjVbh0eFcM0krQ+EQMLgfO8QEG0F99AvNX96DFU48yAgIPpwVtXrffJd\nYG+7\r\n=vPeX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3wI7MyibmR2SH0sCQdgHB9+nUHH7Hxg8CLWaiIO/UsAIgGQyoAcbP0ijg/JQ2/q8smi19m6sv4bBcvLo1u/7XKRw="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.13_1527328581972_0.880940702054152"},"_hasShrinkwrap":false},"0.0.14":{"name":"mpregular","version":"0.0.14","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"6a3c30ebfd60d68a2766d98c7785e15c5f7ef04e","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.14","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-HHCwa03yNJ2QQysmxU0YCC7uWMe/nj2eo2pGhDOmDVDWY+hE5mlGHjamxJSmqkuYoN5PeYg5xzbY1vrWbYqz6Q==","shasum":"ead672fae899c84f6a897dcea3474b5b61856422","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.14.tgz","fileCount":61,"unpackedSize":796652,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCT2yCRA9TVsSAnZWagAAH9YP/3RDv4xHUDlTILpRXG/0\n1Gp8lHmyWc3rxBnlcaL8OPy6gS2SP84obFybQHrx9PaooSyHLmzMm77WTQex\nk7du+raCCCFpoI9QivsxKAuYsWCdHS+3uXBcU+dgyNFCopWeZXZXoRKbqFgm\nIwb7YY40yTB5V+T5GXPcQCNpu/CoY0NQnQZ4nIKoAzY1ri2aZ5F/CrwZ/KQa\nsxrabwrtfJlNWw3z6agQbiIs63VxM/EicpN6eTk2mqd7Ak+3/RVHTyuR4elf\nZ+u/6uLOHwJzj0oN5ueXJ7rLxP0FYpfqeZcG9FqyTvKLlMXCZbbfD4Wwa85J\nwyknPNu/PIVpRWDghHvFLA6PF0UW8A/sGYhUxY6q22Mapmt3WME3gQCaOwDQ\n4dSYxujdaFYD712//MyTOYDaYWGAJ8P7POI3HAVzZWlHF2PshW05kWKLqEWd\nE682dXpRLUXb7fQAY/aCWj3jSqmxOVPwXu30G5MeMMjm5Vew4NM90zGATxZj\n7kWE9mQlDKTsocGEdmssjRstN+vwpZLD/q+W0RERnKeJD7LaUhAKji1FQgLp\nX0ui//+2Z5rUqG/IB2CJ3kPi35oSnYqynB+46w3Lqs4G9EOK/HQ8mOJ1RZOx\njE8V63w5x32LZf8DZoJd5FeMYA63KEXhuQQM+7jP+0Z3yiP6eTNpJwGT59GD\n1hvJ\r\n=oeSo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGT0ALiAgJLgovz3IK/fpa6DleK3m1tIlZjeSZ+NBghOAiEAnCRGhqVmOJUmoTmiXLSbcdepxVBqpiA88jzc0bo1AGA="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.14_1527332274025_0.021884112785403476"},"_hasShrinkwrap":false},"0.0.15":{"name":"mpregular","version":"0.0.15","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"e4cc248adc26b7ebee0c7ea6f2ec5feb10400aec","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.15","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-ZMJD51UdqK0Ch5bOOWNanf4RTdePQFpV9F9z+FQjrTbcValILJq6nMmk7FjGrXoMWag+tdpldzbGOsVKTiQyVw==","shasum":"442e7b6278969a124d50c4cb9b2315f932dc4a6b","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.15.tgz","fileCount":61,"unpackedSize":754078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbCUpTCRA9TVsSAnZWagAA3CAP/A6Xft/AUZCHvmR5FGAM\ngT4U1W4HkueI4GNxWpqRqtnJ44vZU0mr+XRcAggHl+HKIYxCYQEIeTfwa/d6\nuOJoTZGrcDlsdcVgzmhqAJfk6VpsaSrvXKFiW8rtfWMFpRB5yTSnEC2wSoDA\n10ntftwWo1Q4oPC/7d8po/ebp57W1ELedqp0QTAx46M4nEUWLaXzPB4ckoZw\ntu0kmpTcp+1dTJC/lxS4so2PYcvPm5tXd6ZqDPFQjiPq8mpT9l4IxvNjiMyb\nAjUxZK6P3Rxiif+8Zftqc0+h8v2/9n50N1eRA9ILbbS44kd8ixa6AFkfHjau\n2rFq05uO692m8Sl7pUkP9GDhIHQQCZ/5oEI/6ZLVQzBUjJPPCBzm6WDg4LBa\nSKFlY/VBMeLNnRBzwPoqLsHD0G1sZ3dPUTa1GrMy5ssmIShrMC4arE95pOJM\nwRSH8WSQhILpRYvNqoaydNHj/16l/KqydQP5RtjqRYYy6oPjZoOjQtreHV/S\nOv5KMMCYJTYahR/H58cXMTlAiuoEXKDnUm9964veQTwHbVT/4qzPDpxo6cOR\noY1DmTythtx7i1BjiDtLZEEGy+YVqPCMRdNfeyrTuRuYf7HY3gLVV+yg2T9r\nCT3pHUbb4nIclVS6WrYC/oIGJLFRy2Uz7ZT73i+umIz+ZMIAYcxZW/0b5wT2\n9Sbk\r\n=hhPU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSoEeywCuzs7p60lyj4dtUyKdGKUAaFuBjsR3MrUTkBwIhANc3ZQRvSxK8E/d+t8vHln2/oEhrRSFZEF4N/sr7D6Oh"}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.15_1527335506271_0.5911983437790667"},"_hasShrinkwrap":false},"0.0.16":{"name":"mpregular","version":"0.0.16","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"1068270aec61de04f27d2d2a51b5cea96efc9748","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.16","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-ltYc8RCX6HBDNnIqhse3rGjmlM5r4omOXeVDu/CFo8PWQmHGNLMtXvgqYXpNBhoqmDial5+Eg1yzetTqbRNb+Q==","shasum":"decc85fb8974c217e0d22f1485a8bc581ffc85bc","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.16.tgz","fileCount":61,"unpackedSize":754287,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbC58jCRA9TVsSAnZWagAArYEP/2+IuKhZGA+TYQexHHu4\nY+CMlratsF4fFtCDlY9W0ggRdM4GxlNXkZiQdvqhRcinQFKyYZERZOm7z8Sw\nOm37bnapictFmy9bWQTs5a3JMGoZgKgAmuXpyxlNCSouP9P29p7AUMYUpA3U\n+PlJDwzyuPZYJ9TW184o4oz5mzkIM4EQJj+bVracw+LvNJD1rc6A5v2BaCLZ\nqtW0Rwn825D+tbmvbFHnUxIusGthFMWBrqwoovxtV35ecA9LTXj8g/RRkPrr\nOhpVt8YEspIq+At8FN98bOc2Yq5Cx2V4tv2BOeU1xHsSJUNyBv6s/BDIx4CR\nUMvVQTxyEg85dtBAb57tjEc1AGoXa0PfGPPMTl0P9ekZJfUkirV+jxetrRjA\nriP699XarlFI06iel0Q/hQsEurNLPkTkP85DyPfV1S8N3ZVEZqyVOkUDAwCX\n3w9NvQXf3nbSUlMSokdCdpFyaJiBFv5PlPsbEs4sWQ/T7xi9zxfu2klxzhPe\ndnBIASchKnIllUolBym32Q1hA2r60Ji7cke+kOf/oZ4dXgQ2oOyhFEt7Qlu7\nFFAZQEVQX4j7x4OnE8BvCuHZ1AUxnn3gDc5+SndlMHZa5Dz+s19QgGLP8evm\ng/El+Rzs0DmodWd8xSRwKCQhU+YxLARsIfMZkOF5oNoiDI1HYn8DCuPVt7Ns\nfGTl\r\n=EwiN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgpYxNJs9F/kJn6lio8Xh8XfqYEzIU+gtvuOmQmNUzmAiAfV+E8Ulr/BbjwXzyIxgozZ9U4SxnMRwj5Ezac3Aex9g=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.16_1527488291379_0.7240899171496382"},"_hasShrinkwrap":false},"0.0.17-beta.1":{"name":"mpregular","version":"0.0.17-beta.1","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"1068270aec61de04f27d2d2a51b5cea96efc9748","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.17-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-tWf4R03pjVIJQw+FcbbMSxoVgSr5024zPwgnRRlUAv2ptBOexJCt+K9N+8LRUeMp9ME5WHeHz0YJir4Fe5BUMw==","shasum":"ae3de20e77807b381b4e41a08cb1339256e7d399","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.17-beta.1.tgz","fileCount":61,"unpackedSize":758224,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbC+KOCRA9TVsSAnZWagAAHVAP/i7I2Gq9HMUu5ByMRM2/\nUGMoYCtKeKdlu4n4T3IuDE7lAJQCRB0Yx4p1v9MDhHmyYw7UCiBtOnbK+GQP\nPYdkZcDFKJHbFEQ4dfPvR87U7qI7GCJCTbMItSDsmxtBpvp+pGEq+EdGhYQa\nP8y1cR8tHCmTfpKyb2VCGploAKSvJW8FueEEOku8laODo9zJLjY7/VsRi9uL\n/mfGESsUzLl/+eK9RhxbA+0JWB+spQPD9S84a9WjwF2EoJG6akG0taJDlX8+\nDRTxPmO0Qvy9AtyZJVd9ycX5cXOTkTqPlNK3VVGWmIS2T0V3Q9DS5xQ/bZv1\ncxx8NY7WK7flmDpmZM1A1odxmXpd1i8irF1Vz4K0etWqqCMjYEIjV27r/QtW\npiBPrBOLeDjTb4J78I4jyHVOsS91XjyingsXDucAARZW0++vQsXJkJupi996\n4b+VsEPyP67Cci0Icdzv6t5ck9mJNGO1c4x1aaZgKKDU9A/kbIF1b2DuQ9Qg\nKDvz8Spy6WmLTZbCxCs3xMCMxUKDWiZ2f8LBEryV20NVgiDLBDy/XrsIfKA0\ncw3PXptrqgEOmTOMmBjrz2g8kpKmou3LGfwIUaVysrdeC6bR5LIebzn3fczo\nAwQ8xhnHdoixixVByTwDjqXuxvbxtmVRq5JlKYIi3IslW+MYr6+JITyIaV04\ns8cp\r\n=9cWL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5+xqsPwdhYmpYF+ft4jAGVyiFOouJ/G6PqN4R9wz+UwIgLhuu8tTH5nxR1RurTf3/lUIaTJQTU/DBL/2S3R9SqFc="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.17-beta.1_1527505550033_0.057691793305429284"},"_hasShrinkwrap":false},"0.0.17":{"name":"mpregular","version":"0.0.17","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. onReady\n4. init，regular 页面组件及各个子组件\n5. onShow\n6. onHide\n7. onUnload\n\n## 支持特性\n\n- regular 常用基本语法，`{#if}`、`{#list}`、`{#inc this.$body}`\n- `r-model`\n- `r-hide`\n\n## 暂不支持\n\n- `animation`\n- `filter`\n- `directive`\n- `r-style`\n- `r-class`\n- `r-animation`\n- `r-html`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n","readmeFilename":"README.md","gitHead":"1068270aec61de04f27d2d2a51b5cea96efc9748","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.17","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-Cbdpu4R4NCFPLS3E9WR9aJTgLzrZG23zxqFJbervSTELfbokwalkd7m2YQq0h2ElLykHYLhDn5v1IpRQ6V67zQ==","shasum":"ad9e8ef7e8831236a6e94cbb3c916f05ffb3292a","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.17.tgz","fileCount":61,"unpackedSize":758196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbC+KgCRA9TVsSAnZWagAAL2UP+wRxCMhQs3WpRWyglez8\nPm/hA4nPHdYFBSpAAfMlzovXkRap7OuNXzKfA2yERfF/sHQb1gBMJf07nq9G\nAe6Uh+HybdY0qewg2yamHYKtsaH8aZ3iorlOOE3hdjB7tKPYJwU+s9JJVT7o\nEBmHI4p6+8IMexUD5aIvsXIFi+qWaQsTxKHS6rgdpbGd5mCNuESm9lc/kKmA\ntOzd0v93H3P8S1xIU3CXurNOwvjk6g4MX66C/qLoU2S16Z7p93adIW1VELvd\nMWeb0ipMwK5hjUtY7XBO+YVarYxC+jQZ3xounvvD3N+QXGfLJeJPbpI3n0DZ\nnD1y11s6/OBo4eV0UHj1WY3kgQaJr1oQNCIqKgu8BOWN0y9K1vl26pQnlAhK\nMIvglOH2+piFa2HRMxtjItTYxbNxHng75X+KuB+JNa1gkMMcMQSOHysvFYQQ\nUAmZz1Jq7/ldgdLo+NALq0Lxh/Z+4+9luhsD56FdObQzsZP6YqnYVb43YWIE\ny+gBqCLWZsD1bysf0GvPRd5oIhLUTi+8mgtbkXU3qeebCpfOHHtwu1i6Sp1k\ns0JKKFzVFVpJWKcePk8XBZNBfa1H3wcMnD8v911ZdCcKGHEP1qE2b0s7VcYW\nwVA1hdy81kNPKOSaHLxlFIiu2DMsjVeUp56LTXef63FgPBcwz8QU/d9vbAqO\nQV7w\r\n=Q0mj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBv8W9b6/5Oy5HJhMbRXCf+WEbIKC6Advsl3QQDXFFnHAiAKdFDDjOqemyQVXkkHDlhBNzAMb+LmHdNXqBzSncjgVw=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.17_1527505568027_0.6213428233584737"},"_hasShrinkwrap":false},"0.0.17-beta.2":{"name":"mpregular","version":"0.0.17-beta.2","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. onReady\n4. init，regular 页面组件及各个子组件\n5. onShow\n6. onHide\n7. onUnload\n\n## 支持特性\n\n- regular 常用基本语法，`{#if}`、`{#list}`、`{#inc this.$body}`\n- `r-model`\n- `r-hide`\n\n## 暂不支持\n\n- `animation`\n- `filter`\n- `directive`\n- `r-style`\n- `r-class`\n- `r-animation`\n- `r-html`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n","readmeFilename":"README.md","gitHead":"afe871c88333824bd41abb5fcab740ba9a741c22","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.17-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-FNz0easjbnXsoHh8kJtJXsFndqK2IyBTAJpAA3qv5CmCu2LU1+Gnuyo4Xgfklojfloq7ZfnjUhmUfGKQvxW7Dg==","shasum":"8e5835540155a5efb2dd9a644d1ce35adf37ac74","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.17-beta.2.tgz","fileCount":61,"unpackedSize":756837,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbC/dpCRA9TVsSAnZWagAAgK4P/RsACQjPj/2pQjVASSwU\nWxtiZwFACBITapl1yKWm8k4UVOXAqAPcKoQYJ/pne267i+GAC4jBOldsgdNo\ntH6wA9v470lyCUVh8Bt8hiBcx45zvEX8JuztEY0qvWG2f8YM0xtKe6bn0biG\nXVb6rIjKviRX06UdxgpPeoSQaAfs4eFbYWgqeLuN5uprav3USlNWoUOVfTpf\ncUWBrTC8NjdiXFv7INM3nexeBVFXaX2+0Qkc0aE3xarv031qWUA4opS7eGVD\nWQHRf8smiqQ4CvKLHeHoMkkrsN0R183ZMH9oNjOWfXKMrAFVH6p4hrGeejLB\ntVkOBX99eKIFuvW1+ZA8RYQLJlMUBAMKzS0UaZgxNw1R9xZdwKamnpXjsH2n\nkUvaMRzlT7vhxueQqJ37j2U0VoWlQVcJMrvQkSYhBKx47wJ/KCS2f887TGld\nFg2asZU6FyQNjhaj5xq/0JpoRXo/NNaklwOeninsnQY7oOQa+SkNRBpF9vOO\nxoRFQfpHeMr0PBz8MiP+9DbVBTBxMy/3W7bIHco0XwlAXIM1m9gNPHDfiSr7\n6JUUxUM9sY5odFE5K9ZS5x2oHhiQjc8xv5xraHVJILazCu0LZzqEKfRC9UK/\nPiZprpd+cx+OmlXnSirHpRLLe0I3zjfEb3Rq9ctxVnmbmHQge3yjsrIp5u1O\n3HaA\r\n=0c+7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCT+Mxa+723znzcZgnoULJHWACW6yJxsF6LZjBYOMpLBAIgIwxdzBoy+bSIyDhfY3qwtPl7hdN7a419j+e67yzUJ7w="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.17-beta.2_1527510888492_0.7937070480536774"},"_hasShrinkwrap":false},"0.0.18":{"name":"mpregular","version":"0.0.18","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"afe871c88333824bd41abb5fcab740ba9a741c22","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.18","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-3RK/Wjlxbfm0YVfPUirVVznz+e7Oy9iq///3XZJvW6et4L0EFtuptXGyHpm1/pEnQw1ly6d5GsE8H/pA5dBw3A==","shasum":"08ec24248c9446480ecc5ffeddbd2f61e01690fa","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.18.tgz","fileCount":61,"unpackedSize":756809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDLxsCRA9TVsSAnZWagAARKMQAJ7jC2UXPHHsnqoCyyvL\n0nOCOBemLbavprHhit8/mmqZH/PzBgtqw4Kb/QPzNfYX+cIlzDx4/UVTBm7R\naM1RMxzeSjKtkJz0wp9vvxVJSxckTFi6fMn6rLJ15Ltd6eppUy4WvYPbLRns\nA8NVHpDsKkwkC9MXQjBCoAlIxSh0p+n4sY/XP2PxGpadARlcHaO6TXDtIrff\nqhUKKHQHq7XagFrJQXhR0JBaiX7FXsbpmnoAFy4cPnm/56hBqOi6nMxd/xg6\nXgEEFj4g3xdeIAGCye9upDfgQ3wOk9XPkZ/TyVkS1ieUzBctKmhmK3e8oly1\n7J7N2OA/hF2C2RTk4GXK3J2s7LMYRP3ZoCpvltoP95EkFJYru9loO90SLEVG\nI0/SHuc9CGwFqwrdaOx0rzgWUIz/UwxtRyQa7StTfnwPs4n5nczLJW1KjwYb\nkqWka6WcVbgAf4uKbet/T9NaX8LECGt80qRCeYD8Fmc1/2wmlYv4PfFDchsX\nrrbnU5X1DayqnQqtbEFUSUqaP0/lc+VH19OzOtFXJgPL+9XvA07vun2CP80v\nUD0fhWRvWreO4mdT6BeoUCpXquSQ8f5WExXa/Jhk2hew6WxZ3qZbDCrlZIoZ\nBIeLShq9cROhr0lZVU7D7Mj2iD/K8ru7PbY7hNCoEprA8OmoX3MVsnb1dmcq\nEVbX\r\n=zKQU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFw2WFx0u19ucoMr40F0wlG0Gt6EVUzi7oHeNbGrj+xoAiA0ZWMe2SOADXNHT/fOujnYifk7XA+7t4Bi6wnPDpH6kw=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.18_1527561321964_0.03735543477720227"},"_hasShrinkwrap":false},"0.0.19":{"name":"mpregular","version":"0.0.19","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"34b408145c2135f55c90482264fd48225801c74b","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.19","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-7tfv/rd3tNeMucLHnmhO9m2Q/NYFaBdX9ohXwv7B1u968Uhr9t+dwLPGIgUHjbFsShGq+NDVd9vWCoSFFtZ1cg==","shasum":"3f9b171fe20f9365c941c417585ae91eb7ffd9a1","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.19.tgz","fileCount":61,"unpackedSize":759595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDTJyCRA9TVsSAnZWagAAdYMP/AqcQQOPInZABgpJecnY\nagIahdksqtr6v2mXTk2ZkjhuSrYHLdEij1uVUifmOQJBCYoo+aTZCE8kk3XO\n95+dXcw2qTm1cUoIf6CDpKPxyeC1QWe3KsWh7WJZimhn+m+uet+EGgOjgtfR\nA2v88/Jr9XgQmhM/Sddyje4p9Hqm14TU0/AU4sqza6qwqC6aqo1Ax0CloKXB\nLyUV5p820VZ3PZbmWbZOMKG9sVIeK8TYO+xpOGzGR8xqT1v58UEcPJH0wE2v\nqNMTQHPsFlRDMVCjO2RYDKwNGHHRhcbHffwKiBrfZlFiv8rCPZ8hWAJbRtZp\nFp1e1Yqp5b507zrmPxGQJmb9R3SnZIy4WRakmSDPhfiQ6bLYkbZtafSKlDIv\nNnsMNqPX/LBvQz5YKURs+DHFp8ger6rzQ2mPPU+wz5AxbZAzh1NlsDhRf6Xc\nL8K+Rc8hi36ktUJNHBWeeybvC26nkJeawnP8+vpTEizkkPGLTp1qq6ZR+ulg\nzd9UDWQVZJxKAjOJDfd7WbUnfhfN8w/abwJL7DQCzYVSxaK8Ha7SKSRkW5qK\n2VYkp3LdoEJgciawtvNjY1g4vlJzyIpL9qZM0ic6JuODLpl9Zz9Zi30nfeeZ\nf2q7dS5rM130dpQDaIu7bJ0usF16LoOFVx4Itdm1Oe0IyFqCxqEfj2NkpmoU\nx+HQ\r\n=obqu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZeI57PlTDKP6Wqtk/sYLmTEVj6/jJtGbMZ7uGZP5vHgIhAN9zSm768z1KXxiZ5OrVBSpdyBkPrUDLDWMB9tXCeKXY"}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.19_1527591537563_0.9067073371776064"},"_hasShrinkwrap":false},"0.0.20":{"name":"mpregular","version":"0.0.20","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"a299f87f4facaa16a48713b07946cb4cc399153c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.20","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-ob0MwV5xsCDOGLxB0KTpKClZacfvXFgshPZjKaKoWWms541EJ2S54lTmADDRRrkmrjCLbL6DjhLTeLujD5tsbw==","shasum":"f04a71bc14c8571a9b6e333d66fc1f5436ed9daf","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.20.tgz","fileCount":61,"unpackedSize":759569,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDhopCRA9TVsSAnZWagAAW+YP/RSsqYxYw91lcpr6prF3\nKG9JjpaE0kufn3R9Zb2FvPpe0pgLY01pEfaE5HlH+4IDiUxKTCH+CL7mQBGT\nc3aNlRPElKDK7Y1sapb3rzlKExcJPk8BVlfnnLGhyNDlvTLbORMDLjQcnMat\ne1tLHYWu3dGqru7XcIrcw1y7z/tQ22KaD1Xt8qhq/KRqgnNV/9fbhjffpPp3\nf6x4nz2FpJ7/5io5CtnvobsI7sHfJRjrHLOTrMTDaUzD4w1vrDGFHDUSKPW+\n92L8JURJFjvODS87hnr5WH4aptk+hfdlzUQePcQhH45KOvMfGsig3xeYENd9\n9G0/3d0BNNwVqXH2y/0zAm4IU57r8Twqftlvp/LZKDSNe3WcqsMHN67YJxtt\n8OmCfE6LYeUJqc++dy4gYc9cheXpCzJl6CggFYCfWeDHT7V2Mt88sDDPJzRT\ntMPJELWk0HHdNVbwnTbmuKLJzbUzORDbNAqejybmOXC9MsFmCmnJc+M1W7cp\nl1g5vnZD5qQU0vmy+viq1I3pZ0pxe5tN4Z1QJVHeiVGbHEbzxeztgcMS+EdB\nT1MP7/XkpWW1YZpnH7Lf+6K3VI0E/klNXUgBE/S2F1GDDrUnX2mCIfusotTz\n/JTRYbeK/1NLwN6Jwfo8RwRMAmnTL6D7xdjnKiVcKHY+uYjV3U4UTPLdwPVQ\n8Qu+\r\n=hRO8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC2foeHW97hGMzv0WyJqh3COfeqjqEb8udFcfwhes5rJAiAYalOq6dRAJuDm44Ewgf4L0BwKETPMbhJgzLjGDGelPQ=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.20_1527650856710_0.0014901823288866467"},"_hasShrinkwrap":false},"0.0.21":{"name":"mpregular","version":"0.0.21","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"610cf2cb7d1c86caa4505b5c4ffee27968a9adc4","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.21","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-FQ3z2ohyIf0l/VdRqekgYGwyZ76JnPbYTNf1z0Oi/ZFqrBrKDKi7Oq6FeC/vKVZqzmGYULyTaHOJhMP6AFRQwQ==","shasum":"6b1eee1a27e0e3ec4d88cb383e96439f11313e1b","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.21.tgz","fileCount":61,"unpackedSize":759638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDjajCRA9TVsSAnZWagAAB6cQAJ+zv6ARRsf42yhl1qWO\nGY77HLZskG5lNh2izi9g5Zpu5WuPOvzMLcu0j9j3R+OwG4VTpcdnkSg7BNB/\nQtBAB7ZkdPqnz5lX50vNGrY6MnKWUFogx7RC/EOGqDbPWv18RY4eiQo1gagT\nJHe7mCEk220RTPkZrBxsMueI4ZXFnD2wxK76J/mT1Ks6oizG1OA4Vixd1w/x\nLiuhftCqFwaS7EJfQdUgyIUJHUl9HVA6x3qz0QVNxy/H95odzTJrh72pPt9h\n4Q2/nY7LVqcPzdN0AH743s7Y7GrtkldoqqnBQS57p1Tq7Fm7ufoQvcQl9/YS\n5A74Xjp8JYlzv2Zw63YF45qMuDR1gmpgoVnVp76KrITbwi9aBNHqBXEcll9V\nEIFansP7S7tWdvfw+0X2a1sC23EyoW4x1l1P42GxDu2IqpXpahgSIw7m0lCj\nHJSYL88R3b3HGJQA1f+0ZrZ1yfjJJjD3ltlSHCdh4SgiJo6luJcfVRDrhAss\n4/dMQ3B7qfiFHHHR8Md62810H3PavxSWxTKuQagEIZ80pGfZAnKx5tWhoMc9\n713npxoXpIu5TkQnSaApl6TlD+RIGhWlQ++myK7GOXfGk9C9qBQf0naLS5yT\n7lWdTUnCLvcK17Dhd0zyyAmFL54r+9mB6y93g81Ma8qznmttcqZ/vxwhfo8R\npl7p\r\n=0XBF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcou0ZJoV1jcsQQSNoX9onEFt7cklkNyZGOovSYkI1NAIhAMLuhFMMYLlbfhoSa1ZMSOS8qLfQ/SrHpRUBmc8S/IRX"}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.21_1527658146872_0.5729747715350422"},"_hasShrinkwrap":false},"0.0.22":{"name":"mpregular","version":"0.0.22","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"35bd5e7a98861a7577d5fbe58c9a12b8bef94bee","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.22","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-1muAP+eH0Isoq2CG1y787AIdksvG8yzxnGpjX9rzgyFQVxwgwBdAcq5enVJC8KKXIZfX0cINFYXdtacvPPpg9A==","shasum":"6cda34e51692a89796071db632532421b03f152e","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.22.tgz","fileCount":61,"unpackedSize":761013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbDpWUCRA9TVsSAnZWagAAj5YP/2Y8LzJnxguVovhV/RIS\nUZnFEEiSUB9d1b4+j/FHqMescdsZP0kbGbfmtjuHWmxSRAcykklIU3UdEYi5\nHABSAp4ATspDGhOCIH5yuESXER4g7GHaKIr5tjsaHHjV95yQ28FzQbnS1yTq\nehPpnwUsRw1tPS9UqKr8VlLIV/k9OL2XC1VTTcWQ25z9dJtKHJfXb0bkfnhR\nUv2BRImFEKwOiqJ0WnWz1zak4ndwiWbQQmRhcLou9GLbVPGQSrRHAk8TjYLh\nHJWHld+YK/QCqHVP3yH11SyALoEpOrl1SW4PPDm5EpMj/3odhv5QmhS8tut8\nPMmvP3jbZuCMcBQZvkPQNQ7ksSIDw/lAEA4BRKZK7ZTCoX5UWIFvb38sog/o\n8WPVRuVj/MIxTVjbGpny6VB68kc4dVMQq9eevYq8nXzz5y7iK4/7BfnEPmwi\n+Y0f8A4P0uEYqHNNVEOQIYPMkmUu28atJ2cYPtp/2VAg0ZTSa/whrHOn1XbZ\njZxlUV//qyXbGa4SPWC7evHeVphXOW+xUVD4OdsfoVTWTSC+o7bvroGMQzUu\nIBwn4FfKQz28JK7WB9T8C88VHZX7dXCP0ic09J0/WpMUpJoiYj7TWpupx/Nh\nB+vaa5DNoCn6JDKHYM73emhdSvPemxU+tNu1YJCP6hN5+bz/0ye8oivx+hSq\nbN3z\r\n=vm6x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAlaApto5KSQbGOMqsSO8pdUH1LIz03EDTPkL7vuNlD3AiBTzuH8yghCy+vR8uUbnGwI18d49n16RPcz390k1LVKIw=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.22_1527682451957_0.8014016614927142"},"_hasShrinkwrap":false},"0.0.23":{"name":"mpregular","version":"0.0.23","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"29baea4b13ea4e5317949b1ccae9b4b7be45576b","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.23","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-SwagCayKol6/e2J2jy7Lpmal7TpuWhqIWFBm/mcwlWMFHJ81OdoK6yVz/JYS4cUxF0soDaCrGwc5bfQdPsElJw==","shasum":"3c33d2c299c4cfd8c19cf232580d38b431e1bd6b","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.23.tgz","fileCount":61,"unpackedSize":761584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbD6GbCRA9TVsSAnZWagAAlDYP/RLeWDRRD1wXOwsY+ZrU\n5SuGlMbI+nFkOGjWWsah4I0lV0cNlWfIHh/c9aoFsROdK3GRnCcdCLNFwtBg\nydutUmoYcxTWW23YJ4+7KHgQwRh0sl3K+qkSaHCxsQvRES2k5ZGh2n84XVZv\nYBbNw8mdlUKSRxNk2KAJI35dire0xzfsJedW1HJIoA0njAr9qbJ79785Ql50\nnKHk1rNZUwp+iXHzILeQyFPQ39rO6EHFhK+Y7LOsw3pJZSkGIPjHhoMEWwav\n1qYePufa2Wx43rzb1cpwL1MZTFITWeQ74oQ013y4pnpy27eYjYOR1IuaAIr9\noEiRysVsDdbItgZMfNDwZrzBGmlhB0jJ2BYPnYqRYr1+Oot7lvlCHZocvlVF\nHPlRpxMeyHclxGb1N+9ue15l7mJhYNvAHNfpGp4ukP6PTgoe97MqqdK5P6Nx\ndYqA/Sw1aOMiOJD0YPPLjMIOq4Qn7If7j1T9URPkiPmB3lyQreikoIfs9B+E\nh6Y0bZxPtrvWRYqhUGR6Em1Z5c1Dbb1al0pRJxWE9ZkpnKMhAysvAlJoUFJL\nq1RrcnNaSJteFquCTYN+Ie3rpiODkuaiDJVBIUHFI1dah+mCjdNrFA7zvC+9\neTyq8JnwvRyFArHtgIMvucLcBbiY21/iaqNP7XGBR93S/UOmwfUdzmFJR/Ps\nddMi\r\n=ZdVE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTi54I7IL8mL072hJZ7DKDjc+V7265sUPzf8lEUIo95gIhAOZnroV0zM68oBxYH5kXyVHAdNjzpFNLTyrw5V1p7kEo"}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.23_1527751066953_0.2631192738407284"},"_hasShrinkwrap":false},"0.0.24":{"name":"mpregular","version":"0.0.24","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"eb716fda6f6b3c7d7329b53955ee0acb521bd701","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.24","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-VYT97rgPSu1MiCeHlGImIqWZwJDG+HcGpMxcBIxZmNfytJwS5UW2HT2PaetkdMBP2hgY3Ohd+YJFYrOQ5/FXwA==","shasum":"52c3ba07d9e0c8fe1e60d04c062422e5b406824a","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.24.tgz","fileCount":61,"unpackedSize":760716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbD64HCRA9TVsSAnZWagAAS/UP/1+JlxgvdTvi6OD8o8NI\ntchfdgFuDcYf5RlWz1g4OEbA52BNuEtuYCZxEwddZ8kKBlNtZELzNgTQM6zI\nsUwoFwVIc0dr5I72KMp9ATyLSoTrG1IazQ1kn3lmEGiftvLvw9vfPpnPAqYs\nG15/Zxd6xBq+ZEw9k3+popq7oEG7eL4Sl1TuAdin2Qyw1SXM6B2vHsVPFFsi\nZ7brxeomvm6Ql3bY6tAMEGGvzSSVOF0+5UhVOnjCr1/3c4g7P1KVv5vEt/eh\nSVBhp0fsPgOuJQx5bT8cmm1EcWyDU4DMNiIpmAXW7ar1oBHxrTMRaV7q3HWr\n42Uzt69nFWW0fNcQ9NBdrH3BTDmwyWwM6Fbj5QWvDtGqp+43z1ZRbEq/Xmfv\nLY13Kic/T+YpFqYKmt00WR0SoSR15adejm92kMlY4yK9fdymGGURVXOKUrwv\nbw7w2sv/8o6vt235V4sGj2fz+Qdil/IjA3/1A7cCjiNSn/LuyCkORGz1SpEw\nB88K/yd8s1FPh7bcrC6zwrPDOypPYk0ip2UTA8jL5IBy+kbAREdNPIgqen4t\nasIEsZoU1R6UbzXOM3TEf8ZQTtRj7fG0tOTW5XnzynH5Dno21fMzUNP2bD8S\nuBHuLQVUxv5Ipy1kmblBbTmXpLokARlD3AAyPn0tX0Sss0dXwJfkD2qeR1nG\nHXyi\r\n=PmSF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDF6NBciLKByI7gNIBQE/BtM+7Z9e8/WB+0KR7zpEoNZAIgayiUwxYZdLrtw1qPH6j9gDz4AoMX4eSgRjVus7BbqdA="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.24_1527754247091_0.706822926309715"},"_hasShrinkwrap":false},"0.0.25":{"name":"mpregular","version":"0.0.25","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"7f60c560e9251199ec868901da13d04433fd61e6","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.25","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-YxD9Jow0haDnghA4nvPkYuFv0a9+a4931KOFZbG41kainDB5/4+jIVz3m4ghSvLsEa5iDP4XthHWLpUMe3PRRg==","shasum":"cab3d27f624d8f5dec63228f3981491d255eb065","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.25.tgz","fileCount":61,"unpackedSize":760841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbFO84CRA9TVsSAnZWagAAnbkP/RxkiZ9nYhwgIAUqA3Mq\nAPJ9WUkOixbocmD5kFEOeDeyvf68ZGYXNRxejymYplg0OQOO09zwKhajr5q1\n3YhGNrLRETLuaUdbfNQIojJgrw8Ju1y4o0wdONb5C2A/GfHzIEwqn6ZG8q3z\nSLqNCTO6BSl8lRuCMcW05UlTwXFYf66pHYN0OZ8Ig/qv8Mjf2d4lKIwPCWeB\nc44ZNm1z0QnPrKyUyaTMynk7G+Gm8GFO40OhYqTVum8f9bt1+fm9Z6lzypgr\n4k0Dwjzfoksmtsyz4evlOkvkMVYs5JHjw+r3TWkQhAOg5Xwn/3RreGeEuV+v\nBZ9BE1xDIy4c7xrWKqb6sJuxRhpZVIDDSSUnzLR+MtwciAB6zH4ge8eHPbSw\nrh+Rhmjrw5aiafOVoOb04dCgwDBHxgDpd8qOyOWyGCrx0sg6ptAsL7zxzhqJ\n4y8deXvfZ1Fp32eLrBdi4JVOxZs8uiD27AYBgqNonqQsTdeX5dat9LDno5w8\ny1MpeEdMZ4W3aLGnK/Grls/nATM10dz0e+nR+E0+4ihfg7YjlYFlYOECiCP6\nGa+by1lIxoptKCf95MMQQhAB+43DHA3/wy+t7rNKwGRq0TfjZ3pFHsihu04I\nQynyOTTIi3Ie2NHElomcWuTUHlai6lZ+GqEARoiq2vX1NsAlcw5EYeEyIJBO\nKTax\r\n=O7H7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDr97Co88rumB0u+o6YDUucgEtW5JO3/yusEEqLtjVc7AiASZexJM908BS/FbK1+ORgdXGi3JLlzBAUb1yUm9gTGSQ=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.25_1528098614819_0.029333641639438968"},"_hasShrinkwrap":false},"0.0.26-beta.1":{"name":"mpregular","version":"0.0.26-beta.1","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. onReady\n4. init，regular 页面组件及各个子组件\n5. onShow\n6. onHide\n7. onUnload\n\n## 支持特性\n\n- regular 常用基本语法，`{#if}`、`{#list}`、`{#inc this.$body}`\n- `r-model`\n- `r-hide`\n- `r-html`\n- `filter`\n\n## 暂不支持\n\n- `animation`\n- `directive`\n- `r-style`\n- `r-class`\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"7f60c560e9251199ec868901da13d04433fd61e6","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.26-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-IaYCfT62cK0XpxhK2eKakSVsKfrSt5x/y3NPS+gzbAUrHu04AHSixBOsvUtlOMLPlVtTDxBftQuIscHfGEj3Ww==","shasum":"87206a4694f7e840dffb3dd1d83bd0fb0e5e7266","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.26-beta.1.tgz","fileCount":62,"unpackedSize":763523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbF0B5CRA9TVsSAnZWagAAtbsP/10HJ9CiXoUCDPiXis8V\ny4hjM02x6a0ZNR07XcfzoSEhNWibRouxUALgoJ5arYap/hOaLqSO1u6/JOKn\nzwLIkSNhkO+OB+UmePW+16g4PCd5pGm8x8QvI60t9+PN9wqnuO+eO+ndOXPQ\nt1cQ1es9nmNNbVBEg5hXu6PldPCd4CfUsJTM5Li8fR2MMJnwvEXTMkrgoB2n\n1C67eDKlKDdYL1FqZKBIpehYxNQVcoir6A4efroEh/KED5zHr77CWedJ6H3n\n0pnWLb8tVZq41sZaef4WHMWJL7V7lC0Y4EqlzNoQlVqZscqpNs7apEuoHie4\nSXxKYNg99Xd57faBKS7+hHQtgNqyTcQBPFq0R4ppn2O42sPS+ltIrJ0B944z\njexkUN9JnCi6jeoGw1Qi0OhTNpbV7A4bNoIqt+VFmenLyBkL5PDk1maeNVPy\nUar3Z/5xn8Xnlxk1i9nveyA3hXGI/lq5PiSzwEzhLqUOYsxgfDySki+jk/0/\nxHhbVplntaBnYjvVW5CCGBpuChPxRYyxZK32uJH5H1VIsjFLaFGAhkjF0/pj\nDNZn+El9MP1SYltBBhvjHOsMUgGkJja8PFaqD1reGNCL1hybgBUdEBSfoNok\ntIYI+JXsc0RYA2bEDrs1SS8fTNTTixuP+PwwAL0Cex7iqoRRlhTII6DPJLSR\nLa+b\r\n=OTGr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYEQzemkvrf9vAE8oqBaDgfynO1i1cOcAtfEhqpnKPoAIgJMzJcHn8/4eeBPKWQyWLzRZh+cUFD/990zzfcCIcMbk="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.26-beta.1_1528250488736_0.3321119963427124"},"_hasShrinkwrap":false},"0.0.26-beta.2":{"name":"mpregular","version":"0.0.26-beta.2","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. onReady\n4. init，regular 页面组件及各个子组件\n5. onShow\n6. onHide\n7. onUnload\n\n## 支持特性\n\n- regular 常用基本语法，`{#if}`、`{#list}`、`{#inc this.$body}`\n- `r-model`\n- `r-hide`\n- `r-html`\n- `filter`\n\n## 暂不支持\n\n- `animation`\n- `directive`\n- `r-style`\n- `r-class`\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"7f60c560e9251199ec868901da13d04433fd61e6","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.26-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-ChUn90gP5z149cSYjHRCVDl2AlnMZ6XysavZFCPKdL43gB/mW66jNcUrayBCoxrhoHcxIeIU70w+hwkL242RBQ==","shasum":"4c2dd72ed574018b98ce946d981667101b317af3","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.26-beta.2.tgz","fileCount":64,"unpackedSize":763562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbF4r6CRA9TVsSAnZWagAAhcUP/1etEasNIFtwMthgsNXu\nA7dh2cbES2L4xWJGKn27a8PUn8zjVb3kNCVe+xU+xu5lovSkOPem5OUsIrXk\nCge8bGDurF1MusrAv+EyZC6RGQ45zYB9jlQ6JQNsC7/Qbxis7YlCclmmm9tN\nHthTSfrC+usZcmqq4HQfKrDfWpfc2k/fwbrrlBQcKv4OM1doIrMoSCSHtTEZ\noeiinLSm2fcC5hxGq4tFRYX+pAtijzqhlrcyjFMWk+jd7BTz5vIYqK9Qjt6R\niVaXpUZO+2GkP9ukIjQTb/vJQ1vZvugixQJnZ3vrycpmvTPSS5CPuUVh/k+g\nQbGD49lIEWrD1v6MN4i7rxCoIY4rJ19+HNPj2NgWEPerHjn8jV93h/GxVzGo\nGG3/qq09B8cNEG13oGKSS1hUox2k/9RQWYFjUQxCmlTv52+X631vnhxpDVi/\nSznpxQt+gQKc+MeE/n5R0i+qgVlcdvGRN73QzzMpocxRobw7Z5jmKfjivh+v\nUW9IIdlviqwCCsbnUSEFy61HIbIAkAVSAYj383qn2wdPQaYdiq7dSBRlg60J\n2/zt+i16kx4MT1NHA9tnp9JqZe+m7kRyK6iKXGMrOQ0L8b662CqFKcZTay+I\nVR9QKop3LC6fqp5zvoorIb1+5BJCJWB6Ln4FUSFUJIkP50CIu+CLXujwSDFT\nKWCN\r\n=/BLk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAgVgWwf+rOVqqLhnSKT6JfaTxMwi1hLZ8arbYEJv9lSAiA/VAc3kyu99OKqwMvxnR2owFjeJg3qHVuTZijTWe/+MA=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.26-beta.2_1528269560500_0.49380756128706405"},"_hasShrinkwrap":false},"0.0.26-beta.3":{"name":"mpregular","version":"0.0.26-beta.3","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. onReady\n4. init，regular 页面组件及各个子组件\n5. onShow\n6. onHide\n7. onUnload\n\n## 支持特性\n\n- regular 常用基本语法，`{#if}`、`{#list}`、`{#inc this.$body}`\n- `r-model`\n- `r-hide`\n- `r-html`\n- `filter`\n\n## 暂不支持\n\n- `animation`\n- `directive`\n- `r-style`\n- `r-class`\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"3ff3d6ebda9998be0d68f64b6747671a90d0343b","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.26-beta.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-tWwt8hVHL4hA61PLC7dPAGpKrRiflaa/gI4ZakChQ2d3MvUS46M/fcYlkgZ57cNds7E3ZP7O/INhGiqQJSKNjA==","shasum":"3d52e3dbeb2c4c116428055c86ffb04ab42c613d","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.26-beta.3.tgz","fileCount":65,"unpackedSize":882347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbF9zaCRA9TVsSAnZWagAAJuIP/A9ixuaW8cozbbldhLUa\nfGbL+2E1qMknmTc6MvMTRkBnZR7ndNtj5wRNBHoiiMwahNtPDIjJn0oAXNGK\nirEvrzbUDpnvIU9adqpMB7Whq1hQoLcIV/TmspPCLB19pPrJ5HAImBD8/qTo\nxnHbtAzTzNVayT6nw91gj0KEtmy6XMyd6oQX5RQsJKYD7lgEIvbbmx9kEjgK\nhcftDOSgNHM/No2GD7WrRxNG226qqyg7aphBx90u4Z0OHdCLsh+ju7jgEnyP\nUmE5rud+yYvzcxHMmaAKIzpOFLyu3uJJ1ef7oaiTUdhnpHJNFZkuoLbRXFle\nU8YmsARrq/1v0xKf9AyUc4OqaGV5tr6hnxfhD7RMpQZ2qEOquey9OdHPTpix\nDfb9GeIaeE9+OVo15DLRIvuFwXyLt/lWHlLzEu8yjLjbfabJonZ+FjGAzQfY\nFT3Cu0lZtOIcjehnNkkoBJAeU2OJ/URz7peiRwm4m7I02NaKt708QF1cm30u\n+TRfh/DicO4Nm0UtSDLpCQ4JzaANzh5u0ytmwLia6f4OukRaQI2usDJ4OKwj\nGgdozwfLsoVnbxF6vr89x+iwCFaE1UjLF7EQypJ0HNUi3WfGlPTJzzhA9HQk\nwsEt40590j1FvpdnmUK7SN+FX7PHdhqCJXo9mIwGieIp2oncpJemb5oAdoHj\nS1br\r\n=Lxvf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBJBdnTYkhBXhBLEFSZHF85lftq8F9I3lAJgrPeV+Q8RAiEAyTw+zjBY0YL2ti3O8gTjHYvNHFq9zzhOb8nZ4Wd48J8="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.26-beta.3_1528290522392_0.9009415253561674"},"_hasShrinkwrap":false},"0.0.26-beta.4":{"name":"mpregular","version":"0.0.26-beta.4","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. onReady\n4. init，regular 页面组件及各个子组件\n5. onShow\n6. onHide\n7. onUnload\n\n## 支持特性\n\n- regular 常用基本语法，`{#if}`、`{#list}`、`{#inc this.$body}`\n- `r-model`\n- `r-hide`\n- `r-html`\n- `filter`\n\n## 暂不支持\n\n- `animation`\n- `directive`\n- `r-style`\n- `r-class`\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"58faeea90571a6626514352dcfe6edd844fc9da1","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.26-beta.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-ItUjGvFy4Io4ZrZbfFcAmjO/xdzYQOFtARoVR4ebe2OAChSV3kAr0CpQd2KHc0b+3sNgKvupuv69xCKtRoy3mw==","shasum":"a893f6cbf4bab6c235a20b3f8f927d705bbd95ab","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.26-beta.4.tgz","fileCount":63,"unpackedSize":881270,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGKgDCRA9TVsSAnZWagAAuOUP/1Zdb7aimXXiR0Gv0YQG\npSgiwZIwEfK7qj1osV4KMWCe4Xqdb89j5IkZ8jIUetu1lU2eLnLHWZrIEV0U\n/UgZoaAtph5HYMtgBOvEq9JhG+M4UZWDJYhe+COSPa7cYXacOc5lWbxM+UgN\nwIGrrW6d4f54RIXWRFGCxEmT/o0e7iguNmVtPif6TQlLqE/xCC0tfUghegBO\niKlL4PJQIvxz+033IhjTWiq8LbHwAwBdN06w6XKjmQN4rTH8OEPwZb9fWbND\nZxHwGqj7qFfMCN3py5fJwN83DC56royU+wpzJDemkEUq4QKu5oWlkv5laxZL\nWuFw/w44QI6vTaN4iK+QeO3s2zdCBpZSG9qXv+vruswCLkYnxCDvgylXGd5z\n6NnpUUihUodgmFyClaJv/y1bcEh7SV4l/PYUwywgP032ZXZLra5dJiX+F2hg\nzqTmrFtRdIIETGNTf139HvqGvv2IYQFg5pBK8/ilD1MROsStb6mWkHUhpxpg\nBNNdsjp9eU1BqMSFo+fjsobSIlMMCqxFie+zhdIq+EtQXZbSt+svwUKnOnjU\nz2G01f2/IRZteHallPROj6pCiRNC7YR+NOHHtmltEqWedBV91YaYoQspLVXl\n18NrUtpGhudBadcydan5Eb8+V18KxQ5zpqxwDEVglK4Gy/lXb2RD31lygXRl\ng9ri\r\n=OdLm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdKFU6CWYzek5rYCbbjzyWY8mG8ipySfHziFFKA1geQgIgJKDs2g1qoUkNml0yZ9xewZi0bAJdG+DrZ31TdqRef0Q="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.26-beta.4_1528342531370_0.40402065241257645"},"_hasShrinkwrap":false},"0.0.26":{"name":"mpregular","version":"0.0.26","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"58faeea90571a6626514352dcfe6edd844fc9da1","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.26","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-neGGbxklplXKoktvlakINZLBB73G8EhSD8S4FD65S/XLCUqOnclAVFAwJe2lTpqnkdZq72rZUA7orYMOT7N6jw==","shasum":"8377d012bbc1cd2ccbc6aeb1c6caee3d8ef59e6b","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.26.tgz","fileCount":65,"unpackedSize":768267,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGfNsCRA9TVsSAnZWagAAxRoP/ip5hXizQX1SHR/QWXCg\namyQNxLZD9UyPqfEu2Zyh1HANyT+Bdj51rEG9c2mbp9pFvCspFfAakdI7DZk\n2rwZW8rGz+imsqKKZuvNaFRgZsEILqw50uj84Ud5g62b5SN9ljo7luUaClvU\nvtCml7gqC3PxtBkkAZ+WboV+V8zXkdmjEkIPoa+OUKdv1pvC2lzeV3i24voQ\nXYEPidlbvFeG3eVGZ1KMQjbxksO5l9Kfc0LwoSuZg9+T6Ao1n1tUnl6wl00w\nZFKiUYa22+W9BGNQN3t4bDPq2CX0rjGpsXBcPSlYM+ccopWiJgxjPPr2OoxH\nLLtLMetcdRzstSqYhwjHfp4Ci37wTnFoFiN4w83ZT/XpaZhblZn+gl8Xi57W\nXHZ5Z4i9BXNWDZConGBVh3dR03hPozAPC4kU9UMPQ6/JyAejHWfGgMjzXJ0a\nklgXvfwbjv2RbNQ+OOLAqGSfRxuvufX5KAPtXSfa+bmqCZcE19I4NuRfsfaQ\nZ3ybyOv3ReKULIgS/pGQPuEYJ63TPAcUJvG3aPTRO/dyRxfM664kqT0ffifz\n/L9jGmyz3AdrVA0FztxNTFCUBiGRAdJnciVaQcwnawv3dnhUQJigfS/ZW8B2\nG+lYRF03//sDPzXJjGd1ODskccioHvPthyQ7t1AdznwdOYqgL1f5ieDzm/2G\nZ0sk\r\n=Xgzy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC2jWnqV7lA7anynL7+xZmDrcqKlGfvpEexgzw1LrNx0AiBjeoJak4C0Fsk0Fd4kvX1y1n08wUGrzpkf4J/L1bTwVA=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.26_1528427371503_0.27276154746013215"},"_hasShrinkwrap":false},"0.0.27":{"name":"mpregular","version":"0.0.27","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"d2689b5717040fc3f114a922692df41bdc850771","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.27","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-gPP0gMXGXEGvyItANU97kHMQvcdRwtkn21+NWfLDaZxZZa+xbLS1j/o+TmjGUCMC+g/9Q9SQWQ48GLVFJzGsjA==","shasum":"96f30785c4b109deb60b2753ab4e4b152beeda4c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.27.tgz","fileCount":65,"unpackedSize":886956,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGi/uCRA9TVsSAnZWagAAO/AQAJlT3Aru+f6JyqRm+S3d\ndNq4NfbfUwyDDt0Zs11oN5yh+PexPOc0Y8Uj4q5nkRq12eQWIlGAom66XG32\nqfVODha9pgMqfQeL9dkWoK/fiTFHV30ivK88L6IhWMfUF0Zq05QZ4ybSUqLs\nNoSUuiVLG3uS8qSTkdgSjvxtLd2HjFnYESNN1btWJs3KqQyLZW4vgGhYCkZU\n6YPgfP+ZKHAj4BttYM34lDlsY10pKJ1x9UsqbhPRtqPEw7a2E4mS3/xOo6KF\nQqpKC/MmyXHnxmkLDOzegbCeP3pAsuUvCNAmqjPw+nUgkXth5YCEIqoTWnCx\nz+hpR5sBa/K5Iw2bltu/xWgE/1CKJF8ZA7NT+yx/fx+uIr2SYrvMhN+eh3/U\nECUkUya74FVe+fN8LMRCzmI3aV2HyYGUW4DXetgrefwHmL4UbjUODW0OrWUj\n+SHYRZJIvZM91M1q1x/7GFnVI4K1cUo83twvxt+t58IOd9Wb1ac2DP/hQssp\nEOcw5rqflnMIrvThkevm+oah4j6pgRcrMguGShyTynjE32mJwpYlK/UFYdqC\nUQt789BB5PrJtDVL6t5ip6331bjdrSLGdC42iGgLErCu6K065lT/xQil6iTO\njeOUUiDOdKy+CoLdAKwMdgtTEHlHzRbIAwBtSUh5A2fuh2qYvgy+0ZYmJWb1\nb5Ph\r\n=A7xe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFYbOpX82URWLF3Z9d5MTQ4PBpzgkt82GMuqQD9Mo4wXAiAu9QR2VQbj/kLjGJyFPZIQm4/Q9EKEgrr8EbmIj8Wa1g=="}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.27_1528442860987_0.27255829151241384"},"_hasShrinkwrap":false},"0.0.28":{"name":"mpregular","version":"0.0.28","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"8788d1040371e70e5c52a8729eb75501ae92b651","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.28","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-4M4Ub5Aqt/En0eVE9Kgrw0Wgz6nBN9Xab59rgeOCpsTVuAYDN3LrPZQzcoduu3GioGD7xSrRlwLsMNoD6fwz0g==","shasum":"a2789f6360c4361f3e7e903a6834b0bed694241d","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.28.tgz","fileCount":65,"unpackedSize":887909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbHehPCRA9TVsSAnZWagAA1BwQAJUfkaIdx5lAG1rjBZ0h\n48gqHgyvA8u6opl0VK1Yq4+GuPmlbc6dPyfAjChtOYxF+CRwh1q+ZbLqaCkU\n0dwaprPHSSenzbutZWvpEyLQDnTlB9eLE8HN0jUGNOLP+gjDoDEfp4AnmhXE\nUW+iuc8F2nhdtMc6fphFmMryprimJnM13gTHPXk5Riqq9bPY3jzgbpGDZAmn\nNX6Mtvs/1JzY+ZbZRbKNFvpd3JAiUHbZFkfCvCCbg2ljAZqSunYeI079QtLG\ntC91O1CsCiUyHY2N+f0QOAJEB/Zo348TyNHangdKayGxoj/wzRylbmuyYXyv\nJyW4hao5cyjM7vCKKFU7bYs+/7E5SSVPaq3iBfzErAFrVn6DBVPgzDM2GrkQ\nwHVBN4OJVCBYHAO7dqueWBh2QDbbdL9LYB8nA/krZeHM16rcsMGJANldqFkM\nl6NsQ3tE2+gGUU4nMQCbkfjshmnpGw4/OymGgSQ2w0P5rmD7C/vJFuY3t6qx\nbBpYdJjbTgvdK/cU0lNdHCuGlKlxT/yOWhjZgC675HDqMM4mrQI+P9HjrfXG\nWNMbayW8jDxrGMHee9poZfSdsHJ2x7Ste+brHtgu/FAxK1HqC58DRe3qxa2B\ntC4AvM5CgQpmfB79AriRdRt+ua2kFIFUJPlJzPnA4OJTBum50RsMb4UBA4ws\nMSHO\r\n=odIx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCT9ZbJUcB2AUiKhwUMH1CJa3o2EIbp+k8DqBwM0bNh4wIhAOR3oizU0zEA+eexkmKj+8Gbk4H0mcCsiA85wBqPP9ib"}]},"maintainers":[{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.28_1528686670077_0.7999601028457004"},"_hasShrinkwrap":false},"0.0.29":{"name":"mpregular","version":"0.0.29","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"4d5c172564bfde546f7c4701df274150f42943af","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.29","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-sfpsbBCoRQsrC/dzrz2pZ0aCFU1nWbD7LT7NzjwQoQP6DUHzsYu9q+Dewq8k1FE3n5F5gW5hzdO1Xnv2wvBZiw==","shasum":"32435c135236ddfde1cc415d6b4d1c9a03a62758","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.29.tgz","fileCount":65,"unpackedSize":887886,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbH8dLCRA9TVsSAnZWagAAxrEP/jw2/eaAaaPfZ6NWO8sA\npZ+Y5e+oc9AwjR/DTP+x7+jVEild3U8vjR7pfhfgimN0HTHSiuROoHWys3fN\nh7j4JHvkUI8aCUKcPFxgB//O55D0amplVmJ6JQzuC/zr5TplZEbb5R57xM1q\ncpwC0JigRN2tpmzS+Nc7J6ryz20R7KnVTgbtZzvNzJ1h1PIHCIlhgcKz5Gqx\nwbmjycpJA9APiDoHZSzvlFlenuOYwZo5KVKJqjmID8CxDIxQSYcVLMRja3wW\nqc/MZQ6aI3pauD5KeN2KxjhXCzAZ5BburT6EE/Y+l8P6WpCW7ao6pAbPHd27\nCOqOHMAtbsus9xHhLwSm6CxQnEa5mlOeKcvtfhrdBVKvcjEuNrxhe2jBpw7Y\nyzRKdvfVWon5PKrtkTTvRZBUxRJA90BaGHEH0yIXCvB4wzBxKxPPcBt+RfAS\n4Yt6/7iuJerijjVnd+BMxf147BV6KO0a3KunVti2B0ZGUfqwhOMKgA/TGaT4\nbT4pB9tPnWpuq0AESPoW/Pjq5Dimh5wCsodOijYI1JgjaoZTMzC6CKNoADIq\n7Z0vdFXxK3yVLinLZIRTx18gaylY/E2HyVoxtcDMCLuVpgL+vQdVvmkFC+2l\nuCle81BddcgcJFuMLQvLFAZ1zljsjuiIenVpGEYDEqTmZsx8fVzAlGuCPpx5\n1c2P\r\n=NjhJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETMtH3Kx4ke9fQ8Z5Z+s/odTHZ73s8ANlEKEyDGf8xFAiEA3QwUR7FZSBvSOPne/SF3tWMcYL0kr1sGiGWOy43Zaxk="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.29_1528809291301_0.5011580098606634"},"_hasShrinkwrap":false},"0.0.30":{"name":"mpregular","version":"0.0.30","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"5c92cd6b528880f0b43e8675a5b5e797a19466fb","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.30","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-9Qj+arWhZRdVrB2eH3TkMVIBulgy/pUs1UEiUWUFO+t/mAwA4NjQZWgsMgxKuxDYn5l3MAOUmeSQlDdJjbSPPg==","shasum":"78137a61ce059443efe1af45a0f20dc2567f1c1f","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.30.tgz","fileCount":65,"unpackedSize":890766,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbIKzCCRA9TVsSAnZWagAAqXYP/i1PHk90mWYH//0YBTHH\nXtHfyuFr7UgjcW7ommEfVIdYB/xa7zO8cLqQZjykWpOT8JABSixmOYcYsUX+\nBvJK/MJk+e2A/UBBo9kOhF4RTp1jyRQ6emI7qA4f7/qOaw4bfkZbyrF6R4i3\nYlXyeUK/Xv+xa+4PedlhLvDvAEkX8/qqATR4JQJGqci1JtJGYPFZsqND48gx\n+y0kBLBhA7dBlrZs5jb4THlYpFavNPYUDqzwfyQP3PVHOECyHxHgwyXPmGZ5\nFhIiv8+3SBPDIBIcQohOk3hWqzWtPSmBBBP8qQPRfPlTYq+axrqiE8LGGbof\nKxQ2n+dVWkMTECi7cChE9nvaWyw6Hmo4OnK2pUOJiUlF5fljusap+SeLFdB4\ndXvOjfDtaJmHUMZkSrvZsmMdBdk+wpnmcszYTVf4OSDKxrBQ0hicOVQd4n5N\nzBJ2EWYEd8BdL8mmgzigNu3214YVPuGEglsX+yQ41wQltnN29V3PjcACI3FC\nl0gFJjf7QhkVid5J1meiqaQ3bAG+nQD26UkIzBs0UBmVqDqHUUWDQk8E4CIL\nY9IRn+Hu6SLnZYO10dmDiXvjO7nm5mUZeDP/9zkVn+6f3liTBiTvL3rWwIa0\n5TJ/c6cazIm5fqpKaK0Gu1GnFrIuatOlQhQSDWCmaJHTHfVj9wXL5+5yOCV7\neQZF\r\n=aMZ1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICOXuPiIZgpw3gcqWnD+k16X8+mH2pmaYl0XrnM4CdwcAiBrosYG4R5oLh3/3sEA8ljaAm1oAPEOm/AGsev4aPWaQQ=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.30_1528868034448_0.44074470769435403"},"_hasShrinkwrap":false},"0.0.31":{"name":"mpregular","version":"0.0.31","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"58ab887c89773b3fd5b68fca5cb6a57c16783b00","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.31","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-1RRfkvsrNagAvQtqgJDmqyGXj+P7q97aLFgd2h4UMe+j7TWnizGH7PzQW8P0oHK1PC8kdUXOf/Jwy8We8L40Zw==","shasum":"f2e4f175523b6c85ba266a71492bcd3b4a42850c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.31.tgz","fileCount":65,"unpackedSize":895877,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKLEWCRA9TVsSAnZWagAAD7kP/2RfyPMsb55tTzm75dlL\nhsBC+kGbTsun+v+fhJ1kQ/yUMm2NihD5xyZlLsaF9OMifTdYQiIJU79XJKOQ\nPk4e99SYTsskx0YAszTE0yoy1GzyjkcUXxPqfZ5RBHbBPsGHJqjtM12fx6aj\nilDvHWRlDgESLqblLVkzv0U3GrPEwVGe+FvkybEfle92yA+TBZAODxljtiyC\nUcMbHQEQGpMIrIKMb67W8sVH8DQtW3xv27wv4ad9o5qULzr66TXJnFL8Pl4t\nZ7Q00plqDBakEQ5sBlDsje+YMR6quTtoP1Ir+Bidkh9AlDfoTL93DI58vJ0B\nAeZax2RepHhwglw74Mgy/gCFHvvEiNqps+SI93vOzu+g+oS9YilxjlRAMCwm\neILbzXcI8WBdjo9Twq68aEG95uXI5uc4nMh5koOXlLukUmTNVGKfD5qiBCQx\nY2Je9B/2DllZtuUoK58uJP6cQ36mvax4RDMd8z4upMBZ+QSDMEUxc+Vx3Pa/\n0Z27m6KczOtjye2+qUbWQXy9TlBjC2AQev/pbkpsB6N04O+El3ygKynZViyu\ngnCJte5WkYl1gDmD/cMG+COeSImC5t9dLsFXpohKPbBhZoUeq0PWJ6Ufbd0F\nmVqmrwXIeKQS5hOmCM1gOJghPBnVmEl/cZLwxXhWR3bBUJnIr0VVCy+E5PVM\nrT+Q\r\n=h6zL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFVWXoFuGv60fckp9XQ181Am6pbkDNaJS64WJEUZ5VRaAiBwZnRLBCebQL8UhQR9qPYQqtTyVxB6N8sm2ffB4vkb1w=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.31_1529393429352_0.9468305450647163"},"_hasShrinkwrap":false},"0.0.32":{"name":"mpregular","version":"0.0.32","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"365cb1bb721fb69d58f71bf69b127e5c9f85174e","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.32","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-nX62hKst5J5LoiiUlzf3DoP3qxNE89aOTdzwtzhA2ZLVv3h3UjJ74oRjE5k3byuMor6M6VVVgH9jo004pGQXZw==","shasum":"5d74910156f0654a07f2e3bcbf7a949408bb5927","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.32.tgz","fileCount":65,"unpackedSize":895827,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbKl98CRA9TVsSAnZWagAAyIkP/A3ba+ECJdoVk5MdXW1G\ntP+BIOrXUEBM0akg9rix1scu68+bYMUw+hzclAnhcF1r6VG3RtUOu7o2yJ7Z\neO1rcvf8fciguCw5yVwjw+pQHLNU78MDZ5Az6MTZ4+7Vkxxn8VPJrnQRoxpO\nz8uTvTV+YrLtTOuWUiqzTQiEFzXT8RaY1HeYT7o9DXqa0tdJPycEto7ni+DO\nm2k0qxCymwasewALkRymXvMBMeUgOKu78FdExhtgRpO7E8T5UTF59ilom9yN\nctm4FzbFotP2ub3dgirn2NbSA6UQe/mTNnmHBb81K9k5T8JasSH3/xloNcle\nG/G2G4ho0jd9W+LT71k7stm0au0aFXZJwe4Z8NM57HvG+5Jy9SqQrOTVHsN2\nvFXhJYqekhhYbPrIkavYQo7nS0tvKfeo8Smk6o2n7HWLrUB8aDyliJqMIitF\nFLYcn/kyNj/gSK64Qwox1om6wMjf/lLYXHrE43clzN+nJoRLi6TJmngCJ1pW\n+klIdZGWcMTZrh+J12mPbTx4a/5/DjPgYKmMET96grvyFGwhvo7eUg0YDzHF\ncXRKhOwPXo47eZYwotIZ2de8xpukIx0niuD5ogQH9rQn+D67bwzh2rqvghiK\nolmf2LHdc+z1aamBjgCO/DQMXY3DsPWSDr9UWTIKXBlmlijMP1n2cqu7dZWk\n9ak3\r\n=avri\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbfDOK0q42HL+rgp0YFfczJrNqImpry0vDFynIRdp0WwIhAIQ+kSnhZq5UnaeKE2fvwvoG2mKu6prLBvC0r8ZmvA8n"}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.32_1529503611049_0.5626047176432605"},"_hasShrinkwrap":false},"0.0.33":{"name":"mpregular","version":"0.0.33","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"8b678208df1b12bb95c089f11a3f747a803eeef6","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.33","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-JES/CkTmk09SE5ajE7dZxlQt6mVJnQBz3JmRZTDs1tXDtApLLEdFk0XNNHMtXSJ9DmVVvDpgx92Td+fao25LTw==","shasum":"a81bab7908c92b647adea39c0f940283d229ba8c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.33.tgz","fileCount":65,"unpackedSize":898763,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMJFlCRA9TVsSAnZWagAA71AP/3ZkbXBZkYXqzVuuBqeu\n/6JUMfIQDWddtxlZTgTeNfqQluAyukuUjFKj3JLc/dGCIVZxG3BiBFRhDsqg\n22x/wMC8p6dXPjACKvQUlU1sMPpVEJYim3PWq8tLEICLoCN/B2d8Z6TBOgNS\nlMbKHrch3mYjxU9KZzPG9do6QLyvq+TYGQiQQihgfF9P5q7ozzFFNYOEdjhB\noa9TnyLMczZdEB69Lyv/SxZVfcy4sD6FY+8mwtfRLMd2ds/iCE3GFHr7ReaT\nUQpV22Q/d7L/n8tM5vrYq/ytYh5G6yohWnE7ooSCMW/G3R8E84gPjXHlTISk\nQ9VO7znDL3qw5RGvAMDbthYILD88y3fYV6QsUJ5UmA8tEzsO8zq0R/nE8Th9\noV0NgXszDKZZnPHspXnSjkuAr17JwO/VP/kaKuTiLZKGHokTVQGCUL2tTjw1\n7lxbpVhhq9WiD8ZPbvhF0IG2xwVuJIg/kJLTkish/cA/LUbpz7dHEhRQdV4M\ngcYlB9Nkgf1x+2kOZAhdYNPSi/CRKBpt1bcrKHjKX09PWxT4N/GKX2iS7b45\n8oG9oUQXmvdrhLvGjRcpilcxALDxDHeq1iLFlj/OF7pWd9Grcl0t04eTK8by\nS3rpHxf5unN92FHcCf5o2B5WGOShY7G0r4aBdeSH75bBBxDs3PZVeCJl3FSr\nqguV\r\n=bs4z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFZmK1MBnbSR0qf3zRCzM8/gU1n3TvAo/4jz+NL60IKsAiBmB3TBED0cDwL9qj4FSDapcANrjbjnfWLCaLsqYQo0xg=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.33_1529909605659_0.021995233546850512"},"_hasShrinkwrap":false},"0.0.35":{"name":"mpregular","version":"0.0.35","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"fe84929a33b15faab868c5d08b2e396c1f8a8032","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.35","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-83XcdifxBZl6/EOeONQWNKDedIkih1Cq3iIwP+qMeo/XprW2tbqmoteXPg9F4XYNlB/c/+eV96gzFgpwCyeu2A==","shasum":"82722310581fc3dc48fdb3e5cff2ebaaf73c95e5","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.35.tgz","fileCount":65,"unpackedSize":898707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMLNOCRA9TVsSAnZWagAAPoIP/jIzpJE5u0K+ACdnJRqz\nU4yFvTjiXNxC/GBtr8FEar6BqNHAhV9pgJlLjOofTY0q4lOqDxmWfR0Cj5ut\nvdsYDo3FXEvfguNGo2YTLsTnf7zrqY08hHJIB5sfgjcuqF7bh7h54jYJrvED\nGPQM8r+l4DicENkcs23+gOxJSiK2n/dDoeVv3tu4aSygZ77JAmtdaCXo86ZJ\noN2OojljDyvc/i+eqheSnT541cuMYsWiJEivcK1XWCJDn0ySinpC93wwKZBx\n2Akaq9AdODRWVW5ypW0joBXog+tBUTIOsOh8NrGx/73TdncEdOjp1F235yPa\niu25/kpGUK0WpXAch9Oe7fTsD/34JJyXtjdOdmrnDHJ3ulvcvNUhvqOTE+W4\nqeGzYSUZY8epVOoXg2XFmL/voWgoV18H5Jnsanq6ZldYtq2/opptZsA72F8l\naCcs6C6rbP7P3w1IQvKVDfxbh4Ckh50KpZrVPja2E2GCq+6Yerf40wc2eFzR\nkcz2BXxZC/lA5n/xp++81Qd00BXanrGzcGFrDgJf6k4+RJkqIX6E9J0T2MMM\n5NdCJ5Wm+Mme8c88n+Vm0pZ89PA5ifIRXiGAqGsM4FvYtlemXT8y64TIIOfv\nZAMI1dP3AXRdWVgbg+ECyF3KJg71lF7YnXpkDKzJGuVKpXny8dGj38w4LfLd\nfpJH\r\n=9ErU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCip9sodBDx57qWYKipo2Vv11fu1Eh/cG7lWOkkO/tjsAIhAJBFCuDQwRe+NgKWJxsxzJDD2vjgFNJF5mkR9DiH3hmk"}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.35_1529918286715_0.47043249913132956"},"_hasShrinkwrap":false},"0.0.36-beta.1":{"name":"mpregular","version":"0.0.36-beta.1","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## 模版\n\nhtml 元素和小程序元素不一样，regular 的模版和小程序模版页不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以直接在 regular 模版里面进行使用，对应的属性、事件名称都是一样的。\n\n## Page 生命周期\n\n每个 page 实例对应一个 Regular rootVM。\n\n2. onLoad\n1. config，regular\n4. init，regular 页面组件及各个子组件\n3. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n\b小程序的页面钩子函数可以直接在 Regular 页面实例当中进行调用。\n\n```javascript\nexport default {\n  type: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log(1, this.$mp.options);\n  },\n  init() {\n    console.log(2);\n  },\n  onLoad(options) {\n    console.log(3, options);\n  },\n  onReady() {\n    console.log(4);\n  },\n  onShow() {\n    console.log('show');\n  },\n  onHide() {\n    console.log('hide');\n  },\n  onPullDownRefresh() {\n    console.log('pulldownrefresh');\n  },\n  onReachBottom() {\n    console.log('reachbottom');\n  },\n  onPageScroll(options) {\n    console.log('pagescroll', options);\n  }\n}\n```\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-` 就好了。\n\n`click` 事件对应与小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\njs 中要参照例子的写法，否则可能会出现问题\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filer code here\n});\n\nexport default App;\n```\n\n### {#inc this.$body}\n\n当前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n### {#if}\n\n与 Regular 语法一致。\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n### {#list}\n\n语法与 Regular 一致，注意不要对大型列表进行 list，否则容易出现性能问题。\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !show }\"></div>\n```\n\n### 性能优化\n\n官方文档里特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，因此对于数据更新，mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n收集 template 中，也即使 view 中用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以大大减少数据传输的数量。\n\n例如：\n\n```html\n<!-- regular template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将知道写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，即便时复杂的插值表达式，也可以利用这个方式将计算结果设置到对应的 `__holders` 上。模版中的 filer、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间时 50ms。这一个机制的实现与 mpvue 时类似的。\n\n在之前的一个版本中，buffer 加入了数据大小的限制，限制每个 setData 周期的数据大小，规避产生 setData 传递数据超过大小限制的问题。但目前已经将这个逻辑去除，因为计算数据大小并不精确，同时性能比较差。这就要求开发者在开发时注意数据大小，不频繁更新大量数据。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对更新到 view 数据进行了简化，但是有些情况下，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"dab9ffa90182a709c55eff3dcb47ef4b5417dd16","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-cNT8tohmTDZ0xPOegZdRPeGOabuWwzkJLvbCmJhwcp9a4s87Zr+xBkziNzWDNsPH/82veHC48tjtbLfGOAJhFg==","shasum":"47abfbea632c3d8ca0b9645d5f21a806199a16cd","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36-beta.1.tgz","fileCount":65,"unpackedSize":900788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMZiqCRA9TVsSAnZWagAApGkQAIav4AyppyrBEW109aQI\nutJpX41WXf9OWXXslaCLf84I814v1DOzF19RYlG4iX6h+0vx3/33f9w+Xblp\nZtpxZL/Tzo3evJ/57IbpPznH02n6Ok7FyxCyGqsAGZc/BLLRAsPprJT8y/pa\nkRDbZbuGMzKVAdOjWnxKm4cYvJy6ZJiwSSJJfnXCvFIEIH3iH/x75qg/h+oq\nhmSZdpEphWaoKx6ilY9BnCKYFIKYmNCwNjssqZiuiYo2szWrBm9Qt5xUAb+i\nwM+ua8mpKXxKTGD+vKCIPBnbNDX/YnpaL+/SxwgftvTlpJlVKPt/HivQtyou\nXgcASrGQ54bc3HXhm7z57tZDWltqER49WLh5Vp24HWotgQJvAjjMExkgE+gC\nxWSnaTK58NjtjML0HpvbNCkS2+qRcd33Jtjwgq54AX4uXkkugLyyqjzNVnHk\n5+F3VF2Y87gt2KGE/n4sR4+DBPGvW2yXJC+xPKlosFUd6wmfuEOeX39geqpX\ngvaKrwGF8Iw4exHhev5MXQNfvJ1tm/gBMcjEgD1QRBz2opbtUPxUSlMqimea\n1MFQHTIVa8tyLbLs1oZQHtgLfWBVSazS9JtbxFLQPm0cW8vj8Lpd85ylYT7G\nGpW4WYBARjvnnKSAQR64mvGRVdoam4TTCC7ZoiFcJYpDGz3bNv9A9KWtqBva\nulFp\r\n=couc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICJW09CP4Tbkh2cGkIf/t/Nzag2MfE+dfWpExbaTVv3pAiAteFEAu9SpWEkkpuPJE5mtb8UiyKgT2LbZCHR9BZ89DA=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36-beta.1_1529977002413_0.19298903219298658"},"_hasShrinkwrap":false},"0.0.36-beta.2":{"name":"mpregular","version":"0.0.36-beta.2","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## 模版\n\nhtml 元素和小程序元素不一样，regular 的模版和小程序模版页不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以直接在 regular 模版里面进行使用，对应的属性、事件名称都是一样的。\n\n## Page 生命周期\n\n每个 page 实例对应一个 Regular rootVM。\n\n2. onLoad\n1. config，regular\n4. init，regular 页面组件及各个子组件\n3. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n\b小程序的页面钩子函数可以直接在 Regular 页面实例当中进行调用。\n\n```javascript\nexport default {\n  type: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log(1, this.$mp.options);\n  },\n  init() {\n    console.log(2);\n  },\n  onLoad(options) {\n    console.log(3, options);\n  },\n  onReady() {\n    console.log(4);\n  },\n  onShow() {\n    console.log('show');\n  },\n  onHide() {\n    console.log('hide');\n  },\n  onPullDownRefresh() {\n    console.log('pulldownrefresh');\n  },\n  onReachBottom() {\n    console.log('reachbottom');\n  },\n  onPageScroll(options) {\n    console.log('pagescroll', options);\n  }\n}\n```\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-` 就好了。\n\n`click` 事件对应与小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\njs 中要参照例子的写法，否则可能会出现问题\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filer code here\n});\n\nexport default App;\n```\n\n### {#inc this.$body}\n\n当前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n### {#if}\n\n与 Regular 语法一致。\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n### {#list}\n\n语法与 Regular 一致，注意不要对大型列表进行 list，否则容易出现性能问题。\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !show }\"></div>\n```\n\n### 性能优化\n\n官方文档里特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，因此对于数据更新，mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n收集 template 中，也即使 view 中用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以大大减少数据传输的数量。\n\n例如：\n\n```html\n<!-- regular template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将知道写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，即便时复杂的插值表达式，也可以利用这个方式将计算结果设置到对应的 `__holders` 上。模版中的 filer、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间时 50ms。这一个机制的实现与 mpvue 时类似的。\n\n在之前的一个版本中，buffer 加入了数据大小的限制，限制每个 setData 周期的数据大小，规避产生 setData 传递数据超过大小限制的问题。但目前已经将这个逻辑去除，因为计算数据大小并不精确，同时性能比较差。这就要求开发者在开发时注意数据大小，不频繁更新大量数据。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对更新到 view 数据进行了简化，但是有些情况下，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"f47757e55a7ca366b89ef7ca6bc3498f4311bb22","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-XtFBtQ7kZGyIJObyGTc1Ecf9/bzwztKNFUiIMNLQZHwrKnbxIz4bmwt7aUzoiqV4TLUFdjSCKoImaUL5Tn6uYQ==","shasum":"7cc269b86b920a6bc2ef7232f89cba688529cb2b","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36-beta.2.tgz","fileCount":65,"unpackedSize":905231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMe2bCRA9TVsSAnZWagAA/rAP/0AvM5APOjNK6jQHsCyS\n7ZYp0spCujNBJj4XaNkkNo7o0Sj/NIjfQgRuxqakQVBhNoXH6x1+5f/6AtTy\nTpg5/UPrSkUjhLpnb6bDMgo4dynm2JKkpZVdU1Uqt0wpy1lZ4upV/BQ5Xr1n\nB16Fx3VcQxHxKUXZGywW9oX8STFIEuiGgcK2Jxozl9EE1qJqxaadvfj9fXkG\nKff7X6Nd1W9qNPpzCqPkvqFnrY1/5xAo7ahoKDd1G9tdAqLWLxakJAco7eQq\nDawWUDi69n3Wn21dRI5rr9YX0JbiU90sVZBEH3SpoTrPS8/tAJXzt2wrgDlv\nDQLL6mEiHSJFrCpTJ20HI0dTv1EqibDILIMIuqHNeh+Ms86ZKB0pnTBhi5ml\n/yL0ntmBBls9l/nh4ohpDGxZQtWVWniFScIa1yo8bplK9qT2n0vhSZQhxvFj\n+KaEWWGzoaQY+Nk07iU1Ib6YmKn7cJajp0GW4whQSNWzgtBvSYwLjB7TQMA5\n//08zFiSFX+ccm/Ew9puMbYQeuIOQYmLZ3BUlqmkkYXb270HFCMDkLD7uZd9\nRH15VLpSrNqsYNLEEOsT702BScyY6wE7Y/aS9fBx3ZVVXscYLTkreyzmxtrh\nNMwD3t2aQKx9IKtuRixjBOg12QQ4LSgbQgeFn+HJduQcUrHn8RmQUmfpWuFe\nlg69\r\n=lbva\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMznc0b51q8Y/oa1MWyu2SW64IXaDguwKs+HUax1DlNAIhAI2CrfigkbGbl9TxTHAnh25SIFbL07TSKXuQxMRDupns"}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36-beta.2_1529998747619_0.44893054187892356"},"_hasShrinkwrap":false},"0.0.36-beta.3":{"name":"mpregular","version":"0.0.36-beta.3","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接用 `RegularJS` 进行小程序开发，提升将原有 Regular 项目转化为小程序的效率，以及保证一致的开发体验。\n\n## 模版\n\nhtml 元素和小程序元素不一样，regular 的模版和小程序模版页不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以直接在 regular 模版里面进行使用，对应的属性、事件名称都是一样的。\n\n## Page 生命周期\n\n每个 page 实例对应一个 Regular rootVM。\n\n2. onLoad\n1. config，regular\n4. init，regular 页面组件及各个子组件\n3. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n\b小程序的页面钩子函数可以直接在 Regular 页面实例当中进行调用。\n\n```javascript\nexport default {\n  type: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log(1, this.$mp.options);\n  },\n  init() {\n    console.log(2);\n  },\n  onLoad(options) {\n    console.log(3, options);\n  },\n  onReady() {\n    console.log(4);\n  },\n  onShow() {\n    console.log('show');\n  },\n  onHide() {\n    console.log('hide');\n  },\n  onPullDownRefresh() {\n    console.log('pulldownrefresh');\n  },\n  onReachBottom() {\n    console.log('reachbottom');\n  },\n  onPageScroll(options) {\n    console.log('pagescroll', options);\n  }\n}\n```\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-` 就好了。\n\n`click` 事件对应与小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\njs 中要参照例子的写法，否则可能会出现问题\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filer code here\n});\n\nexport default App;\n```\n\n### {#inc this.$body}\n\n当前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n### {#if}\n\n与 Regular 语法一致。\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n### {#list}\n\n语法与 Regular 一致，注意不要对大型列表进行 list，否则容易出现性能问题。\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !show }\"></div>\n```\n\n### 性能优化\n\n官方文档里特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，因此对于数据更新，mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n收集 template 中，也即使 view 中用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以大大减少数据传输的数量。\n\n例如：\n\n```html\n<!-- regular template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将知道写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，即便时复杂的插值表达式，也可以利用这个方式将计算结果设置到对应的 `__holders` 上。模版中的 filer、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间时 50ms。这一个机制的实现与 mpvue 时类似的。\n\n在之前的一个版本中，buffer 加入了数据大小的限制，限制每个 setData 周期的数据大小，规避产生 setData 传递数据超过大小限制的问题。但目前已经将这个逻辑去除，因为计算数据大小并不精确，同时性能比较差。这就要求开发者在开发时注意数据大小，不频繁更新大量数据。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对更新到 view 数据进行了简化，但是有些情况下，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n\n","readmeFilename":"README.md","gitHead":"eb6f45ecb4b5515d15dfe264bffb5902959f5982","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36-beta.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-M6Dr25fswnMcIoIvAlfZHrXgiI2K4E3FbIojOw5uedGjoz1gdkyTKrGBJqEj5/ovujvPumeLdSIBZuhK660FpQ==","shasum":"76c5c5cd43af46b52310744bf2368cf87ce5ff5c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36-beta.3.tgz","fileCount":65,"unpackedSize":905708,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMfV+CRA9TVsSAnZWagAAdl8P/Ak/QQHYnvhZKH65MfMp\nkqV4bBxspGV+4VKT+RhmW05/1FddJ/Cip0ty/cFZXIcHr4do6XAG/b6+a336\n+PWE25NAgizy0AdpaOG0yR5g8EWxcrs2ey2byxvXKc1Afg7Xbu0wdJSaL/qG\n7ov95xdv9X2UaItw5HB8hTWgV9OnZDUbw+hD73EuN4sLOHZ5gDoaAj6X5hZl\nr/lJ7t2W8BiiZGV1em1uu9lI86YKhU2NBePEsKVkxck1K0z4YRPR3M6q8Z0X\nIdoTaxW/2YLzEGQFGgg481d7Ush2ce0wz5La2WSoNDifOQH5NpUGUDKoJYdG\n8Cbdwu7W+x/fDaaJy2Rth5rN8ZbnUquSvQ81UTxNZkXvr0e1TacEyFX1ClL2\nnEEhmGbaY3nDeg1W+R/LlOPqKUxFjatM1trn2CXmD3v7upba+qJH4OIaI3I+\nJZCpzZtQffydfXJbZUTEZNj4XxsULjZWQaHglBHMsntixs7mQCoxVxsonwie\nScsT3idQwPi89dZmD6Z8c7WPPQ02y61NHfnsqfOvGAdPHXTe8/zJ38e0kvJr\nudsI2BJ1xx76rnXZr+JoiVjqtFBgRR22mqecx6caWFahCdRANv2p6TF6s2Ii\nQA4cMDkNTtUBkWnp9T6n8owGorXhHCWC/S9ahhwLCmVuK+VlqxojWpBmo0kE\nPRd0\r\n=KcY8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA6O8nvkp5y/QUj4+nNJT4NE8r5WtToLeuPJEJbs9sZpAiEAxgo20FIeykiRRzioLBSLChVBqqIf6ln6u3+eXStS1xQ="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36-beta.3_1530000766784_0.7941442385457744"},"_hasShrinkwrap":false},"0.0.36-beta.4":{"name":"mpregular","version":"0.0.36-beta.4","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接使用 `RegularJS` 的语法和生态进行小程序开发，保证开发体验的一致性，同时提升 **web 应用**和**小程序应用**之间代码互相转换的效率。\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. onLoad\n2. config，regular\n4. init，regular 页面组件及各个子组件\n3. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  type: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"f66a8f48a179cd42f66308b2801ad0cdf43aa88c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36-beta.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-r9fHDX6O+vquDKMzp52/XaIjXb/dVI1cQChpNBXy9LrPD5yRsrALlDBrGWztlZsFQuJc3JykpBRtdy2+hcLObg==","shasum":"bc2404de834224f4dc78bf7fed2301ae2b63a339","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36-beta.4.tgz","fileCount":65,"unpackedSize":903741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbMjy/CRA9TVsSAnZWagAAqqAP/R95igZKCl+PMcoVr1SY\nD0yz3kDcTyp2LK+KgXY8R72YgqpW6/gQAMvO0oWMHikCgJdeuGQkCxH4esnO\nM872jqYOtDY8ZbmZmCm8B5P+FN9y+QLDbIpWLAZdNPkmTJoW2aXWJND+B5+B\n+Rg0/+Vq/J4EoPPp9YWQHx2joKp87YJ7yaucF3VGqfFznu4nVCIVu71VpQsU\nUBGB04U0BI37MZuz9wZ2E1sPsAgNE8XjtTzf+2Tf9J6SHBMiiZn4/wnhWk/k\n0r8zWXkXXQk4PRVyh3brbvfRNtLgOnL3/slYIqBAWD5jnBjsRrA2y4P/+xkF\nXClf7EwtjoB1Pb4ycUOnGQoiSbH9jwl+7cAQH79jkLAhwK3dNs85tWJxiF2X\nqcC6lPhvvPR1n507+5S3/U8tyOZvBJMozKqSDyAieuojWH6qMBgREFGm4BOJ\neewvrfBhNk5IdVwRW/nxmKNpa0AHS4u2vFBgapnc3YjJSyXF0L4e41bwLSeZ\nxFCq4Lwjod5k3iEjjcuLdVZSf+MZHtZ4xR7PMKaIQ8TCKG/am5yGiTo94bIP\nuR21BQoaPVDJOhKyF3/HwGtUESYengrt5azcZqjTH8/MH4WnSc57fKjMD7vw\nJA6JMyE25Ntgqk6B2HtwSxKltf+0G6i1yUxG9CKrYhNEN03vPnSnwwSeIiQ4\nIppn\r\n=FAjF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC7lyMDWGwU8IoUa+7CzEcoMkBoayoXdkC5aWzE+Z/ITAIgQwzls4d/n1czQbs1Vf8Z4GauW2agQHcNIjHCLuawFh8="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36-beta.4_1530019007634_0.555283533684281"},"_hasShrinkwrap":false},"0.0.36-beta.5":{"name":"mpregular","version":"0.0.36-beta.5","author":{"name":"leeluolee"},"description":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"[![regularjs](http://regularjs.github.io/image/regular-icon-100.png)](http://regularjs.github.io)\n\n# mpregular\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接使用 `RegularJS` 的语法和生态进行小程序开发，保证开发体验的一致性，同时提升 **web 应用**和**小程序应用**之间代码互相转换的效率。\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. onLoad\n2. config，regular\n4. init，regular 页面组件及各个子组件\n3. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  type: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"2dde9c222c85f7a5bd8b5294f3f613bc5cf25fb0","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36-beta.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-9xKABk18Dz98AJvhVZPPwpjTY4J+ptz/93ffck2PfqQtqAaChUNqdbm1Jb5hGGNePuh9v7Yl+R0RIp0tUpJfbA==","shasum":"3925fe493634770643c7b48c439e2785b08ff9ea","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36-beta.5.tgz","fileCount":63,"unpackedSize":905449,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbNKLICRA9TVsSAnZWagAAhSoP/jiA1dhgkci4HTxGfUSg\nKe8KyyPOSXJsSDCq1kWbV1hvbv/uzm7hRVhoGRwLU0qk4H1wmKogOBIk6DOp\neahBgIF6a9hOn8E9WDPgrCwIV6gJ/2+eS4JL6Rzac+nBHsMGtNkzCaf26Cva\nviuD7PQJZiPVo7yWw1YGBvu14I9u+UraQeP1Omd70G5DrUeLidXu/on0TboC\nSIGtghlOw5ZM2dxrNIjigHL0PYTtGtJBN3AUIa6/aHY7E9X+1IOJqHInu+H9\nGc7PoI2ZtcDRrMvwZfr4TPQn6O7r4XFz2NfNcgSJuVUSX+WRbAgJWOAkiuWg\n71pMyF6hqiFrrQRb/p5R/s+kbkUUH545U0/JR72jSEWIYxDSDjr41kP7xbHK\nB2Xytgu8dRltzblBj6hBXGlNLx6rt2SdEBoaM9y5AvCzQnaDjW6Xwr5a3HFl\nmlHMD5zro9rJjpPIdgogBXqkU/wLcM4IIAwpV6adOkAqs/LKyJBqcfXGTpCQ\na8meRZfJSKHPkZV123l8Oun+Xhlf92YJ1uqFHI1KydX9jdKODmqe/fT0ch/A\nOAINRF+JtUs4Nv2vNmZI+PPJ1w3YUyTMOSxDyQQX0U8cnOotcDynZNio5ich\n0xMDfOTEqfJD+VQ9czjnFEEopfRFu1slyHGqDLzygXY1uu98lex9z5o10Djd\n9ZMD\r\n=PHhf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClCPrBqNDWJNPn2m/VGTVrT4MGnsIxB55bIojreVG5ngIgDKuYQiegYXe5bp7WpazquBPw3jE98dOipfLwAG49laU="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36-beta.5_1530176200584_0.7238669404957208"},"_hasShrinkwrap":false},"0.0.36-beta.6":{"name":"mpregular","version":"0.0.36-beta.6","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架。可以直接使用 `RegularJS` 的语法和生态进行小程序开发，保证开发体验的一致性，同时提升 **web 应用**和**小程序应用**之间代码互相转换的效率。\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"2c53b90e8af974a67c3bdaa4a9903e765c8c41c7","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36-beta.6","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-G314D+or9XFstLpluPwYi490q84OvP9m6o+ROMlx6+9unp5zeDAs01nA4w5xOQ4GfVuLPczldPfS9H3WNCod+A==","shasum":"36947c25b187d587c92f67b72a3ebcd1f88e378c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36-beta.6.tgz","fileCount":63,"unpackedSize":907241,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbN2BFCRA9TVsSAnZWagAAEm4P/jFEyXMPy3+fay35mSjl\nQ1BiQHiFQMKI0qE7yoORJMAQob1IBojwXgVde6nnRzfjtWImeYntXQseARS7\nxXBgqjhO1buNVP7Hfv3qC+WNY+e4vF/YvabmTvoUIMByqq5CkwFgNeMa/kOM\nxYoRLcPG7BNXMdjb3gI2/ISE0OrD86zBJaGThNqmCgVe4eKdDo3ei1QTN4vU\nYF1ORXqcTcO1LV74BNP46FoGhFYl03BrttyGldNrbO1Z2pEEqer4M1vodSgo\nmxfRBuBW4QXmaFptbnD+dY7t8Z0b9M+cYqrMzrhVFRxN48tBZ4XrVgFwVJuV\nZH9dJq25DqdNJ1Ki9SNv1U39/+BlF2a16X0U7QA8AAR2C/B7ii7GJGOF6ACd\n8FAAE9zyjOcuAA/iBHOHKbrugA4pjxzw6ouhzIpYtCsXzEc8c82VhQogCaGu\niUa+twSqH1q9NafEkwCA+zQODVdb27Tg3PxQA0mIwh3lhs62Z6e/jBo5jCKh\nai8WuiPtnvm3Gslb3sf1u6MTouaDb/Z7dh3KPzi0ni0FRfGm2Sa6qSTSgaKK\ngXGu7/PcHrmMZmS6FqSvVymRPDG1LJAJUGiU+KEsMcFR4yA8fg+AeC17if2D\nZ3m4aeIXtpLVyg3rRq5xAn1NUygWtFu5xBzy1W4g85HQjXkK6Sno4kKobGrY\nBwvL\r\n=XrOV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdFy3jVpTMTt6aHPBcD9gitTnzaNGeUC/7jC8LGWxjRgIgKOljQl6EbIimZ4y/IoMJTdQc4rJg9/3yTGI+lGUbS3Y="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36-beta.6_1530355780929_0.7459837049597382"},"_hasShrinkwrap":false},"0.0.36":{"name":"mpregular","version":"0.0.36","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"d0f67f3c250f8984cbea7f4c99de02ec75c9e4c4","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.36","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-7FxYYBZ0hHuB9/POksM383riSu+NwrNSD4/WIUnpuo6L+3QJ3d4Yuw+ex7M5woEwx1xUcqjPDcUzJLQtxcCCsQ==","shasum":"dd9d743ac6971750c6a91bf14f8e432105b15621","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.36.tgz","fileCount":63,"unpackedSize":908516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOdVICRA9TVsSAnZWagAABJsP/0k8rV5UL0puhCjUt/A6\nEzwCozySqLipJfesydt71iV2lVnqrcJjtblJKVefwQ6MQd/xUxIf6vn6PydF\nqy8y95nNiOz1PQcb/Fn2i/XZjX+kbkuUh/6bwB7GPvqfowDE2klFjvU415iH\nGNfxGortPv98/7pDveA+ouaL2QxfGGOq2hl6yKEr42JcPVPOWQsqyj+aS8O4\nuHlLa2o9Qz/qtDM+peZLgzz0+91Smp4pNp/3qHv+C6vqW/1xo7eOa1YZVv3o\nKgEfmtXkHqs8xhNkXtq0q4XiUeRbqPZVpZF3otFqOK8AUnhDL90Fp0ovlKMr\nfQDQRwF637jvl3ti+kQg1Jv0yAcHfFUSR0Vc03mnGadmHV6MIFx4bmDfB1ql\nohRvuiq3nJwo65rBY6//JjM4HqTJwnuTmmL476u/5HcI5BVnxa9SrHa5+tNb\nWrSHnZSsOwerTm75VjnzUox4OhSnN79UVv+0HF+d4ZoIthGDWgGLEfGTVOSg\n011Gg3W5sNanNxMMz8487xQ7c//Q8edNN3tFhwyDyqWAmpL4U1/2ADv9JNu2\nxrITkotECWcZJRLSLHGnyaL7IRgSkd6c1BcjCluZQB4rlWquaCt2qpzp6rma\nIalS6qx9wEYPyEZzNns4Q5HF2PpCw6QzXPwNX09n3vmCbO1nCXMzr6jCJTSc\nfPoE\r\n=nuSx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1AAyHmNLH64uuL0b463NpjccI2sVdiz1TvTiJR7eLHAiBgORAZxSWc4GptQfiCAXXjno1HNseRFik17wIddJYXKA=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.36_1530516808105_0.17445407435097748"},"_hasShrinkwrap":false},"0.0.37":{"name":"mpregular","version":"0.0.37","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"359981ced435b2bc52c2640452cce85bc1763adf","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.37","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-5CNhgjusme72YOUSkuOW9++b9invl5LGBzM5z9yJeYyV90w6FkznpxM+CNO+odd79FgK9wVxaTZGoTUvoIzp7A==","shasum":"a68300cc4ab42749b70fb1c4c3fd05c798d1946c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.37.tgz","fileCount":63,"unpackedSize":908512,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbOifTCRA9TVsSAnZWagAA12YP/261+7x3PbK51bkSymmM\n4/bdmGjqvyoj9jNqKrG4Ap5qRPePKOnW0pRlhESpnnLLORYwB3dsMxpc2EB5\nhJxQokkbxBt6YnpNIWHfEDyd+TZEAVZGz7IWuC+/TbkdvHDxzDAHJ6KQD9Dp\nGEXKZ7yuo7tZfVKOfi8lh5qxv6TRZ+vg1mx4w7v/yVRj2LSL8YVYLth7vtTy\nrdouRUdr/1fvwe36Zgl/0zQ0/ZEsFFvId+hro48S7rJ7K77JA8aqB9bPC1Pn\nBBkheSBXVVdl2mU9WMxqhpv6fgGOEZCRL63cA1YmlMKstgKrIYCjdrMbApWp\nGhn4YpohOt6jgmG5ltdb4IQ8G3ZO7MVQSXF4/d9zTPBPfXO7co2YjiL4qnLp\nrdHfJqLXCmvJfsehqE16l0ErLQQCbl1zQby8hmHts2is2G7uYzLsdB8pOUAF\nkWR8RApbbVdgsy3QzbSEyzQWdk/rjrcYYJaP6XNcOJO807QjP1aJRqq+tUaY\nrOipXpNqm8ETKqE3yiZoKZ6IgRdMVGXsTud921/vPtWUYUqXhZlTEYe849xO\nnQGH1mls0CB3ELDJlqxCW7y1YySEajl6vjooL7AEyMCEvrKEBrfIyLIU9NRR\noOgWs/qQuJ8NpyXxVakyCWki7+ZuDG6zLPHsC/UVLaH3g60WzHoUklERJLzU\nNkJD\r\n=Kg3N\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA+SqfszIuoswXDIYUli1dm8lvFkfAeJbIFgRR5p775TAiAaHv72hmf2Ty9Q3kM6bmGy89QG+hUb2HEmeuqrhVGQOQ=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.37_1530537939589_0.900101065348087"},"_hasShrinkwrap":false},"0.0.38-beta.1":{"name":"mpregular","version":"0.0.38-beta.1","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"6cd3a0538832d520dd8057a924f2f3c10f5d0813","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.38-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-h0D8JOp8mRnuKzUKuiTx0aGBxAQfNoqiJVhSgnRHwueVZbHzAvCpezVjRZczAz9hga53frPAk/kzuhQrZqne6A==","shasum":"3faa9f45e859e6c56a6bebe8cd48cc0f7833772d","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.38-beta.1.tgz","fileCount":64,"unpackedSize":911713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbPhzCCRA9TVsSAnZWagAAQokP/0vTTJB+pXY68DUjrS1L\nUi75GV+xMfaQwOBhczl5HDJp7iHd1+XQVssbG+k0oEwExGJ8wIqnatpXU+Zb\n1JJboJbGxjxaLanT/jVEReZxYJSG0w5zbdxSAk3sTuuJD2pa8ip5bNSShXXV\nAhg7FIVGHxr3m3bCCU0Atr+VZ3kiF+ufwXN/5ohM5iyFqqpyd2UQI1WPU29T\nXiMewQRcolWLSx+APMt1MSWGrYn2k30FMsEhM9tsF9L/XsT249NddOTS1SFE\n85oNv/cVdiGf62UFQMrYa5IYX6hHLH5xGM0GN6Gz9PAXPc428DpG9YOCm+pn\nFLBTLKWE+SWoJ9TMnKoKyi0VrOOvuiibjE1Pestbus6vpaC8h4KEOC4yDDc2\nbQgRnLK6PnnC/zh2hzJ21a9pEWrl6ju5+ZLANBb9O3mlb/5z05c32KBliEMK\nExmaMDHr2gby8YGGJ2lik+UfyVQHdg7dyMHfyiq4afh5f+s/8FQPhhwZfb6E\nhJmbg0QCpoN1eZKMmPULTcNW+XVj6uT4okQ2CqgU2jbWFulgAmn4yGwkRskj\nKXGNRBSLGR1i6jgc6PRqDASrG6exUjgXZ4ZIiER/sRVG8f/1YI/cqcxZI3V+\nFVe3LLj35qMzhVsy8jm+CVprWxBaeKz/waH2gCgZcMpPzVvhIfcNGwdHofpO\n7GJL\r\n=VOvs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCJ7k+NzZsoBAtGJSOSDFeEdIrLeWHfX2xplhjMeVxpEQIhAIk6Ds9tymt3xAXD4IY6zrfLkuyGkoF+punfVX5DmVMC"}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.38-beta.1_1530797250593_0.27592818532466734"},"_hasShrinkwrap":false},"0.0.38-beta.2":{"name":"mpregular","version":"0.0.38-beta.2","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"6cd3a0538832d520dd8057a924f2f3c10f5d0813","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.38-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-lOmSKS6HxN9Y21WaodgquihP2247xr49HyKVCM56kCXc+FYMwfrECe3qlzBgx9sm9cd8oipRIp3T34q73fNeGA==","shasum":"42f9e811d59b4aea6426f1ca32538fb835ffdea0","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.38-beta.2.tgz","fileCount":64,"unpackedSize":911636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbPh0sCRA9TVsSAnZWagAAZi0P/3cwbqv8meiwHaBPf91F\ni28NTYgTLCt4FOURcEvDlY/nlNiC8ZRoyEdGviSonzYGPWOnXFsAnEJcGJAf\nE+9VzzcolovERCUaOn8YtwwNSzx17oyd2t5Jqm3oyi8zHAjvpLlZVB0bh/86\nRm8u/Iebd5KkFAPFmgBz3hSGieW4q3zdbPbhDh1yer8EiQsFVj52iBRyyGBe\nvXL+Wzuh5aNYnoVwrJiezTscFPTlMpRpwok+YqSHK3J/GAEEFUMbW1fiXo9T\nz9kNq3P2dp7ZnrKgx/HbJfUYVmKDVSo7KcGyQbYXF72O2/CXAjQeMsZTOuzL\nFRrlbqlWpHQKKIZhtAZLQxNMcEsggKxlQrD17dN9PbZu4i/00bKaC+/AJh3U\nzkl1d+gpogc/wyDSbE5xOqFb0x50QlKa1r92uWeseKhZQK7aEqx0lloO3sIS\nF6x0YNGs2GxtNLgBUsKS5lok/uIGvCNjmKEYND7nx/2Q2m4L7wZ/9j7XGSMl\nkyTI4XhUuUWc9RVfk3/QfIbWW2HYN7F6pJYsA6u2F71MPWnmNiaRimlZUcPp\nCSto8QHzzuvaF2wfdnnH7nsWEmiYHYoFdVvhTXKH5hnPRApi8QZ0HKQUoXTD\nech8NRP1NzaI/DtNYYoAVuZHugF3s8hhUwScvm8tLCiWeHFweKAhg6IXF/8j\ngV2C\r\n=xrhz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEVVRXuPxITemJOkMrKT/qKCVPW0iF3caelxtL8R8b1LAiAJ1xLombhclE+iFvybI6ceyEJHfqARrE9W7DByoWVFfw=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.38-beta.2_1530797356015_0.7443229893044006"},"_hasShrinkwrap":false},"0.0.38-beta.3":{"name":"mpregular","version":"0.0.38-beta.3","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"34f651462369aa009082f4ac2639a423a74c6820","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.38-beta.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-OLvBTLWagWey/dnmd+Su2h42Y0tdV6vpvxYipxwGOcAN+oF0Ahr9YiYbSxfyyFuEXfzB7Jagcg6uEHIrSMbMGw==","shasum":"aa64f8a0ce674ef1186a97c3ffc2b4f851683908","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.38-beta.3.tgz","fileCount":64,"unpackedSize":913077,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbP2haCRA9TVsSAnZWagAAoUUP/1iSrJLLsJNY4TeIXXDZ\n7lruMsQ+kLY0UW6TKg07I46PJP+L5Q+eXScYJkJsJRJSsNIx4xFW+tGB73Md\nN9Sc6o6mXpjQC4mh12Lg2s1LegP4AO7cLLFQb4Yz2tR0aZ5o8UJI4OHgN2bx\nbNDyEkme/KCsvZQe5aFJ/xLwyCUoGkfkrUMw8TmseJonWnmV00szIRfgbjKL\nrqbblCL4MSgHLmMPghFX1zAqK3afpvTllvHQ+pGiVqdycpa1g0tb1DMSo8UV\ngmXHJbNd2uOvVI3I+ej0q+Rje45NjshjXIMdkY9dE2BpKvXeBzM22JpcjjsP\nBrAgC+Vc1XzouNJ8T8a2g7iNm5S9or/H99CPOHx+0VQt8ZEa6XEhMg+aYrAp\nDDEKpaQz1UOkwh3X0pxL9pG9kyYyf7R7C/8/YqSEg7l4m2Csb1se+apDI9YJ\nc9TB/ibU7GPNlKaoaEd0Ol0AuO12lTr0kPsMU0RwVyUXr96SWLqx2zU/UWnk\nUqyrvMyinvQsg11a4DUorTl/RqTiiDxAxnZaJ9RmACPGimh+e7Y1hR+yfrlD\nqgq2yEl5UQE1+ZrTZZB1dyK9cqG149PuDEcn+vGHFhcbrXGT8qhhxhCNn6QA\naGxO3Lj8R6DIP67enaQynoLQFsMdYpSr+bW4k8zuXifGJHSJFa0llLxPBGQM\na/Ii\r\n=I706\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB5DWtllYpkRLH1cCqZEvxVIJwf0InAgO7GoqFnEW2WRAiEAx4lgUFD0y6wfgNO7kUc16gy4rHy+D0tuy65aX2oRk+I="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.38-beta.3_1530882137987_0.5261369871662116"},"_hasShrinkwrap":false},"0.0.38-beta.4":{"name":"mpregular","version":"0.0.38-beta.4","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"46630c19d7c0086a4042b54e27df364fc15cd268","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.38-beta.4","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-7aA8Zqy0k7xlVhy8A9IIJ8UYCBxI57GJ0oePWac6ZAShRR9YOA+oxtjCQMQqnpHqhU62zE8K593mZDYOM6Q7SA==","shasum":"0d76f9942a06bffca056d34c7de09e7abd4e4887","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.38-beta.4.tgz","fileCount":64,"unpackedSize":913071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbP2lVCRA9TVsSAnZWagAAhXoP/ivT6W+gF1ayo/Vb4FrL\ndkMxBgz26LQCBZIMekLj2RHYoQTi5SKTmRXd8PyHkDX1ft3Z6gEGziH7X+ac\n0Onpnm5Qm2Ca5cRkTMBiM9nyxBL+rjiXAprg8O3QHaT3QyYH0TUQh7MiLvI9\np6QXvIdS8m5M23QMRIk0SLDNcBZ0g1YujiY2OSTUFWLWgQ6bxl+ODLCpMNH3\ndMVHnc3cBIM7iYPyFaa9ajKE3gpXw7RsXlnc8A/ajmBSjSdFkCINbWAmYg+e\naoS9lYRScmYDsuS2+4hwFjIMosbJE/Tykqm2FRxQgAhLCYGuWMnlHGDw5bXE\nZ2auG+sCI0hJdt9m8clKXE04wEi1QPGqRow7ZTRpvmr4c01uEdNK5/C/gxVh\nPvg45B38j9hUh1JQFxI2rqgSHZYjjdJoDryS30CM8TYDxS4MlTPXUYukvRZ5\n4t7FxkUE3UCFanhEO04VKSWElGVnpUk1mm29ithSmIcfai7PZm7J0NR8Z12J\nHE16xbDpj18ngNGdRse1mlzt1NvHHANfkjfLDtip3jfdAbVnyj7eTOvtaqqS\nZcdm4Z+uyv35GFTtfGW5nlhL3pIGw/UNILk5ljEw57DF/MIidYYcc4C4fal6\n1+Yin/+OyQD+H+g5kojdWitBQagOQk3PFYv1HMgPnqwQ6/Pg3GplbGc02spp\nnwwL\r\n=+CV/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3uttECCfYw421U081xVX2Dzzhau7Ssu2mkfIJDHskdAiEArYWC5Yyhix2MNO2kYRbzeM1VTN65ri9/dgsjH6C9II0="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.38-beta.4_1530882389349_0.8164845832309047"},"_hasShrinkwrap":false},"0.0.38-beta.5":{"name":"mpregular","version":"0.0.38-beta.5","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"51e023bb451b688e1edbf0b2b3f4bf04968e139c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.38-beta.5","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-Q5Jh3XfzYpwrczTTAFAeiS3jpSXr1O/6F552kgqV2B0QhKiPo8B4sJTrBmX6BSScnloM6YkgDKWtjBgrvinKWQ==","shasum":"dabeea68b9035b93d4062101499928110daeca16","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.38-beta.5.tgz","fileCount":64,"unpackedSize":917339,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbRFl7CRA9TVsSAnZWagAAVHIP/1IDL0dXVBqK6+xkFL/m\nQ0jl7nAGuM39Ls7z+mZB2kiJAKaAyOMsFjaab5DOrmZxRrS7YakGfaNaEM2u\n5CXtrnHN8Dym392mJB9Q1Q8WWBTjFwH84OT0DnhC3az6z2zwl7HxgrMB+uTO\n1YDhLDqVT05adfMhUrSxFGwAJx0X7d/XLW/+HtsA//S8DupvDzFiTLsxiHLZ\nM55tjPBexdPatyDkqOskORqysmgCuW85tdj+wext8QWwXaJ58kuEsYZ93Zx7\nMo5YOiwZdSgYxw164bArkclSUiwLyHDFMufqhq++/jjFLd2nTQAO6if6/md9\nOLALw8aLwg4MBdP0tlORNBfstkSVG4+nUSaMizcxCEe2vcCIJQWxkmKr/JFq\n2vnQothh+t9poGqxMlAzIjhPCisjlZqQ6K+ChdoTIF3iUXn8nhZjODHYW3lI\nwMvGlsOq9miEOnP4ewVZXGerifIZ+lwlMvQmAeobSQwRojl2lqGYRw3SMpFh\nAvds3qnUY1F9yqCHf2gxlUOcFc7joFCSvF7IJ1gQkBXq7cteuyZcEVLYGy7o\nUOBDuXPG7PHNlbszIcKNI2IFW30C4UGpbTPDyn4b1o0FoWx+GUP8Ae7Evq8y\n6Ulq5qgo6svoHu3emU+7naZ44OWRXMivw3gbnFPLsndAzqCd5AKPWiJMtsX6\nOxtx\r\n=nkHk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWFiAbQWqwqsjob+P0oDD1hzNkOaAgNEzGGlModpnaFQIhAKBPWlMuq5GY6LBF7jI2ZN5YpYvXib5D33hLBQubVC0B"}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.38-beta.5_1531206011413_0.23856746708983634"},"_hasShrinkwrap":false},"0.0.38":{"name":"mpregular","version":"0.0.38","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"d5d181e370e76953a605c99defa20a770d049fc0","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.38","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-hbYZZbeaVt6tjSoW5tm40nWPX4kTUaSyPew4sLmo+ou0/vjomzyLH81CzhISq36/rHF5EsmhRnhNUeR0KJotLQ==","shasum":"38f332a8cac154acc43365dcfe6e6d2b71101ab2","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.38.tgz","fileCount":63,"unpackedSize":908692,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbRyBCCRA9TVsSAnZWagAA7lwP/0l0LGis3NDyOVwciyOt\nyQyzdxjyZ84v3xgKJlFDB/UR1LJTgPrxNPHpf6maAh7rvbObkZM7m/Kb5awP\neett48/PvyaRmDNAAFML8cEURRbYwznCiAXxs9BdWmbnv32lKI5VZAMP2zeV\nHemMnqU7ONgT5FMsFSieIDiTRnzt5anEjr4GVVS8hqKLhp5jry2jryO4pHpe\nS4sMS8t0WwBIwk1KFdUM3Lh8vOHP2VLuMtBBEOi5QKOKckvGUxzi8TJ5a7sn\nPvvd2cnV1RR3kMkDs6FL2Y97eZSunncS9kkFKHPR31xka7HaQd1QkqVrcR68\nULF3YLB1a1gz9fC83ratkPUL54QEaKicmbO053ku2yAeAGqWAp+sgJKJ6UY9\nRVbfOWOUa20Zj3nziSLNvbhVZCWpyzL2K+lozEwgoi+tce8cxSwB7BomJJe4\nviF5Cd0nve84mlfdkgB0eNeYmGF9a2VDbsfIsHv6rNmJ6l2aPkhOt1TQw3UO\nV/LbGuhx5FIV8s0faqeqHSyKBK3yfAHzGj8YiyB7CjK0U85UvUYAOFLZ9XEm\n+AoTfaR6v6TsQqdcDj9KCb66VGABLJGy/dEakL+DFEbeM2JU4MtOWkJRUmy4\nJ++5kii1oZlAT3M27UoPK/qK99XTshJpsjew8seL71Xj7CNGhrwXcoyq2BBo\nmndK\r\n=Xy8+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID8/y8VfORzD7lYRXVjiB80cnBWrx5eFTxotIERd4JOTAiB2X/o3iBGqZ091TpY7iFjFqlbn3Ov+RVUpi1jd1neJ8g=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.38_1531387970484_0.8885026838547001"},"_hasShrinkwrap":false},"0.0.39-beta.0":{"name":"mpregular","version":"0.0.39-beta.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"40465d90961e4837b59205a1682fe9fda0f00f66","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.39-beta.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-KxkV095zSj1fwFfLe/CpeP+JGSI3vl2RCxTo+cf/3x0HziVkpSOCWLYmD2r2GR/l7fNL+6HiO+X02UpgUfhrMw==","shasum":"b47b3eb57530b89d1da2ba3f862d0fb97b3511ec","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.39-beta.0.tgz","fileCount":63,"unpackedSize":909063,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbR1QpCRA9TVsSAnZWagAADusQAJRInskaU7QCoZ4+UhHB\nIkZKVRfUCzY0DDFgznw4LsE9bpqj8TEOS+dvVcNYH4jSJwPT/ZFvoS34XWyz\nlsmK5OC2Pl0emlaXSPDvI0sMs068myq5dSzhxUU5Mo9Z1/Jy0vM6mxEVvEwa\n5i/VYCzVEIuIubZyJlKTFH76POMCCP8dG+f6IgVtrokWj4LC7Nplla3+ykif\ndXQzinY+h3ZfsNQl9La7s2LU5ahk+fwFDyiGZgqwaW5Qt9ICJayJyX1oJrze\nm+a43ry+3WaF4dLWWlAvCo5FY68nSiSOde5QNopTO+eL+I0rqpptvffqI9Tq\n0yahh4v5BsUA2R4m2WUi+PpwWmKVSiW83lVMVFc70bOtxfcp6Hvgc/7AnaQx\ngVn9lzjWZLhcEj40d1ujmUk9wH3ooeM1t2RBlwHhUICD37LQfncer+WSoui3\nIfsXJfaRKVwgFidl+4NoXDvSmyMdEl4vdqS2uSYn5Er42qBweBayUJ4/yroO\nn3RoUczzHriZF/zqJ6oJ1F4LAWCvEJRgac3Co/WdzxDLEQFZ49V1WTjSIe4M\n/MNAcN/ujxYA8cpyqmj/XELAn5YHzYfGnAwV9KJC8vCk+ZavIjxtG6P/tZen\nlqntY8jo9UxEKB04u917qrZt3xkR6tkGqW7YkP8HoCrXlPlOhus9rQp15lg7\nU37q\r\n=c7x8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+hCFV6j6apEFexAftTNNKewvcAQkavvDZ8trFIazFzAiEAqR8bEpPpG/EhPA6sckOzAmJWGcKsIPf7sDmcbawtwvg="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.39-beta.0_1531401257918_0.83954737094291"},"_hasShrinkwrap":false},"0.0.39-beta.1":{"name":"mpregular","version":"0.0.39-beta.1","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"1e664789f869ad0ed1ffbae5772577e879088d62","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.39-beta.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-KOUu34ebccc9jSPQYWx9SeWxumOFfLGRn2ijDqJUAaiBVg9YAHCN8sGisx2A/mz1id/jwKGSIIsGS/oR7m2fUQ==","shasum":"4e2ca3b21711ea3cce3366c45e7d0db2ffb435a2","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.39-beta.1.tgz","fileCount":63,"unpackedSize":910028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbR2qWCRA9TVsSAnZWagAAMqUP/RpvVinve9EB8YEdbcPN\nds5AlIhErp0Rp3Ng55OFN6LY2dHJhO7z8tbwDIy7IwEeSIcPWK9I3NHqqIIk\nXEEzIsnOAt0AdIydxuJEa1I8o3P+gIQdF+Aewq3vTexc+nYv+vT9zHqnxGV7\nLynOmaSJcBDjDGjuIjH4UdlH37rvmPBM9azDVleRMlR/ztDi/alqT+R34Gpv\ni5Ln2bQLMBPqIXAp3ozYEw09Lnsza86IGG1O01dteuMUnnMQE0knAmFxjMfc\nrkGICac5MsTaWLeImEY8e75Haz0ZKfHgQQaWVA1+N08U7VT3ADPGVpvdbRvb\n0wrWsdf29yegUYwRos6km7FMh6Tzr7f9Vvg7Pg25/Rl3BMBqw328beAafEDX\n/XDrFTU/2OOOrNExixguPap7pq6wZuYuSedIOHcPIq6j5Xepie95CPTGxE4G\ngHk9tHHKeaCZ1It5pdKbi835V+TE5nN3ZTkLlbG/ED4CxLqMrXHjfN608Yva\napWL+cAbA1aRqeJbw3g27p1a58rDflzMuLSCHWxClO+zJGZUf+kzGE/urYZr\nR3rDukUfYRqer1SXLH1Pa3C1lWqxEWZjGMKwtdRDVp52wETqKcuanyiaX8jq\nccRDiD5nL3NYMHteDgw+xM6aYe2pItS53YLY4gJ5qJ+3bzEv1RRYjtMoU63D\njgla\r\n=8/E+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHO2CUqSR6XtyO08cedc69VMDaWwyGqZEBxnaoJ1S8+YAiAmw76kT6UkgCE42xLVIRVjihRudDiRCMF46DksbfyBeA=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.39-beta.1_1531406998530_0.7941642209551181"},"_hasShrinkwrap":false},"0.0.39-beta.2":{"name":"mpregular","version":"0.0.39-beta.2","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"c955c66585caba434573e611c2da03c406486971","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.39-beta.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-UDZcW2RRuJsU9tUsISoZzWd4ex+XLcpDTbHPn+tXJ3h35WNdHqVSykIoRyJzyZqVg1zVt9lJn37oR9YeGzn9zg==","shasum":"3d382db50f80a54c66c56837290fe7e3c07e0a5f","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.39-beta.2.tgz","fileCount":63,"unpackedSize":909924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbR2xiCRA9TVsSAnZWagAAmpIP/3pLYJWinOKhna/5ZGXE\nRwMJ270WIM8x/DJjDgC3RbZy6p/B7M34AxZvufzVo8ZFojsqFwzaHUZF2hKr\ndPFL6f6jg+HNejw5ukD8H36BU1JO3HVHXhb01Eqvm8f/CcLcu1uoiACqE2Lr\nPK8scgxuMu2Fx/qlzLIy33RjzHQP95Bn8YLYxrHz7znj8zSbm8jGH4h+PuFy\nJ+bfahku8BhhfE/QFnlAn5w3//UXpXeDliNWfc1eNkOdkZkcYRNGNmwvx2px\n4iWWLioW1l41LH7Rx/5f/bb7KHW4eXSD3alCuLHUVzXL0tDUVnJSp58TcNz2\noOl/Nyw61hStia3Lr3kXWiOryWjqlfXeWRYbDKjZramSMFcFmCXnGWqjmPgK\n0mcdhyiXKHsH+5vZzDCmoOdd5DO1aOs/r92wZBdVfL7DbyxeU/sOuWTu3IdR\nZXeRmkjmO1spO8VFjKVwH1dxNrC6BchFaokmHZaCEGigFO3KbgakZhiMPEkv\n7i/VE9SEHqVBDiOOblXBMgtrqEJHVVm2uNYQwm2FV/KNu+d2QXZO9qgHyp8E\nLg/4O95Pwwj9YiUu/RlRFnHV0fLWrS8ivnuyWw6Aer/8XJvxCuAh9xog1Eh+\npK9IxBY/2xHCL/jFiZq2cqi89zmKMi94/6Pcse+MeSupmjN2gARFHMXNNLPn\n+231\r\n=8Y61\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCgC/b++MKyqVIO8ayCV+EAPjQ641R6BQYGC1xwptVWnQIhANVbGH0syAXeQdfrocX9SvB4yoa03UKS5O1F4qtXC57c"}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.39-beta.2_1531407458529_0.14993264044710042"},"_hasShrinkwrap":false},"0.0.39-beta.3":{"name":"mpregular","version":"0.0.39-beta.3","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"5063fef317233a4d02d3e8d900e2e1803d7c4c6c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.39-beta.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-smXDeKII+eRQsrf/VWmUqC/cN2pIJCqtEu9zLmE6eV0ATdBkrwsTbroSIiPg+m74j8f0cTDDcxPp3sYv4kEH7A==","shasum":"493c7235e6b611e54ee48462013ba097f58e2d9c","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.39-beta.3.tgz","fileCount":64,"unpackedSize":915744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTDyjCRA9TVsSAnZWagAA9k4P/RCxyf0mXCjZcBBnDBM2\ncren+xJ6qOwscXnX6aaTzQ3U88dAzqM0+mARmcZjU2rjS40uEhvswz57lXKe\nLbfpftsdwABgaAiTBb3Y1lfuCwtTKjxCEIr/GilNlaiKzH2WiNbxBIWvR3U+\n1BqzxN/yi3ct+7ltlL2Az//dMEWT75UTNV/Eqod2PFHgqtKotqEauSZ9rg0Y\nlL6IXz9MifBQA6PvIG7mrdBRC/+9rD29VBj7O2M3AeM6SA5gI+x9U95X2A8/\nmteHuO2mMsZ17Irll5JRkAk8ARB7ToEgp633s/JCyMPdHRQw/dNcqpNIlTpL\nkeQh5j4DK2USzRKa3M6EZtnA1vtYa2E0/QQF5Q+GV8yTpscvcf1wcK4L1zw0\nUH3B9qlR+85jExZ3DP2KDWQEkvVU56ennZHRu0uHhpeViEWSduMlgOMxX4Ke\nsJEWiZBmiSjOZ2ClcKD7u0j/NeEx6KPcfY1Nhp5O4a2Sc9Nqgu+lJj6y3oyD\nFycP5u2Ul3bS4paRv91UXlB09B2+HS190B+qlVB5eQShbWBfUzxlq3Aruhip\nZ9rzROt4HqeaqSis8IZu0KMX+B5AmI94jFQBXtVeT6TLImhcNNJJLRx/JrL4\n4oPuqo4EGKhryhvr6Qk3g49m+XQBmwOZpVyY04QO6cOkuLSiSP0K/pspo2NN\nmwhQ\r\n=c+Sa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhW5TDI0ZXAnFfVtfw65gQ0UGpoI36dg6d/Jv9ijwZxwIgFzpROX7+lA21g/36eE2TzXrEoyoM3UHBfRVmA8ozeEM="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.39-beta.3_1531722915135_0.12138949148378919"},"_hasShrinkwrap":false},"0.0.40":{"name":"mpregular","version":"0.0.40","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"7a2a094cdc9b80ed5bae6c6dde66b72f3c2bda58","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.40","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-Ce3TVSDkT/OlD2fqh2QSKRrpp9BjlpdiDxL0tU9uz4MBQcqW2OCaDUvqGAjKfFPtSm95H3ZUfA2qeiHOTJ8qvA==","shasum":"68916c4bd0cf81a66980af82cad6c7cc1f646f8f","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.40.tgz","fileCount":64,"unpackedSize":915716,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTDzNCRA9TVsSAnZWagAAkTgP/30tSZJCeuile/AFMMYe\nSVwWMTImA6JgcqCW83iKlkhkN+KaDIR+3esR3jmw5pHqjH0ILwe2AYsD1ilr\nnQk+55XEfrRZAwQcpDGlSFtxv6Xi3IceOtiEH6DDkFs8IQpO8mbwqioDVh5K\njXZP1+4E9HGhbl4NOiwV1+dGNIf2NqOW9maD9dt4EM9JBTvd26nIEwuoqW2o\nKSI56CWCviDTm7bdUKprYdcNukxfjpcD9aBscOfou6lmKEoX+HNPVlQoBF6e\n/MzfexbO9toCnVucgY4mzU5zrFgFdStBXQTJw9/b+omWzalhGtQs2tNT6vdP\nSUuKc49r/jYMx+lmcSzw5wKWDSoohyk/hRANaZbZm1/sqZS+vCCcv2fjid1z\nk1uG6qS+QOpb5hz9N2fShZhnXJD27vJa+X+oJ18+iuh30UN0/pG9hMeJDXeh\nzc4bvsYL1kOPbGWW+a8QP4JVKjmXg0mideFDSYN6EaBWF8qn8W/5oIqISC1B\nZvRznQH4Qwfm/RzFagDRNTxUMcY3Lnlh1s7Kjcgfjfw78ttqxUeu22Gm4k5T\nR/paUyVlc0n/Vw7gS+IUu/77vzHxGz2djefqeP+rVTS/Ur3N065HfKU1PaXo\nTApXMa4dMRXqmV2TXplBKHogPnY/6hFixn0Z3vRFYJiC43oyoGXTgmbS6CYH\nyYsR\r\n=XBQ7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEH/MPHein7641vR7g4ZV7ie/Uj5YPYDfQgKEz2rFjORAiB1jf+Xn1FHUgs2eVWAYpMjuCT8FTDVd+eUJMB+IhL2aQ=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.40_1531722957202_0.8387742840321062"},"_hasShrinkwrap":false},"0.0.41":{"name":"mpregular","version":"0.0.41","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"d55a04df1c08464e088127241bd18b8e8469f440","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.0.41","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-uTj0n2MIH7b+HdDYXAuRyl6xfLBqyuUJvM+iO8MSR1wfUGuJRuJ2Suxt+Tr7MEbcJ6o/d1eKRKT2gTfpVI/hPw==","shasum":"3dc8cdd13ff515e525bc283c858a4e182c30c3e7","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.0.41.tgz","fileCount":64,"unpackedSize":915045,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbTIxzCRA9TVsSAnZWagAAOBIP/jz4YyqhOjw+XINqfcyY\n03qGeWtQFuCr/1gkyBbk6vw2jXsq5E9mj9NWrEzRSb7RiLR+udh+YcZNcjYG\np9dHOQXCYg5AzyBgKE54N94xQVFC1qyT4kMmX7Nn2XcGmIv4/DcLXmc5ta8m\nLDmq2SsJxcvualxIpCYHDt4CctCs++KbQuxuHjlRVjc5/TRNpvTTh42zMiPv\nR6S7XpBL+GXc+IKUN6buUcfNHfKro5vL3TB1xxw8wvDvGGkfzP1QWGXbQ+Xz\n7bnQxaMKYDZAXp8OHR5cOqN2XY/75WnWTOT7H1TJpXna/ZHbV/1FGPzKLM+X\neag6ZnBFZPDqMxbPc/QBQ5CP24fcQN/tglCf8MikHUQrIkqVeRBjj5MY2Oyt\nfLuuw0PQq55lH32wiRovkBrQDrAGU4VOodDvromqnBGcDSbYHb+MFi+hw/Qk\ncVIeMFwGFVE+Edx1p/PU0pfj3ZV4e7sYegfDZ8aJnydZJLTPlbwOUudCQwnU\nHmuYTQQULnHJqvGcb3n8Eq3kGJ9pIfHj0Z0hPiPi+3YV19M6ol/JZu8SIJ56\n1CfbQWcdOU6RNcrOJJYu2g7iqDj2OYg1v424BjfTp9B3IT6Zv4LGTHbbFXFi\nbVPzZPND3fd3WrtyYIEeeBlGWB1BoNOqvMhFJqyr9BgbVfH3WMdGEogpGO7r\nJWoK\r\n=5oCr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUY1CbaTS88oBhlkXlOanJHK7lWZ5bkWbzc+eH2KZ14AiBNkUrSAXV+y6Z026vmu5QkoKSlgji7j8rMgJqSf70zEg=="}]},"maintainers":[{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.0.41_1531743347176_0.6885082219551444"},"_hasShrinkwrap":false},"0.1.0-next.0":{"name":"mpregular","version":"0.1.0-next.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-style`，开发中\n- `r-class`，开发中\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"acdb888f76b24b3edfe17d742ca39524bcd0d568","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.0-next.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-M1hluvS/cBb9Ldys31ELjWrO7R42kpmxinBeTRnXFoCkx/k/fgSK5a1FmQNWaawoVyxiS2UATM7GImw5eartDw==","shasum":"0ec15ad40ba66fba1cca65316f2c8505ceea6fc2","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.0-next.0.tgz","fileCount":64,"unpackedSize":915247,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVV8sCRA9TVsSAnZWagAAcyIP/ieeHukwKr1ro0g8/Id5\nav2ruYYgYUP++cUgKgkvTjD0BCSeJdSP1XIzg03dnLiWMlkRA+Zh45CK0IjM\nv9V+U+DM7AqIHdgUO7ttnjdA3sogL8doN2ZYZ1mbmv0AEhjNunnK07qH86vn\nCX0T/wLej7uDTbPray/tW35pSx50ED/Y+oHyN7LmHQMMsGWVTub/yHiJVkSd\nfPkRSI+Vu/pAsiILYb7/iK267BKJKLYGAq681DT9mKw3y7aUgxxBUim3lfNa\nA/LMacBLGDXkYK82ABqIMT7YxG9ZNb1zkpTwiy6X8Xm7ltzsbr76QLgZMoQ8\nDl0G4kD8XTvLDK211lG7a0VqwxwG/n4fqv+JlwA6jLb3wS/chWV8Q6RQrV3d\nCryAVJMt+p+19i4zbCX/EPoUjybeKpzecpXngPAXtkaElsmAMa6xoY10EtgL\nvAhCDOGeQZbaz+bmXPcJEi/icQdc0sMV/lZZDVZ5XzLupETgtVPlk+0XMxdW\n0z6Z2jJp2SBIF0tES4wUqZpirDCFR/sjfoedVVXX+RLDyFNKXG4cW+RbpEPr\nzIy/L/An9nfvcDsZArssaUmo2tI/NFF4p0yqMfaKH3OlYNv/os36InNfIAqd\nSAe5Cb9oYl7PNTcc658rxhAiGgp65wn9J+QcDBJy/MMPvm6YRQxWiWlf6plK\nYXXP\r\n=CsoR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGsB1KezLr23rA6p0bkkz5PzhNpo7DWWkM4njRv/R5iAiAGENZpqFArWiZ54tM+I5r+JaXl3yVsugBOzJyliMrOog=="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.0-next.0_1532321580051_0.5521162006549094"},"_hasShrinkwrap":false},"0.1.0":{"name":"mpregular","version":"0.1.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"5ffa3d551e432ded0417fd8aa85ae0b8585fedde","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-oHjoOLEA2fdd6SE3u/G8WfXNUzB9CiZaGU5/ExPlU1RrTgB8B50VNRBxwWLfABfz976M2IUuSiEIXRUYuBimKA==","shasum":"09a55205fa15d82868b6f3c364e3ad39de338045","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.0.tgz","fileCount":64,"unpackedSize":915219,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVWB9CRA9TVsSAnZWagAAQRYQAIxetqg5ri4ipebx3342\nhyOXTjTS/pXmlE9mI7V9S7IozHi/eYGwVtXwDTwxc7n2M6Xkh3FTGgHXrUJ+\n1TnDw8IsALWsBSlRdi4zyGFk2khUVR7e0jRGdFWpDJhTwJOUdciY0LjsBIBJ\nXR0EiTvaa3ZAzap6QiIut9pwIOgj0SYjdPrOp3N0awQvyjsAaNnBeCQTMZxV\nREE4Qoe9J2BwMd342ibclCGZk8F58QM8TvwW41VxP60imA2Gqjo4nAVt1mQx\nLzWddx7nmlVMAgciLQaw9WS4cUphjPv6Em4KUwS0R0ZuDPPReEt3p6+AdUem\niEwwihQHv5lv7GIiWjI/TvzEnyOSv8pHkpreLgG5djqJAINaxy4Dynzj8n4X\nuDItPIWSetkkXlu3Ihy7ETQsyW/2ohXe8JoBDplawvK23bB5i+9lkGq8Fjr1\nmKUdK5B8+ZJzR/zybH/OFOXJje2DhRRuTP3jxe8Gm7X39CBIkguQ11g7+F/0\nA3JhnfDmsMzngdDIrkbipzeChx0q1Nay+zQ0TtqNbPlS9iA/Y/zxe60PNGPw\n4XTR3wKIXSUiEagcoU1TamJA8goDCeuOjYioMfMiuAsMxAPt4zLmcmgoabzI\nsA05P3TwRAmaXpjG0kW7FXR5qdQcv2xTVhCppVeQFc2zFPunJDwFCfngXGOF\n5xOJ\r\n=6g57\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCj0bBKtkYx8bvtrccxCNlpfSUIuB0ZUYHHno6jGpj5GwIhAL68YhFMN06xYtigCFJ2ndvkLhbWH3ruget35Z26wfOM"}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.0_1532321917325_0.4842592365844298"},"_hasShrinkwrap":false},"0.1.1":{"name":"mpregular","version":"0.1.1","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"83520833f1e95aaf0a24e498fd3e1a2818b68e14","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.1","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-u7fvOF+NCq0xGU2mDCOKX01tCwf31bji5YaBacYf2J2WA5K/XAskxUppbnYfUCNed0jUu/C9wgTW0f050S3msA==","shasum":"35d702c44985f4b469dc277357e5d2b96764e5e3","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.1.tgz","fileCount":64,"unpackedSize":915324,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVdrECRA9TVsSAnZWagAAySAQAIkPWxcc2QQL3ZpvX3Ff\nKMKDylXkQyICKeUe+zamx2VzvKEElKj+S/ylKp+Sp5gwsdBdy1oYhQ3YnmaU\nYR/OdEHBvmhLRKTrGBPm7KRsGSrhqbys77RkB2pGfBmCQRAXz/SscXscpWF0\nKeZ6ADi7ZGU9PxILYtD70de+/zEq+MgWeM2M0kxXQaPq++p+K/aZhe9UvFz6\nYhTErotFadrYguNN4Z7M0WPHIhF/Xp6mWnIpN6T222PicHZ5FfaV7FNMu7kX\nxm/SL/hQQ/B8otyPHHOvPsg13X2aXWqABl3xp/iwjFXbHe2jsEfvgPWcr5Sb\n3Y2HmnU1slF3aFW1EsFqD65am/MLo2kRMpwKf2bZUBdUjAzJR7aQND6EFsCU\nM+i+2GIPZW0iVsZfY8/+fiLSP9TGohyytl4/wwMzz9B8bxj3PRkA1c1mNiba\n1rgotnewLPptOWicsAkWGJuJ2KqujoP70WqWLqow9D8Hof+ZoY8seY0OdJSb\nn5w1N1Vk59WoRkSRPnIrUuRhespt+7+llyYZlizzYkueL8uI1lfU9cZ0gKxe\n02ddyEMCB/VhK+opLtOvNxYogQYCt621KHGUF8iU998dYgfbXzYwqhrbkBqH\nykBZh137j/2mtkDBtabdTA5PZHycCJkyAJHtxCRrqm7jXmEItx1mKBYuwpG3\nHUcn\r\n=2Day\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFgAoq49CExZBX65Xm3dtWpToD1JPLSMgy0w66O0YKlBAiBP6Or8hxCjhRmTv+8zu1MXO6eqnqSS6JvqK1g/6Ay2ew=="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.1_1532353220433_0.042747085948382724"},"_hasShrinkwrap":false},"0.1.2":{"name":"mpregular","version":"0.1.2","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"cfd67843e058f3ca69031d3ef8d8d10d8446b533","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.2","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-mf0SfOnDyyra/FeVtxlkbhqDPtLrJ+i75/6RR8hdXRUgSTncvR9Byve8sPvJjvT0OQY7Q5r8tTPvw1hzGFYHXg==","shasum":"765d72a294b649bd8c4e5f9689460407e221b1c8","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.2.tgz","fileCount":64,"unpackedSize":916695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbVrG4CRA9TVsSAnZWagAA+qAP/0o2rVape7M3zLiVOzyF\nmw8bTY60BnXvotwRg5cIUh/3CN50tqaNTBB62VWBSKztX7GeKPlv/eLuM/ox\nbRk0m1CI80VubXNnb2jUKMyGubjg+sdzDe8AXale0aZsR+l3/nWUEzwvmbqI\ndYIHShmLpYkGdJcFqpDv+joGGzbH42jo4IpAUMR5vZMjnn8XuO8kGiKyI/X5\n+GDROJtZ3OdmkNO2EYbrYT6zrrSIjqaq7M1gouwh4y+1HtkcyEKv4Uf0BkdA\nAVFHvX/PQ+QNFj1OqKmcR6oHAFOOvWo4/UYLcVIJTNrq7mitIVM4yx2vrHMN\nWZFNIddSErBk5sXdBrl/WUKXomym/T2tAr9nogq8hZDMAyScXYduefSbZkXj\nZCPbMjGtpjRyWp3KXI0F1pUT+mofOPKjKDXZCrMQJqnZcRDz+52fzODqsuAJ\nR/aU9IlwCAc082JeGKxdzwLPHmSPWe2f2FkoJcs/Md9uv7cG7lriVVLcq263\nL4Wkq+z6VBe7JIAcVcIY7mroVEIYrPT9j6AQhf/SzZxWmbtpY6tZ6+7r3eda\no7gZm78Vo5okZxi4+ppBCoopjAAUJVRqOZnWeNr9Ll+LXJRfCPGpBFBE9A/H\n/Z3ykLOf32+AVENtr3dwLSIEdGZtqx6PjZPMP9MGX1Q/Ydgq+s8ufpVDTubq\n/aqU\r\n=0egc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUno2jJRT9AcjqB+GMVT7e+UHnwd5a9P12pSGkCi2pLQIhAOtETn3HsDzfRYm65fkwF/CTCY/h4It7a7Ka//fTRaW6"}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.2_1532408248659_0.32387051514892473"},"_hasShrinkwrap":false},"0.1.3-next.0":{"name":"mpregular","version":"0.1.3-next.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n#### r-style\n\n```html\n<div r-style=\"{{ height: '30px' }}\"></div>\n```\n\n#### r-class\n\n```html\n<button r-class=\"{{ rounded: isRounded }}\"></button>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"56940a145ab68297ebc608ab434b1f70561e9b3e","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.3-next.0","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"chenxinle","email":"chenxinlewadee@126.com"},"dist":{"integrity":"sha512-s9KBISLdN8gxM4TxH7HdJtPn7DWIBQmcmTIEUt2XkVFELL0O4gsl1Ryoy48cgktsBsTJKfLLQ0BWOKoQdV//Ug==","shasum":"089d629739be5bd8499f139a34b496d8dab3c53e","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.3-next.0.tgz","fileCount":73,"unpackedSize":959375,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYIW2CRA9TVsSAnZWagAAwVcQAJAWkIaoGtCWgZXv8MRB\nrGgd9Otttpqx12MvQFGodY2bXUmVg+Pex0AR1d0jnIdP8RvacEmdim35F/Z0\nZ02ju46x6IulAYqwc230a1XZVveuxAPQbpHniQwCJdPCUCESmaqBGgP6nYpE\nnaWXuUehE9r5Vly+Nff2bJj8yqKfjuFzgHq8S9PUUhnRl10bLmAU9vmcmkiu\nzcZSkeB1rJ5LaqH5mxAgAEaVr93XpQo4L0wjk0Ta6Ll4x7WrN/MKWDDc3hys\nU6HPdMa6ohnjfWboNC0XBwwqFVJgorwId7pd24H9496s+8pgk070NuDhjpLH\nYMWc56G9pMb01rEVNAYMQmV1zr5UTjsazeqsVjG3QXMkNJsGcxVSxckWtZ6C\nP/zo0yUDRb2zdDIfFuhtxDeF72sXYmcHQy+/UFwFI/RbbrOrw30jJSnzIv7f\nwKo2bLNxUrL56BPukOGKlLcX42W0ZGcWmmYQXEAW6Kvl586ejAZwCXQ1ydxK\ntcpIiGikVVlBtVvMP6KJi7CDRu3f/ai4KVz+rB4YYoSxt7pnFpmtRUuQcwox\n9yD1FljpuFCGnXfM6qMvba/jw+3S2ywPrNGbdpBlIgWmcLNPzWWVNMf/ekR2\nnCF7ViD2dPelHI0ayCQORWQjmw45eRwJlIf9cOJ+9luUNuTQTEeIVWQ5ORsO\nNuad\r\n=WvI0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICvYMO1TS9cKrVJKC23mMLjhYLC7JeYR/f6DSel5RvgmAiB/zYEMSKTSG8aRGofnFTe4ppKZRNWCE7kxtTq7B/4ivw=="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.3-next.0_1533052342809_0.1704867022481411"},"_hasShrinkwrap":false},"0.1.3":{"name":"mpregular","version":"0.1.3","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"d808bf63d1c12010969dba93c2e870dadf32f380","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.3","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-BebW81EFGP5ZG9XMiRvi4pe9mnA4kp7yI2z251+A9XVZZOqJh40MoETCBhD1E6eUmph8Dm/K9i9whgVXvqag0Q==","shasum":"6d20476ed90e26a273a6bfffa6a862be1faab6b2","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.3.tgz","fileCount":64,"unpackedSize":916755,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYWw6CRA9TVsSAnZWagAAk6gP/009vDzXaFs+d+tuv9cv\n4VF4xgYxdKhX9fNMDRMB+b5gP8svP2gUj6hcHqlNAZR2jZicn07fUPQ3M4ra\n/jIkf39MP1YMXxTAZyC4wD5g156h456AebxLfx0CRDcU3lAE22QC/rSY7VuG\nWzBgZZyHER9tmvuoTUXNi9SoF6tjOclI8T+D0Pmz1gVGzBtacJehpjJdr3yg\nIKG3AyMXxuTFOmreQ6vYnISbmR/SabdUZk8qBoplkJv6p5mIWhkKJ/PhT0RJ\nTvnz61DuY9w8k+4UNbU3lVmY7NUPUPTyVhNJXBNhsEIXCU990oNCZBUicXGZ\nBkt/t4ET1U7I5fqHlrwWSVpoL7Lw0zJVAC+o/uHU8ZIQM9KqEfF4zcRg2jWX\nZupkyfoLBSR5OYc8Qdd6doMbouCXH0sFJdYBBLtRO0VLtvZewFxKwFu/TN/7\npq7ytAIhTw/KAvFnPI48KfpQ+R1FZp6RDWkJtthPr5PDDkiLLiufWWpF8ghV\nN8K8lYIRe4ne8+wrL7pNbgRTmUYvSpoaZP8M9EvuFOJ4yrUvH/3X2gNMLFj6\nyptm3hQGpmu+6w93XqMR9sV0EaEquTXbh7KHY7I/lZb+SWSDVCs5I4KhrHHZ\n+xdSSxpjpqHOe7/UpWfV3fqI/ju1OJIEcpN3ihhFw0bsinwVp1yMKP/W4M2j\nX/2H\r\n=fUSZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC79dulxnbkmCnlE1ToK+EZIlFLU8Yi9wiBhpB9atZ2OgIgXk/ys2qO0AW6fiuMzehnts5VDPNeYJgxvGbxWBGdwTw="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.3_1533111354170_0.7793331287706753"},"_hasShrinkwrap":false},"0.2.0-next.0":{"name":"mpregular","version":"0.2.0-next.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n#### r-style\n\n```html\n<div r-style=\"{{ height: '30px' }}\"></div>\n```\n\n#### r-class\n\n```html\n<button r-class=\"{{ rounded: isRounded }}\"></button>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"69dcadd64ba5fc43c1deb05d884fb8bef6f63e33","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.2.0-next.0","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"chenxinle","email":"chenxinlewadee@126.com"},"dist":{"integrity":"sha512-HCm7Y83q7JY/831RpJ2r38v4gHbw5uPBaTNnx7FReODJF8wW3JhPl7pKoD2Di5U2kk7eA4YM4/U+nuE3oliJPQ==","shasum":"764bce138aa69ce9d3a8cccfd9dd54eaa30ac9c8","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.2.0-next.0.tgz","fileCount":73,"unpackedSize":960784,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbYqp3CRA9TVsSAnZWagAAjTwQAJBhurSf6624UL5upUD8\nYLcLRgPKl5dfU8b9dQXD1qPVRe6QINg3tQbHE8PLiaStYUx0WeF8XJSjAuO6\nF8A8SpZL4d1AeKvskNmzhJNRqtqzeK3U4x8vDW7KWu47AWgp/mfgA8u3D5Qc\ntSFg5PCoeL27OUGWOPNFe7OphJmP66a4vNMuY+sSeWPO2NCX77VjiMgzzrbe\nPx3DIgF2RlkYQs46haa9vp+QPpzNGex49JTtSWi/bYNz2sve+/BZBYBMgn1P\nh3wmKtGo4LktW2WIfyrhV4EuDTiG1uKqbDJ4VyvX4OwneAw/o8dUPjwQ7eZo\nh3l/kE+dNok6+8WqpHy7THDT6ur4EtBKvxLLH7r+4f/W/KTMDQwR+D9x3SWY\n0YqSD5eJ7hZZmS+slR1hQRt8eqyGmeWV0VI6Ltmag/nneo0n26M88OSuN+Ox\n793ORUOlTUlb7/ddgMuwaDna2XbLvrLSHzZx+TEL0IODT3ZYmRn9NPF+EfP9\nmckcbWIw+CT6kwHr6/nTN03Em/TCw7KdkYwiUSRDOToBSEvh2GwV+andOh3O\nd6/J9O3eTq2TZcXW5xrVkw5wPsWh9dYrxaX+vAwehyFHhuJiDyy8xFRCdDD5\nyACvCaIFmOcV84Kgg7cmfZwr6puF5u7KRBfBCQJ1PvO5frUgy+KDZrxdpyz3\n8SnQ\r\n=/d23\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcFFI8XAHRJY459TXJihj9N5s0HjgcmIim17RyyEcjmAIgJc34chP6i8AYb4CjRRueUYpzzsLezQ5+vC1/iOGAIQA="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.2.0-next.0_1533192822449_0.049407905193616264"},"_hasShrinkwrap":false},"0.1.4":{"name":"mpregular","version":"0.1.4","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"a5e733a532470ce0df2a105e38c45d53f88a1765","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.4","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"chenxinle","email":"chenxinlewadee@126.com"},"dist":{"integrity":"sha512-382nUaXSn/aKub8YCoWHp0g8gOQXE+PF6aL/svwwz9sumHbXnpXjzZmW2iAEsDQUVV2Yqbb3Nnm2YT5/B2WMug==","shasum":"f64016531da23a184c47ce45c7e3e4a9ac9322ab","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.4.tgz","fileCount":73,"unpackedSize":955635,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJba7iMCRA9TVsSAnZWagAA/60P/j9NkaFG3OlTLv1ZYKHs\nsvuGHPdQJB2huuVaQ0Uk5I6w4v9ZfkmINRCHVmCZeivXUE761H71spddGyzM\nevhslStztbUuyNdIVZyLdQ23NMQNPahsgMDQ3frFzaGxRdLFZupXZnvedmp4\nQ33KXcUjZb3ZtY2LhALY7WURmnry+1b7NUOyyhARqIWk8lJM8Dw2SfpW/NWV\nWpx4QUNqnJMuxNFM7THnmAJDy83n+VG1mywlpNxjMqdmriSmyM5/Dw1M5zdc\nl1G080TVNSE4oaF7RC1mhYeZYDOWPjs1r6GqxykCfR7Jsk/OtRiszCbqnyQ4\n0cWaqi9QVRhoviANioF4G50CMGq3aOAZ7VZbKbssv5ZqcQ6K+yUc/eDTkfXJ\n3czkKZFibzxqchh4BbVSveeyu2TjiUMizLtuIH5EN39fjc1rFTqG6lNGv8Fk\nz1keEW8rKgK4Dz4Pd/L9sjN4TI/xp9AvywTiHDVpdhBnM26tU81lGYD1DPjP\nCpitugKDIGJzuXzpV+SOj/bIRJtYLeNe22hTmdikHQenIqogyBiPqfpW5P4x\n41QDJMUMqmHQS6a/tJJ76kPW1IRSGW3Z+owRoNAV8vfShajCDJyaXLeWyOIV\noeLH9jfAO3oaPLWDmQ7L7W71Nf8LF4siDlhwR//BTqxv/9HuZjX2LJyh9paw\nmnMx\r\n=tLpt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC68EY9kTg14upkRS6K+wlC0b9dfN7XvoZLcp/mdXEB/gIhAJAiYtEJMCHw/ZBpL2xuysRKezAqfEGo7Cg6Oyt6AnaA"}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.4_1533786251622_0.5191157520537635"},"_hasShrinkwrap":false},"0.1.5":{"name":"mpregular","version":"0.1.5","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"23dcf1d06d102448a7f821fc61e5c9236e7e678b","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.5","_npmVersion":"6.1.0","_nodeVersion":"10.3.0","_npmUser":{"name":"chenxinle","email":"chenxinlewadee@126.com"},"dist":{"integrity":"sha512-wACZ/2Z3ohqkcaYND52wf0Sx1IiiD7Pf3Ty6esHsRBTKy80SPbCt3ceugCSfW5YVasgl457Wmi3dMTlCyOCEsw==","shasum":"29134236e4a9304546ee105d4560c8f59e5cc1b1","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.5.tgz","fileCount":73,"unpackedSize":955611,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJba+zMCRA9TVsSAnZWagAAgO8P/iMY5Tp18mVkkuEoO/uX\nYTT01cn2OU+pZd55EDcvZE/5uLSvxRQ3R5NFpPlTR3kJE2tUeOugq3oj+CNJ\n+Lg+ej+kSy/q74Q/pl6fMNq0UjFiGosnq+d2Fna0ZgO+xvNsOnLcRrZTA489\n6xSC1j0fPhEv22md95tbXfmtO9vIm7MimZ7knssRGt85AJbh6oKPJmX2GtoQ\nAoTUcvYI6avxo5ioLptcaOLMt7nwFyrPlYqRSs9xSi/Dm1coyQDkUxjqe9f+\nKoIxUVkVai/vjhTMrE9AKVf5eTQvRU/Bdv/fVW/jt4cjIB6an7Daq8tesfmF\nxqI0LNfBqgEUWyRkv0SaduOqoJ+sroQJwtYNC/fl79omM+OJzPiMun9PZ7bi\n8p813EdHSE38UTL9EVr/hJU+A/GBfZE4gxAalITe2d2l/blkQnhVCBtcHj26\n/i8911fA9yis4UV2+G3wjJgX+Bnw2yzlBdJAMqznXz6UHZY2GjnLqS+qhzyg\nCkRgXfn544JXa4XKbIscSfdbRHKXsO37z6t8Y0OMi625ojVaBigG0quiC+g2\n2UIoXJQgIdOqsP7hb2DL/Xw+ym9WV1NhAAFPF+bAl1+CCmc4C1hIYe9e/C06\n0lNww3nXifDkyQhxDOFM7yc5AhxlF8jKNhpUnLBZxqiVwZ5BSj90Ka4vJzFO\naopN\r\n=9tp2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcaDqRZqw+FWqKRuLdvuJ6k+mqpnj1VbR8AX/58ceo4gIhAIL9AfU2eXgmOPXRVkREA9BFqMrfh9fH+8LUsVnOyJBP"}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.5_1533799627591_0.6957499011518087"},"_hasShrinkwrap":false},"0.1.6":{"name":"mpregular","version":"0.1.6","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"watch":"gulp watch","watch:build":"gulp watch:build","test":"gulp travis --phantomjs","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"expect.js":"~0.3.1","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","karma":"^1.3.0","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","mocha":"~1.18.2","run-sequence":"^1.2.2","through2":"~0.4.1","yargs":"^3.26.0"},"gitHead":"ea18facea35d1907a980773bf76062d33bd225b1","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.6","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"fengzilong","email":"fengzilong1992@gmail.com"},"dist":{"integrity":"sha512-HlcKJNLKRQs7J3Q+6sYX7nKVhArxRDIZlY6W0GjhI7CTvRW6UWDTDFOAL0eN4RikYxJsgmmdhhJc3LLmREqx+w==","shasum":"a8aa04ce6ec141895d7e35eb78cd2a6298c6c8ec","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.6.tgz","fileCount":64,"unpackedSize":917743,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbf9C1CRA9TVsSAnZWagAAEqkQAKHaDrM1KpJ8EeTXeMZP\nHIv/8iyecaCAUPQYX5IwKzXIjPX5hYsIMtcIMT59PP3jAZdGik5gylNUv5wx\nAVgoOnDhR+dTfql0B6kB7AkTFThjiCL4tsvP242hDfBF8XqFTuVtgXcJ5bTP\nQPhWHw/GlNSJkmkEqXTRQtZhfTyl2dj9dr7RXe4grA6Ujh41GLsTVEKqKuk5\nyCgOSZt1F62xW1SgXJrbkBzheiz/ULwu9jHhkOhypvH3udnVGPoKOX/uSrl+\nmbuJz8NGzIwsBEHgKhy5XRM6+U6gC2+0Y/tJHb3anGZwIlvfvnjfAtOgFdBx\ncT5zrX6ymcf1NCQi+IUYwo8VzTsQF18Qznnqi7GKZuLXQ2o3hlMtFJz2hIwi\nm8k0/SzrNxyE9+TGv2BmibkiDK0ziDuCm1VCd58RMAua7uJzsb9EwRzWLaMh\nKUbFSzQe2xjbluSjYzwa6hZ3XQXeV5Ow0PRuQSAEYNqpY214MFTJXfNEOKMu\nTPrgwI9hjWTNgAIURqKN1ZCuPL3VWw2KrgXM5ej67ZQl1Wn7m6sNYk6KgYOU\nwfon1GO7WT5E4FH9x8/8u67wnw8Q6dNcxFOvqFGqdlPjOoIvKRjI4TdhAJZy\nOr7oRk9fpwfSuqnTC/I4CrAbW84jMdcExXmK/b4pcfF9st7BhKlFe+lH/MIL\nWoaX\r\n=NYdk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSJhf4OY2lPfF+dZtHjRyL2YAxvwnklp51uik1ZLfRCAiA5jh6I1GajJUw3F45cqRyM7US/hbVfLmnSMszu5cC43g=="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.6_1535103156808_0.7736541636923608"},"_hasShrinkwrap":false},"0.1.7":{"name":"mpregular","version":"0.1.7","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"start":"webpack --config webpack.config.js","watch":"gulp watch","watch:build":"gulp watch:build","test":"UNIT_TEST=1 mocha","test:debug":"UNIT_TEST=1 node --inspect-brk node_modules/mocha/bin/_mocha --timeout 0","coverage":"UNIT_TEST=1 cross-env NODE_ENV=test nyc --all mocha","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"app-root-path":"^2.1.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^4.1.6","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","cross-env":"^5.2.0","expect.js":"~0.3.1","extract-text-webpack-plugin":"^3.0.2","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","istanbul":"^0.4.5","jasmine-core":"^3.1.0","jest":"^23.4.1","karma":"^1.7.1","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-jasmine":"^1.1.2","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","memory-fs":"^0.4.1","mocha":"^1.18.2","mpregular-loader":"^0.2.1","mpregular-template-compiler":"0.0.33-next.0","nyc":"^12.0.2","recursive-readdir":"^2.2.2","run-sequence":"^1.2.2","thenify":"^3.3.0","through2":"~0.4.1","webpack":"^3.12.0","yargs":"^3.26.0"},"gitHead":"358139aa70fff634ec65f786911dc34d08f4251f","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.7","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-Sk4lTSkB4yzS5KmksbMiIiwIYu0yiKi5Bw16EaJilonYTTuZmb2VxrENjZhVCQE2qrcE5UUSZkd4tuqt9uDjGQ==","shasum":"6b1936913db7d54d4c51787cd9c245978b31e43e","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.7.tgz","fileCount":65,"unpackedSize":917840,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbjOxjCRA9TVsSAnZWagAAMfMP/2aXV/uRnFyBxg/Fn7QQ\ndJ5ZyXgiHtW5ef7MeIps5tZvUrdw0qlLWNSriFkYEDhM9qkVes+MEVjgcuAc\n/0553NmYLzidxE45TErWMisV59woH1LmC3rrEn3U4k3S2IBZJ3Wsyj0GLEJh\nTS8JsahcPiAPB1Rr7rTlAcy3CJ6ybURM82jdCQuctxDbiaHof3zLX/KifKJj\n0X0pvb2f1+hMD7N1SdM8R4G/jumDOf74qjFOtzfTcymj2EjjbQ7XCjt/STX2\nriH+90D0K9w7XQ7nuc9CsuSIch2FgYh9BL+XRtcd9LmbDWCNEwwG96mte6ev\nC80pCkH3orADm65J9dMPd8ptZb5IaFZlEV2R2+VSI599Ho97pkICLEjalr7l\nhuuy9pxcPEm5SYSJCjPVYmrlRNzpz97FeMu9hZpyUDvYNpWoUTfkJI13BHxH\neMtn8l+AmzIHTTf+nZ9MgZXk4g++2zp0K3B2sTYtpvBFhK2rnOFLZZX5LSca\nSZ64a1q+f2ghM0SvVdwAUQdC3eIYUWLkXf2uxK9Po32tTN/pvIPDGEFvMRaB\nMPjjSBVPMWJGHjf4i/UGXZGBWN+uTOjcKt7fLv/6HpEWt7KSquPSKUJA7jAU\n0BWCpFOtNsH2a993xVqOkTKOSTH6KiSYyvPI4DZad/zWql8lSEvY2veFPb/B\n9/Y9\r\n=IoeP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC3sLxFJuXdhXseJt5Pz3FNL074z7Dp33uu3U1QaR4AMQIgfd4X7S9wKs+mTo5Gkz/AcDGsxZEuLG/iSHo6SUEwnGg="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.7_1535962210575_0.39470511079838255"},"_hasShrinkwrap":false},"0.1.8":{"name":"mpregular","version":"0.1.8","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"start":"webpack --config webpack.config.js","watch":"gulp watch","watch:build":"gulp watch:build","test":"UNIT_TEST=1 mocha","test:debug":"UNIT_TEST=1 node --inspect-brk node_modules/mocha/bin/_mocha --timeout 0","coverage":"UNIT_TEST=1 cross-env NODE_ENV=test nyc --all mocha","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"app-root-path":"^2.1.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^4.1.6","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","cross-env":"^5.2.0","expect.js":"~0.3.1","extract-text-webpack-plugin":"^3.0.2","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","istanbul":"^0.4.5","jasmine-core":"^3.1.0","jest":"^23.4.1","karma":"^1.7.1","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-jasmine":"^1.1.2","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","memory-fs":"^0.4.1","mocha":"^1.18.2","mpregular-loader":"^0.2.1","mpregular-template-compiler":"0.0.33-next.0","nyc":"^12.0.2","recursive-readdir":"^2.2.2","run-sequence":"^1.2.2","thenify":"^3.3.0","through2":"~0.4.1","webpack":"^3.12.0","yargs":"^3.26.0"},"gitHead":"f7b036d7d122d2558a20601fe75b13e8f7f41b53","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.1.8","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-aUmEyMPTSweIsepRAO5r47aPyyohG4IQztabdeBKGE19Pbh15nHxVTYGBSJ+EUQWB3DzfPMvNeq/ayGHDZ/cvw==","shasum":"eb9b8f2a557aace78cf6e6c9ac860799d369ab34","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.1.8.tgz","fileCount":65,"unpackedSize":919039,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbvaG4CRA9TVsSAnZWagAA8REP/0/lRx0OM50OCR4FFzdf\nvlt5ySZ2X5xTyJKSy8NsI6q1ndVOCsZM8lv7ZmlA3hpDiTJq3f3Lg6NPUA8d\nbLvjVnUQzMCZ/7xyK6Y//k/EX/ZD8Hb+hU+2UMXeZn+yZUd0SJKvDDLTVYR/\njsc5pqOIT2zfseS6IMPO8d8/YeVZau20obOR4DgvsE/c8iAJFBGtlNaNsD9v\nzvSmeY4/O7jcNXf1Iz0Nm3YewV9gH9OnwwgxjUg63Bj72u6B4a7Q/3lo+sgR\nucjBHoPy1FHcKEemp0eqCIDHKRgq4Lw6oPUzunP4ME1c4+zHHURuDHWedJ2J\nlyPouofBUjneq+XSBQHgis5ixZiOV7maG9B+g2dBargyKSCNIdEi4/PwWd4r\noiEG3Ny2vQ5m1SFGb5qVhXU7xP/+sd6CL38rG/LbXe5ep+PVBtB+bWyl1G+T\nQcR7hIc9O0xwoxCVZZxlXFRTf+gD3JkR+6MfkV+QGqSsTjHFALDzy2iztnGP\n+Gb1nJgn9MTDHYDdN+C92wBaOnmkV7/Vnj/4s6fONOuaISajxpVYXW52gJ0O\n/HXGXt6ZPJ08JrspH9+X1T4SZNa3v4H6p97qyzrWwkGd/cUoSG3h30zts5Bh\noXVNSMTFTigKEY3fcLkyPmzgnA/gCIN1DRGFKsk2lpYuLpE0Qf/57hIrkWiK\ng+Sx\r\n=4Ie8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0JYSqQ2SdjWOxyuvYW7H/TQzjeicVzjcM4n6EYGrmKAiEAgtb/LVaDlAAwZbtH82As0PELADcTZGw4EQPSRNsfVwc="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.1.8_1539154359570_0.12182462069001398"},"_hasShrinkwrap":false},"0.2.0-0":{"name":"mpregular","version":"0.2.0-0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"start":"webpack --config webpack.config.js","watch":"gulp watch","watch:build":"gulp watch:build","test":"UNIT_TEST=1 mocha","test:debug":"UNIT_TEST=1 node --inspect-brk node_modules/mocha/bin/_mocha --timeout 0","coverage":"UNIT_TEST=1 cross-env NODE_ENV=test nyc --all mocha","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"app-root-path":"^2.1.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^4.1.6","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","cross-env":"^5.2.0","expect.js":"~0.3.1","extract-text-webpack-plugin":"^3.0.2","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","istanbul":"^0.4.5","jasmine-core":"^3.1.0","jest":"^23.4.1","karma":"^1.7.1","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-jasmine":"^1.1.2","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","memory-fs":"^0.4.1","mocha":"^1.18.2","mpregular-loader":"^0.2.1","mpregular-template-compiler":"0.0.33-next.0","nyc":"^12.0.2","recursive-readdir":"^2.2.2","run-sequence":"^1.2.2","thenify":"^3.3.0","through2":"~0.4.1","webpack":"^3.12.0","yargs":"^3.26.0"},"dependencies":{"octoparse":"^0.3.2"},"readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n#### r-style\n\n```html\n<div r-style=\"{{ height: '30px' }}\"></div>\n```\n\n#### r-class\n\n```html\n<button r-class=\"{{ rounded: isRounded }}\"></button>\n```\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md","gitHead":"7cc98b85a973d19c8d8a6a4d210b358f20bfa78c","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.2.0-0","_npmVersion":"5.6.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-dJYwktku7rcXRrW5aC75itsWoXRxFvSvbq/wrQ9lYfVXulpzOJIhlaMxkv/RQS0GxdABMIuhtLGunCF/mbUIvg==","shasum":"8ea8f88daf62100a836f27b0efe902a35024dcd9","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.2.0-0.tgz","fileCount":58,"unpackedSize":810140,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcGy5cCRA9TVsSAnZWagAAZysP/RzyyGaScnjE1DhTTpyX\nv21qD4cFJDx92CK3rPO5cSZoBXCzZhUOy/jUs9nMYFz5rzQarydwvpA17RAp\nRYA6Fn58OvA26L7Z7Oke0+aGc9faPBHNCuBGifBBXIvPapFiF+zVeF7g0yjn\n1A6+hrVn5sFGywJKKa+Bp77Xa4omqHMW8Aqk0U4W1Gwcx3KiEBIKyG7agewn\nspUHLFg5bhM5n4pom1Y3OzFVRz5C5ap0SEocfr0UtGBiAHSbKMZKNJzIaUs2\ngE4EeWlCTjwrdkVb8sz7BHDizLpOOBLG9WFL7r69H2s5k+iDACZMZR1R2tsx\nDoA4Hr1wErT26PvV3oj0vWc/S4rBStasQJgTXe0BNNE0sJBDGCHY0tWuqe7O\nvnJcsU22p6NR/d9lUuVPYonz4G4LFKm4Fskt88KSzLRIdKVUcnDHRh7Q7H9J\ne5wgS9PQzIhDDNNwcBQ6t7MBgDjPRUXcm+WeTOL7e9ZsNOG7rcUPPLi8bwbx\naKGE7SIpEkJDY3k72evDCkNA3o/d8iqZUd9tsZ2oziFXSJuvV7OjwWi8RIxW\nsY5/eLxm5pOqvJH6bYP0owT9M8goCX8vz+L1hKTUCXZf8Q4amGRyD6x98G3b\nW+cAbuYbLv8BjQpX1gWmiRJFUSN9tZF1oBJIhArnpVtNR+NiOIEtn/yckcln\nz9ea\r\n=KhWv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICoSdCyAJpBkALG9DWPReJ/rzSZrspCWuTyrora+rqIBAiEAvP/KpLRz0VSmGuNZlLb3UijweiVMV76D4EfrDFY7ExY="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.2.0-0_1545285211942_0.6487009613779622"},"_hasShrinkwrap":false},"0.2.0":{"name":"mpregular","version":"0.2.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"start":"webpack --config webpack.config.js","watch":"gulp watch","watch:build":"gulp watch:build","test":"UNIT_TEST=1 mocha","test:debug":"UNIT_TEST=1 node --inspect-brk node_modules/mocha/bin/_mocha --timeout 0","coverage":"UNIT_TEST=1 cross-env NODE_ENV=test nyc --all mocha","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"app-root-path":"^2.1.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^4.1.6","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","cross-env":"^5.2.0","expect.js":"~0.3.1","extract-text-webpack-plugin":"^3.0.2","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","istanbul":"^0.4.5","jasmine-core":"^3.1.0","jest":"^23.4.1","karma":"^1.7.1","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-jasmine":"^1.1.2","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","memory-fs":"^0.4.1","mocha":"^1.18.2","mpregular-loader":"^0.2.1","mpregular-template-compiler":"0.0.33-next.0","nyc":"^12.0.2","recursive-readdir":"^2.2.2","run-sequence":"^1.2.2","thenify":"^3.3.0","through2":"~0.4.1","webpack":"^3.12.0","yargs":"^3.26.0"},"dependencies":{"octoparse":"^0.3.2"},"gitHead":"fa91db27d52dbcd12b427f53afd6ed4058277321","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.2.0","_npmVersion":"6.5.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-aXSCpZv4TI8M+dMThqALKdr+V+RiyX1MdhRbboSAXi9E6VEFrdCFk4oDqgtVMsW+zwqv2+cPX60Sbe16YT/9QA==","shasum":"d35c5432885f2a7d72a124a954b0da311f798fd4","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.2.0.tgz","fileCount":58,"unpackedSize":810132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcMwuvCRA9TVsSAnZWagAAzPoQAJcMi33RDybuHu7ugXAC\ntiYx933lv1lWM/OgxMQWvzpVeYJrliH3raA7A5Bczgt5NtzXs9dag/oLvd2w\nWrXVRh1SzlcyYSigN3WCk487Ti9J0yOCgfBTtqYIDXgd2FAaFfx7ONDyxX96\nILzqysAGTMdipx/J8GsmRgd78CIsTk8c/ET7gQw4AjzrRJOjrvkedjIotrJ5\nDRBTA+sJIVtlzo60zjY3p8HFQefLNEwmDS+wObnKcbNgQQg6DqL/Jc6yN3Du\n6xdNYihXfXebqv44kMvnoiDUbWmMDBdQq4YLLYq7IQH+qqtI+VQk9K+qNxS3\neLt00CeHnWTd2wiNrty6Sm6pqLWBnKbmza1rP7PgXzSSuTWBCX4eDSoKNB7M\n/3pLPKKtXswyJWdUh5l/iULTv7TNBOaDGDAqEj79iFwlJLAm/inohBd5ja/a\n19iGp6jXB6+OCz938ZST3oF6qfsQI2bf98njh7jw4iYR04Dv9pE7vj8Y3sQg\nsLe7wV/adnNTUJ+bVCA12GysyBSNMCV8DHlIYeq2BgURSDnWMytGc6My5uRS\n3iPJkQt5d8MoKoiKIXX1fI/ncU2h7jhHTJrF4tC6ebVSSJHcQRqZ8JAMXf/U\nYfFu3FzwRLsJas44r8VVq7V+Iyz0LESaLeWBOlTZLl3kB72w9Pfi9INrgBAb\nbJDK\r\n=6LGD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGKNeQ5/mvOk3Xb8OC7J28rokll040S/EZo2bgqCJWASAiEA8xrY10e1VISqgWsN3z8rwHdtGWDxfn3J87XtOSooSUw="}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.2.0_1546849199164_0.14932754178264385"},"_hasShrinkwrap":false},"0.3.0":{"name":"mpregular","version":"0.3.0","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"start":"webpack --config webpack.config.js","watch":"gulp watch","watch:build":"gulp watch:build","test":"UNIT_TEST=1 mocha","test:debug":"UNIT_TEST=1 node --inspect-brk node_modules/mocha/bin/_mocha --timeout 0","coverage":"UNIT_TEST=1 cross-env NODE_ENV=test nyc --all mocha","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"app-root-path":"^2.1.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^4.1.6","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","cross-env":"^5.2.0","expect.js":"~0.3.1","extract-text-webpack-plugin":"^3.0.2","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","istanbul":"^0.4.5","jasmine-core":"^3.1.0","jest":"^23.4.1","karma":"^1.7.1","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-jasmine":"^1.1.2","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","memory-fs":"^0.4.1","mocha":"^1.18.2","mpregular-loader":"^0.2.1","mpregular-template-compiler":"0.0.33-next.0","nyc":"^12.0.2","recursive-readdir":"^2.2.2","run-sequence":"^1.2.2","thenify":"^3.3.0","through2":"~0.4.1","webpack":"^3.12.0","yargs":"^3.26.0"},"dependencies":{"octoparse":"^0.3.2"},"gitHead":"fa91db27d52dbcd12b427f53afd6ed4058277321","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.3.0","_npmVersion":"6.5.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-1g30aEBIXFsKxdjfwQJMrrd/ZpbpEE4raSdwUca5HmLqxedPqk0T9PW3trApBLNzqz1bRXg00fA+em5GL6bQSg==","shasum":"63ca7f39f5369fefa8bf2a39920f99539af8ded5","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.3.0.tgz","fileCount":59,"unpackedSize":814368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcbP6RCRA9TVsSAnZWagAAiKQQAI39og7S8hqrJLUgl0bl\nCt625ZJ95+FmJaIfLgPmm2XqcsQy8bo3FoW6Jh3dYFYU5TwIZ0j4QyMzLZOD\nArm4Gc0w7BMNhzgQ7PApVIlJuZZcYTnOG4SauTGmIWoslSz4iRn9KHGcWS2q\nDeifgYhf3elNRaiJFtpoEuwC39ps8NLIyTSq2M1qmk/1IGm7lZr1h5sK2dg0\nBlSyIzwl/Mvplb6nXLp80xt0m+MBIACyMP60vnqYK13tzvqsL/uTSg18+Wlm\nSxDrB3vD/T+/jo5xlZ0IrbfsIaKEXRvE+NZVyhgnlrtJKboh8HtpdLjgHbx5\nDDUd+kUJjY+ukxbJSJ7WKtOYo1n1qVAJdd17eQ/2wWzVNYHGfGBNKCkUevFs\ngmQg8MdhYlMfl9+Yc35j57Fp4ApBPE5cgN5D3oeJgw9TW+ZjgGZWGy2uRYiM\nfVaEdTyXfjPdDIxLe/NCi/PD/7PGyx+Ckc8zVXLRkImDAu/z3Yl93VT49rOM\nq4EP1ZBZWq2VvlNPn4N4Fn33GMzav4muROG6pO7LDDoDpLHU5Bzc097mCUiy\njh2dugDfNauTf5L/FKGBrCpiCbONSLt45NVZsD9xoDLPc5AJZi2XjPB9RcJO\n0wWr17eSsr0esSp3vwA+jZGdLKyaUxpAd0Ggy1q1HV460+wgNEemz//stsA7\nZDeK\r\n=2TWT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcvKj/MFvhvfwZE3ff+Qh7hZVApYgA8W2bwNpaO1a7egIhANPT7bIsowu2Xt4DZf9MIYGe4yTdAs2qxxssGzTz/k2N"}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.3.0_1550646928840_0.9497741888364526"},"_hasShrinkwrap":false},"0.3.1":{"name":"mpregular","version":"0.3.1","author":{"name":"leeluolee"},"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","license":"MIT","keywords":["template","data-binding"],"main":"lib/index.js","unpkg":"dist/regular.js","jsdelivr":"dist/regular.js","repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"homepage":"http://regularjs.github.io","scripts":{"start":"webpack --config webpack.config.js","watch":"gulp watch","watch:build":"gulp watch:build","test":"UNIT_TEST=1 mocha","test:debug":"UNIT_TEST=1 node --inspect-brk node_modules/mocha/bin/_mocha --timeout 0","coverage":"UNIT_TEST=1 cross-env NODE_ENV=test nyc --all mocha","prepublish":"gulp build"},"bin":{"regular":"./bin/regular"},"devDependencies":{"app-root-path":"^2.1.0","babel-core":"^6.26.3","babel-loader":"^7.1.5","babel-plugin-istanbul":"^4.1.6","babel-preset-es2015":"^6.24.1","chai":"^4.1.2","cross-env":"^5.2.0","expect.js":"~0.3.1","extract-text-webpack-plugin":"^3.0.2","gulp":"3.6.x","gulp-bump":"^1.0.0","gulp-git":"^1.4.0","gulp-istanbul":"~0.1.1","gulp-jshint":"~1.5.3","gulp-mocha":"~0.4.1","gulp-shell":"^0.2.9","gulp-tag-version":"^1.3.0","gulp-uglify":"~0.2.1","gulp-util":"~2.2.14","gulp-webpack":"^1.0.0","istanbul":"^0.4.5","jasmine-core":"^3.1.0","jest":"^23.4.1","karma":"^1.7.1","karma-chrome-launcher":"~0.1.4","karma-coverage":"~0.2.4","karma-firefox-launcher":"~0.1.3","karma-ie-launcher":"~0.1.5","karma-jasmine":"^1.1.2","karma-mocha":"~0.1.3","karma-phantomjs-launcher":"~1.0.2","karma-sourcemap-loader":"^0.3.7","karma-webpack":"^3.0.0","memory-fs":"^0.4.1","mocha":"^1.18.2","mpregular-loader":"^0.2.1","mpregular-template-compiler":"0.0.33-next.0","nyc":"^12.0.2","recursive-readdir":"^2.2.2","run-sequence":"^1.2.2","thenify":"^3.3.0","through2":"~0.4.1","webpack":"^3.12.0","yargs":"^3.26.0"},"dependencies":{"octoparse":"^0.3.2"},"gitHead":"38581e730bb472ab5ca945c280b0e1f1a535738a","bugs":{"url":"https://github.com/regularjs/regular/issues"},"_id":"mpregular@0.3.1","_npmVersion":"6.5.0","_nodeVersion":"8.11.1","_npmUser":{"name":"elcarim5efil","email":"elcarim5efil@gmail.com"},"dist":{"integrity":"sha512-Vt8B0/d1EL9dbeF1ew/mF6Nk2jrYixM+5gHHBsrmtS7MZSRK+nP431TIhxyJl46Zo1Ow3ryFF0eYA3sQxFkqOw==","shasum":"d81c557ff5fa185f750cc27cee4263258d20484d","tarball":"https://registry.npmjs.org/mpregular/-/mpregular-0.3.1.tgz","fileCount":60,"unpackedSize":816778,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJch5wUCRA9TVsSAnZWagAA7HEQAJ0Eg2lf7OElQHTmpAV+\nxFMfmQm74bNFc+3Ga0eK6wz7AyfrwDX0RJHo8r7pdoaghsGlC1wuCZ5VGmn1\naCkepRa0A+9/31/w3kDf+t2musjNHoymNHc6lxR623SsD/ifuKMR/aBI92a/\nELd6HyaJos+szbdkznDloLio8R41EHjdQNfqsuF9dr9XgWmX0ldQOI/v5h0N\nd4ohv0R9lsWXvb7T9V3vQ2rWnhz7rHJwmDetfhD2tlfiIJvJ8sCZdhctos8/\n4PwclR+pOlQ1JUw0HW5Xek3CS2GiFNqLxbPS5/3M3AKV//elcke1yyyCLnnS\n+yPqXgf4Sr4DmRaO7FedH0r17uG23Iet4ECJGj1Pq+WqQGAe3xdqvhI5hO0p\nE9HHrr172bfR9BUwE8KoB2IgEicgrX2nRkGw3C8c4e0co67WQWJSH6PHvLbo\nWy2a7E/tSqgClEB/qiBNWarVnpFmQZwhneQlJHhnU+eUy7Y/sVXXVn+FKjIT\nL+YMMpkN20Iqt4ZO7SgQl4cgB7AdO7vmkgkmLiKS/zDkbyjiPg2JLpTwoB1Z\nQ+rTsZo+/1iIeIX/AeJT4GvWxNOVfB7I+3Oy0crs1/sk0ldGg3h81DSGHzQi\nXleAuI//DUj7r0wkBhcTWuOkqNF85ZHr6gA2ttI8oBer157hDJnmPAkrlZFo\nH8Rd\r\n=GhO/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7wXfVXZk7ERAXAF3uVhlbsf78lifOpBO6W1h6bx3Q5wIhAKUoO87DuwkCWoV0X/0MH1WeADbT80K2EExgIsJmN3ry"}]},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/mpregular_0.3.1_1552391187929_0.7720097722656472"},"_hasShrinkwrap":false}},"time":{"created":"2018-04-23T10:49:25.521Z","0.0.1":"2018-04-23T10:49:25.669Z","modified":"2022-05-09T22:00:08.468Z","0.0.2":"2018-04-25T05:58:41.602Z","0.0.3":"2018-05-14T10:21:01.035Z","0.0.4":"2018-05-15T12:28:56.186Z","0.0.5":"2018-05-16T11:53:20.051Z","0.0.6":"2018-05-20T08:28:23.327Z","0.0.7":"2018-05-21T05:27:39.318Z","0.0.8":"2018-05-23T04:01:01.792Z","0.0.9":"2018-05-23T08:21:27.095Z","0.0.10":"2018-05-23T09:12:58.207Z","0.0.11":"2018-05-24T13:42:52.574Z","0.0.12":"2018-05-24T14:54:23.327Z","0.0.13":"2018-05-26T09:56:22.130Z","0.0.14":"2018-05-26T10:57:54.117Z","0.0.15":"2018-05-26T11:51:46.522Z","0.0.16":"2018-05-28T06:18:11.492Z","0.0.17-beta.1":"2018-05-28T11:05:50.104Z","0.0.17":"2018-05-28T11:06:08.084Z","0.0.17-beta.2":"2018-05-28T12:34:48.758Z","0.0.18":"2018-05-29T02:35:22.190Z","0.0.19":"2018-05-29T10:58:57.636Z","0.0.20":"2018-05-30T03:27:36.826Z","0.0.21":"2018-05-30T05:29:07.039Z","0.0.22":"2018-05-30T12:14:12.078Z","0.0.23":"2018-05-31T07:17:47.038Z","0.0.24":"2018-05-31T08:10:47.170Z","0.0.25":"2018-06-04T07:50:15.354Z","0.0.26-beta.1":"2018-06-06T02:01:28.833Z","0.0.26-beta.2":"2018-06-06T07:19:22.178Z","0.0.26-beta.3":"2018-06-06T13:08:42.588Z","0.0.26-beta.4":"2018-06-07T03:35:31.484Z","0.0.26":"2018-06-08T03:09:31.694Z","0.0.27":"2018-06-08T07:27:41.133Z","0.0.28":"2018-06-11T03:11:10.480Z","0.0.29":"2018-06-12T13:14:51.418Z","0.0.30":"2018-06-13T05:33:54.641Z","0.0.31":"2018-06-19T07:30:29.574Z","0.0.32":"2018-06-20T14:06:51.282Z","0.0.33":"2018-06-25T06:53:25.943Z","0.0.34":"2018-06-25T09:01:37.707Z","0.0.35":"2018-06-25T09:18:06.818Z","0.0.36-beta.1":"2018-06-26T01:36:42.488Z","0.0.36-beta.2":"2018-06-26T07:39:07.791Z","0.0.36-beta.3":"2018-06-26T08:12:46.919Z","0.0.36-beta.4":"2018-06-26T13:16:47.799Z","0.0.36-beta.5":"2018-06-28T08:56:40.734Z","0.0.36-beta.6":"2018-06-30T10:49:41.133Z","0.0.36":"2018-07-02T07:33:28.262Z","0.0.37":"2018-07-02T13:25:39.679Z","0.0.38-beta.1":"2018-07-05T13:27:30.708Z","0.0.38-beta.2":"2018-07-05T13:29:16.176Z","0.0.38-beta.3":"2018-07-06T13:02:18.108Z","0.0.38-beta.4":"2018-07-06T13:06:29.463Z","0.0.38-beta.5":"2018-07-10T07:00:11.755Z","0.0.38":"2018-07-12T09:32:50.568Z","0.0.39-beta.0":"2018-07-12T13:14:17.978Z","0.0.39-beta.1":"2018-07-12T14:49:58.661Z","0.0.39-beta.2":"2018-07-12T14:57:38.644Z","0.0.39-beta.3":"2018-07-16T06:35:15.403Z","0.0.40":"2018-07-16T06:35:57.322Z","0.0.41":"2018-07-16T12:15:47.312Z","0.1.0-next.0":"2018-07-23T04:53:00.229Z","0.1.0":"2018-07-23T04:58:37.449Z","0.1.1":"2018-07-23T13:40:20.623Z","0.1.2":"2018-07-24T04:57:28.751Z","0.1.3-next.0":"2018-07-31T15:52:22.916Z","0.1.3":"2018-08-01T08:15:54.368Z","0.2.0-next.0":"2018-08-02T06:53:42.616Z","0.1.4":"2018-08-09T03:44:11.770Z","0.1.5":"2018-08-09T07:27:07.809Z","0.1.6":"2018-08-24T09:32:37.012Z","0.1.7":"2018-09-03T08:10:10.766Z","0.1.8":"2018-10-10T06:52:39.770Z","0.2.0-0":"2018-12-20T05:53:32.099Z","0.2.0":"2019-01-07T08:19:59.435Z","0.3.0":"2019-02-20T07:15:29.103Z","0.3.1":"2019-03-12T11:46:28.127Z"},"maintainers":[{"email":"chenxinlewadee@126.com","name":"chenxinle"},{"email":"elcarim5efil@gmail.com","name":"elcarim5efil"},{"email":"fengzilong1992@gmail.com","name":"fengzilong"}],"description":"<p align=\"center\"> <img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  /> </p>","homepage":"http://regularjs.github.io","keywords":["template","data-binding"],"repository":{"type":"git","url":"git+https://github.com/regularjs/regular.git"},"author":{"name":"leeluolee"},"bugs":{"url":"https://github.com/regularjs/regular/issues"},"license":"MIT","readme":"<p align=\"center\">\n<img src=\"https://haitao.nos.netease.com/2758f92e-c498-4768-add3-c15a88c90390.gif\" alt=\"mpregular\" width=\"400px\"  />\n</p>\n\n基于 [RegularJS](https://github.com/regularjs/regular) 实现的小程序开发框架，可以直接借助 `RegularJS` 语法和生态进行小程序开发。保证开发体验一致性的同时，也提高了 **web 应用** 和 **小程序应用** 之间代码互相转换的效率。\n\n## 特性\n\n- 一致的开发体验\n- 更低的学习成本\n- 更强的语法表现力\n- 更强的性能表现\n\n## template\n\nHTML 标签和小程序标签存在差异，比如 div 和 view 之间的关系，RegularJS 的模版语法和小程序模版语法也不一样，因此需要在编译时对模版进行转换。\n\n小程序的原生组件可以在 RegularJS 模版中直接使用，对应的属性名和事件名都是一样的，但需要注意的是事件绑定的语法稍有不同，需要使用 RegularJs 的语法进行事件绑定。\n\n例如：\n\n小程序：\n\n```html\n<scroll-view\n  scroll-y\n  bindscroll=\"onScroll\"\n></scroll-view>\n```\n\nmpregular：\n\n```html\n<scroll-view\n  scroll-y\n  on-scroll=\"{ this.onScroll( $event ) }\"\n></scroll-view>\n```\n\n## Page 生命周期\n\n1. config，regular\n2. onLoad\n3. init，regular 页面组件及各个子组件\n4. onReady\n5. onShow\n6. onHide\n7. onUnload\n\n如何使用：\n\n```javascript\nexport default {\n  mpType: 'page',\n  config() {\n    // this.$mp.options 与 onLoad 中的 options 相同\n    console.log('config', this.$mp.options);\n  },\n  init() {\n    console.log('init');\n  },\n  onLoad(options) {\n    console.log('onLoad', options);\n  },\n  onReady() {\n    console.log('onReady');\n  },\n  onShow() {\n    console.log('onShow');\n  },\n  onHide() {\n    console.log('onHide');\n  },\n  onPullDownRefresh() {\n    console.log('PullDownRefresh');\n  },\n  onReachBottom() {\n    console.log('ReachBottom');\n  },\n  onPageScroll(options) {\n    console.log('PageScroll', options);\n  }\n}\n```\n\n建议只在最外层的 Regular 实例中使用小程序相关的钩子函数，这样在转回 web 代码的时候工作量会相对减少\n\n## App 生命周期\n\nTODO\n\n## 支持特性\n\n### 事件绑定\n\n事件绑定遵循 Regular 的事件绑定语法，利用 `on-` 指令，对于小程序的原生事件的绑定，也是一样，将 `bind` 替换成 `on-`。\n\n比如 `click` 事件对应小程序中 `tap` 事件。\n\n```html\n<button on-click=\"{ this.onClick($event) }\">click</button>\n```\n\n对于小程序中特有的事件绑定方式，在 Regular 中利用指令修饰符实现。\n\n`catch{event}` -> `on-{event}.catch`\n\n```html\n<div on-touchstart.catch=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`capturebind{event}` -> `on-{event}.capture`\n\n```html\n<div on-touchstart.capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n`catch-capture{event}` -> `on-{event}.catch-capture`\n\n```html\n<div on-touchstart.catch-capture=\"{ this.onTouchStart($event) }\"></div>\n```\n\n处理函数中所返回的事件对象与小程序原生事件对象一致，保持不变。\n\n### filter\n\n```html\n<span>{ time | dateFormat: 'yyyy-MM-dd' }</span>\n```\n\n```javascript\nimport Regular from 'regularjs';\n\ncosnt App = Regular.extend({\n\n}).filter('dateFormat', function() {\n  // your filter code here\n});\n\nexport default App;\n```\n\n这里需要注意下写法，需要用到 `Regular.extend`，下面的方式目前是不支持的（后面版本会加上）\n\n```js\nexport default {\n  filters: {\n    // ...\n  }\n}\n```\n\n### {#inc this.$body}\n\n```html\n<!-- <Modal> definition -->\n<div class=\"modal\">\n  {#inc this.$body}\n</div>\n\n<!-- use -->\n<Modal>\n  <head>Tips</head>\n  <section>It's a tip</section>\n</Modal>\n```\n\n目前只支持静态的模版，不支持动态的字符串编译，例如 `#{inc templateStr}` 是不支持的\n\n### {#if}\n\n```html\n{#if mode === 1}\n  <div>1</div>\n{#elseif mode === 2}\n  <div>2</div>\n{#else}\n  <div>other</div>\n{/if}\n```\n\n语法与 Regular 一致。\n\n### {#list}\n\n```html\n{#list soure as item by item_index}\n  <div on-click=\"{ this.onItemClick(item) }\">{ item.name }</div>\n{/list}\n```\n\n语法与 Regular 一致，注意不要对大型列表进行 list 操作，否则容易出现性能问题。\n\n### 指令\n\n#### r-model\n\n```html\n<input r-model=\"{ title }\">\n<textarea r-model=\"{ article }\">\n```\n\n#### r-hide\n\n隐藏元素指令。\n\n```html\n<div r-hide=\"{ !show }\"></div>\n```\n\n#### r-html\n\n利用第三方开源库 wxParse 将 html 转换成 wxml 进行渲染。\n\n```html\n<div r-html=\"{ !htmlStr }\"></div>\n```\n\n#### r-style\n\n```html\n<div r-style=\"{{ height: '30px' }}\"></div>\n```\n\n#### r-class\n\n```html\n<button r-class=\"{{ rounded: isRounded }}\"></button>\n```\n\n### 异常处理\n\n全局异常处理，在 Regular 对象上定义异常处理方法 `_errorHandler`。\n\n```javascript\nimport Regular from 'regularjs'\n\nRegular._errorHandler = function(info, error, vm) {\n  console.log('global handle ====== start')\n  console.log(info, error, vm)\n  console.log('global handle ====== end')\n}\n```\n\n页面和组件中异常处理，在页面或组件中定义异常处理方法 `_errorHanlder`。\n\n```javascript\nexport default {\n  mpType: 'page',\n  _errorHandler(info, error, vm) {\n    console.log('handle ====== start')\n    console.log(info, error, vm)\n    console.log('handle ====== end')\n  }\n}\n```\n\n执行优先级，`组件 -> 页面 -> 全局`。\n\n会捕获生命周期钩子和事件处理函数的执行异常，如果没有定义任何 `_errorHandler`，默认行为是打印异常信息。\n\n### 性能优化\n\n小程序官方文档中特别强调 `setData` 传递大数据时会大量占用 WebView JS 线程，对此 mpregular 做了特别的优化。\n\n#### 收集 view 中使用的数据\n\n仅仅收集 template 中用到的数据，过滤没有用到的数据，将插值表达式执行的结果计算完成后，再通过 setData 传递到 view 线程。这样做，可以极大减少传输的数据量。\n\n例如：\n\n```html\n<!-- RegularJS template -->\n<span>{ largeData.info.countdown.time }</span>\n<!-- 转换后的小程序 wxml -->\n<text>{ __holders[0] }</text>\n```\n\n对于上面这个插值，通常的做法是将 largeData 传递给 view，然后由 view 去解析这个对象，得到目标值。但是，如果这个值挂在一个非常大的对象上，那么每次都需要传递这个大对象，性能将会非常差。\n\nmpregular 的做法是，每次值更改时，先将这个表达式的值计算出来，在这个例子里就是从 largetData 上取到 time 这个值，再将值写到 `__holders[0]`， 通过 setData 传递给 view。这样每次更新的数据从一个大对象缩减到一个字符串，性能上会有很大提升。\n\n同时，对于很复杂的插值表达式，也可以通过这种方式将计算结果设置到对应的 `__holders` 上。模版中的 filter、复杂表达式等特性，就是通过这一个机制实现的。\n\n#### 缓存更新数据，定期更新\n\n频繁调用 setData 传递数据也会造成性能问题，因此 mpregular 会设置一个 buffer 缓存更新数据，这段事件内重复的数据会进行 merge，并定时进行更新，目前这个时间是 50ms。这一机制的实现与 mpvue 时类似的。\n\n#### 仍可能存在性能问题的情况\n\n虽然 mpregular 对数据更新进行了内部优化，但是存在一些情况，无法避免大数据的传递。\n\n```html\n{#list largeList as item}\n<span>{ item.name }</span>\n{/list}\n```\n\n在 `{#list}` 表达式里面会直接把 `largeList` 传递到 view 去进行遍历。所以，如果要遍历一个数组，最好是将 view 中要遍历的列表精简成只包含 view 中要使用的属性，提高数据更新时的性能。当然，也不必要过度优化，当渲染大型列表出现性能问题时，你可以尝试从这个角度去处理问题。\n\n## 暂不支持\n\n- `r-animation`\n\n## 工具\n\n- [mpregular-loader](https://github.com/kaola-fed/mpregular-loader)\n\n## demo\n\n- [mpregular-example](https://github.com/kaola-fed/mpregular-example)\n\n## reference\n\n- [RegularJS](https://github.com/regularjs/regular)\n- [mpvue](https://github.com/Meituan-Dianping/mpvue)\n- [wxParse](https://github.com/icindy/wxParse)\n","readmeFilename":"README.md"}