{"id":547,"date":"2017-01-13T16:42:48","date_gmt":"2017-01-13T08:42:48","guid":{"rendered":"http:\/\/blog.feizhaojun.com\/?p=547"},"modified":"2019-03-06T15:41:45","modified_gmt":"2019-03-06T07:41:45","slug":"%e5%89%8d%e7%ab%af%e6%a8%a1%e5%9d%97%e5%8c%96%e4%b9%8b%e8%b7%af","status":"publish","type":"post","link":"https:\/\/feizhaojun.com\/?p=547","title":{"rendered":"\u524d\u7aef\u5de5\u7a0b\u5316\u4e4b\u8def\uff1a\u524d\u7aef\u6784\u5efa\u5de5\u5177\u3001\u6a21\u5757\u5316\u3001\u6846\u67b6\u3001\u7c7b\u5e93\u3001\u5de5\u5177\u6c47\u603b"},"content":{"rendered":"<p><em>UPDATE: 2018-12-05 17:01<\/em><\/p>\n<p>\u524d\u9762\u591a\u8bf4\u4e00\u53e5\uff0c\u6211\u89c9\u5f97\u524d\u7aef\u7684\u7075\u9b42\u662f AJAX\uff0c\u6709\u4e86 AJAX \u624d\u6709\u4e86\u524d\u7aef\u8fd9\u4e2a\u804c\u4e1a\u3002<\/p>\n<h3>\u672c\u6587\u76ee\u5f55<\/h3>\n<hr \/>\n<ul>\n<li><a href=\"#task-runner\">\u6784\u5efa\u5de5\u5177 Task Runner<\/a><\/li>\n<li><a href=\"#framework\">\u6846\u67b6 Framework<\/a><\/li>\n<li><a href=\"#library\">\u7c7b\u5e93 Library<\/a><\/li>\n<li><a href=\"#make\">\u4ee3\u7801\u7f16\u8bd1<\/a><\/li>\n<li><a href=\"#lint\">\u4ee3\u7801\u68c0\u67e5<\/a><\/li>\n<li><a href=\"#unit-test\">\u5355\u5143\u6d4b\u8bd5<\/a><\/li>\n<li><a href=\"#debug\">\u8c03\u8bd5\u5de5\u5177<\/a><\/li>\n<li><a href=\"#package-manager\">\u5305\u7ba1\u7406\u5de5\u5177 Package manager<\/a><\/li>\n<li><a href=\"#revision\">\u7248\u672c\u7ba1\u7406<\/a><\/li>\n<\/ul>\n<hr \/>\n<p>\u622a\u81f32018\u5e7411\u670828\u65e5\uff0cgithub star \u6570\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/image-static.segmentfault.com\/409\/374\/4093743712-5bfebba74cba0_articlex\" alt=\"image\" \/><\/p>\n<h2 id=\"task-runner\">\u6784\u5efa\u5de5\u5177\u3001\u4efb\u52a1\u6d41\u5de5\u5177 Task Runner<\/h2>\n<ul>\n<li><a href=\"https:\/\/webpack.js.org\">webpack<\/a> \u76ee\u524d\u6700\u6d41\u884c\u7684\u524d\u7aef\u6a21\u5757\u5316\u6253\u5305\u5de5\u5177<\/li>\n<li><a href=\"https:\/\/parceljs.org\">Parcel<\/a> Web\u5e94\u7528\u6253\u5305\u5de5\u5177<\/li>\n<li><a href=\"https:\/\/github.com\/ronami\/minipack\">Minipack<\/a> \u4e00\u4e2a\u53ef\u4ee5\u5e2e\u52a9\u5f00\u53d1\u8005\u7406\u89e3\u6253\u5305\u539f\u7406\u7684\u5f00\u6e90\u6253\u5305\u5de5\u5177<\/li>\n<li><a href=\"http:\/\/fis.baidu.com\">FIS<\/a> \u6e90\u4e8e\u767e\u5ea6\u7684\u524d\u7aef\u5de5\u7a0b\u6784\u5efa\u5de5\u5177<\/li>\n<li><a href=\"https:\/\/athena.aotu.io\">Athena<\/a> \u4eac\u4e1c\u51f9\u51f8\u5b9e\u9a8c\u5ba4\u524d\u7aef\u81ea\u52a8\u5316\u6d41\u7a0b\u6784\u5efa\u5de5\u5177<\/li>\n<li><a href=\"https:\/\/weflow.io\">WeFlow<\/a> \u524d\u7aef\u5f00\u53d1\u5de5\u4f5c\u6d41\u5de5\u5177\uff0c\u57fa\u4e8e\u5fae\u4fe1 tmt-workflow<\/li>\n<li><a href=\"http:\/\/elemefe.github.io\/cooking\">cooking<\/a> \u6e90\u4e8e\u997f\u4e86\u4e48\u7684\u524d\u7aef\u6784\u5efa\u5de5\u5177<\/li>\n<li><a href=\"https:\/\/yeoman.io\">Yeoman<\/a> \u4e3a\u73b0\u4ee3\u524d\u7aef\u800c\u751f\u7684\u3001\u7075\u6d3b\u901a\u7528\u7684\u811a\u624b\u67b6\u5de5\u5177<\/li>\n<li><a href=\"\/\/feizhaojun.com\/?p=516\">gulp<\/a> \u76ee\u524d\u6700\u6d41\u884c\u7684\u524d\u7aef\u4efb\u52a1\u6d41\u6784\u5efa\u5de5\u5177<\/li>\n<li><a href=\"\/\/feizhaojun.com\/?p=496\">Grunt<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/duojs\/duo\">Duo<\/a> \u81ea\u5df1\u5439\u725b\u8bf4\u662f\u4e0b\u4e00\u4ee3\u524d\u7aef\u5305\u7ba1\u7406\u5de5\u5177<\/li>\n<li><a href=\"https:\/\/jspm.org\">jspm<\/a><\/li>\n<li><del datetime=\"2018-12-07T10:32:04+00:00\"><a href=\"http:\/\/browserify.org\">browserify<\/a> \u9879\u76ee\u4e2d\u6240\u6709\u4f7f\u7528require\u5f15\u5165\u7684JS\u6a21\u5757\uff08\u5305\u62ecNode\u5185\u7f6e\u6a21\u5757\uff09\u5e76\u6253\u5305\uff0c\u4f7f\u5f97Node\u7c7b\u9879\u76ee\u80fd\u5728\u6d4f\u89c8\u5668\u4e0a\u8fd0\u884c\u3002\u4e0d\u8fc7Css\u548c\u56fe\u7247\u7b49\u4f9d\u7136\u9700\u8981\u624b\u52a8\u7ba1\u7406\u3002\u867d\u7136\u5df2\u6709\u63d2\u4ef6\uff0c\u4f46\u8fd9\u4e0d\u4ec5\u8fdd\u80cc\u4e86\u8bbe\u8ba1\u521d\u8877\uff0c\u4e5f\u4f7f\u914d\u7f6e\u53d8\u5f97\u6742\u4e71\u3002<\/del><\/li>\n<li><a href=\"https:\/\/www.rollupjs.com\">rollup.js<\/a> JS \u6a21\u5757\u5316\u6253\u5305\uff0c\u66f4\u9002\u5408\u6784\u5efa\u72ec\u7acb\u7684 JS \u5e93<\/li>\n<\/ul>\n<h4>\u5176\u4ed6\u5728\u7ebf\u7f16\u8bd1\u6a21\u5757\u5316\u5de5\u5177<\/h4>\n<ul>\n<li><del datetime=\"2018-12-07T10:32:04+00:00\"><a href=\"https:\/\/seajs.github.io\/seajs\">Sea.js<\/a> CMD\uff0c\u5df2\u7ecf\u8fc7\u65f6\u7684 JavaScript \u6a21\u5757\u5316\u65b9\u6848<\/del><\/li>\n<li><del datetime=\"2018-12-07T10:32:04+00:00\"><a href=\"https:\/\/requirejs.org\">RequireJS<\/a> AMD\uff0c\u5df2\u8fc7\u65f6\u7684 JavaScript \u6a21\u5757\u5316\u65b9\u6848<\/del><\/li>\n<\/ul>\n<h2 id=\"framework\">\u6846\u67b6 Framework<\/h2>\n<h4>\u73b0\u4ee3\u6846\u67b6\u3001\u7efc\u5408\u6846\u67b6<\/h4>\n<ul>\n<li><a href=\"https:\/\/cn.vuejs.org\">Vue.js<\/a> \u7c7bMVVM\uff0c\u6784\u5efa\u6570\u636e\u9a71\u52a8\u7684 web \u754c\u9762\u7684\u5e93\uff0c\u975e\u4e25\u683c\u7684MVVM\u3002<\/li>\n<li><a href=\"https:\/\/reactjs.org\">React<\/a> \u6784\u5efa\u7528\u6237\u754c\u9762\uff0c\u5e38\u914d\u5408 Flux \u6216\u8005 Redux \u4f7f\u7528\u3002<\/li>\n<li><a href=\"https:\/\/angularjs.org\">Angular<\/a> 1.0 MVC\uff0c\u53cc\u5411\u7ed1\u5b9a\u6269\u5c55HTML\uff0c\u89e3\u8026DOM\u64cd\u4f5c\u548c\u5e94\u7528\u7a0b\u5e8f\u903b\u8f91\u30022.0 MVVM\uff0c\u5f15\u5165\u6a21\u5757\u5316\u7ec4\u4ef6\u6a21\u578b\u3002<\/li>\n<li><a href=\"https:\/\/emberjs.com\">Ember<\/a> MVVM\u3002<\/li>\n<li><a href=\"https:\/\/dojo.io\">Dojo<\/a> \u6e10\u8fdb\u5f0f\u6846\u67b6<\/li>\n<li><a href=\"https:\/\/infernojs.org\">Inferno<\/a> \u7c7bReact\u6846\u67b6<\/li>\n<li><a href=\"https:\/\/knockoutjs.com\">Knockout<\/a> MVVM\u7684\u5148\u9a71\u3002<\/li>\n<li><a href=\"https:\/\/riot.js.org\">Riot<\/a> UI\uff08\u6570\u636e\u6e32\u67d3\uff09\u6846\u67b6<\/li>\n<li><a href=\"https:\/\/polymer-zh.cn\">Polymer<\/a> \u5e2e\u52a9\u5f00\u53d1\u8005\u521b\u5efa\u81ea\u5b9a\u4e49\u7ec4\u4ef6<\/li>\n<li><a href=\"http:\/\/docs.kissyui.com\">KISSY<\/a> \u8de8\u7ec8\u7aef\u3001\u6a21\u5757\u5316\u3001\u9ad8\u6027\u80fd\u3001\u4f7f\u7528\u7b80\u5355\u7684 JavaScript \u6846\u67b6<\/li>\n<li><del datetime=\"2018-12-07T10:32:04+00:00\"><a href=\"https:\/\/www.sencha.com\/products\/extjs\">Ext JS<\/a> MVVM\uff0c\u6570\u636e\u5bc6\u96c6\u578b web \u5e94\u7528\u6846\u67b6\uff0c\u5305\u62ec\u4e86UI\u3001\u5c01\u88c5\u7684JS\u65b9\u6cd5\uff08\u592a\u7b28\u91cd\uff0c\u5df2\u7ecf\u5f88\u5c11\u4eba\u518d\u7528\u4e86\uff09<\/del><\/li>\n<li><a href=\"https:\/\/foundation.zurb.com\">Foundation<\/a><\/li>\n<\/ul>\n<h4>Server \u7aef\u6846\u67b6<\/h4>\n<ul>\n<li><a href=\"http:\/\/backbonejs.org\">Backbone.js<\/a> web \u5e94\u7528\u6784\u5efa\u5de5\u5177\uff0c MVC\uff0c\u670d\u52a1\u5668\u7aef\u6846\u67b6\uff0c\u4f9d\u8d56 Underscore.js\u3002<\/li>\n<li><a href=\"https:\/\/koa.bootcss.com\">koa<\/a><\/li>\n<li><a href=\"http:\/\/www.expressjs.com.cn\">Express<\/a><\/li>\n<\/ul>\n<h4>\u8de8\u7ec8\u7aef\u89e3\u51b3\u65b9\u6848<\/h4>\n<ul>\n<li><a href=\"https:\/\/ionicframework.com\">ionic<\/a><\/li>\n<li><a href=\"https:\/\/aurelia.io\">aurelia<\/a> \u5f00\u53d1\u6d4f\u89c8\u5668\u3001\u79fb\u52a8\u7aef\u3001\u684c\u9762\u7aef\u5e94\u7528\u7684\u73b0\u4ee3\u524d\u7aef\u6846\u67b6<\/li>\n<\/ul>\n<h4>UI\u6846\u67b6<\/h4>\n<ul>\n<li><a href=\"http:\/\/element.eleme.io\">Element<\/a><\/li>\n<li><a href=\"https:\/\/getuikit.com\">UIKit<\/a> \u5feb\u901f\u6784\u5efa web \u754c\u9762<\/li>\n<li><a href=\"https:\/\/www.iviewui.com\">iView<\/a> \u57fa\u4e8e vue \u7684 UI \u7ec4\u4ef6\u5e93<\/li>\n<li><a href=\"https:\/\/ant.design\/\">Ant Design<\/a> \u6e90\u4e8e\u8682\u8681\u91d1\u670d<\/li>\n<li><a href=\"https:\/\/www.layui.com\/\">layui<\/a> \u81ea\u5439\u7ecf\u5178\u6a21\u5757\u5316\u524d\u7aef\u6846\u67b6<\/li>\n<li><a href=\"https:\/\/bulma.io\">Bluma<\/a><\/li>\n<li><a href=\"http:\/\/getbootstrap.com\">Bootstrap<\/a><\/li>\n<li><a href=\"https:\/\/semantic-ui.com\">Semantic<\/a><\/li>\n<li><a href=\"http:\/\/www.jeasyui.com\">jQuery EasyUI<\/a> \u57fa\u4e8ejQuery\u7684UI\u6846\u67b6<\/li>\n<li><a href=\"http:\/\/jui.org\">J-UI<\/a> \u4e00\u4e2aUI\u6846\u67b6\uff0c\u542b\u6709\u5e03\u5c40\u3001\u4ea4\u4e92\u7b49\u7b49\u3002<\/li>\n<li><a href=\"https:\/\/milligram.io\">Milligram<\/a> CSS\u6846\u67b6<\/li>\n<li><a href=\"http:\/\/getskeleton.com\">Skeleton<\/a> CSS\u6837\u5f0f\u57fa\u51c6\uff0c\u975eUI\u6846\u67b6<\/li>\n<li><a href=\"https:\/\/purecss.io\/\">Pure<\/a> CSS\u6a21\u5757<\/li>\n<li><a href=\"http:\/\/mint-ui.github.io\">Mint-UI<\/a><\/li>\n<\/ul>\n<h4>\u79fb\u52a8\u7aef\u6846\u67b6<\/h4>\n<ul>\n<li><del datetime=\"2018-12-08T09:12:53+00:00\"><a href=\"http:\/\/clouda.baidu.com\">Blend<\/a> Baidu Clouda+ \u7684\u7ec4\u6210\u90e8\u5206\uff0c\u6b64\u5916\u8fd8\u6709 Rapid JS\uff08Node\u670d\u52a1\u7aef\u6846\u67b6\uff09\u548cRuntime\uff08\u79fb\u52a8\u7aef\u8f7b\u5e94\u7528\u8fd0\u884c\u73af\u5883\uff09\u3002Blend\u63d0\u4f9b\u4e86\u4e00\u5957\u7c7b\u4f3cHybrid\u7684\u89e3\u51b3\u65b9\u6848\u3002\uff08\u611f\u89c9\u7f3a\u5c11\u7ef4\u62a4\uff09<\/del><\/li>\n<\/ul>\n<h4>\u6a21\u677f\u5f15\u64ce<\/h4>\n<ul>\n<li><a href=\"https:\/\/pugjs.org\/api\/getting-started.html\">Pug<\/a> \u4e4b\u524d\u53ebJade\uff0c\u4e00\u6b3e\u62bd\u8c61\u5316\u7684\u6a21\u677f\u6846\u67b6\u3002<\/li>\n<\/ul>\n<h2 id=\"library\">\u5e93 Library<\/h2>\n<ul>\n<li><a href=\"https:\/\/lodash.com\">Lodash<\/a> \u63d0\u4f9b\u6a21\u5757\u5316\u3001\u6027\u80fd\u548c\u9644\u52a0\u529f\u80fd<\/li>\n<li><a href=\"https:\/\/underscorejs.org\">Underscore.js<\/a> \u51fd\u6570\u6269\u5c55<\/li>\n<li><a href=\"http:\/\/www.typescriptlang.org\">TypeScript<\/a> JavaScript\u7c7b\u578b\u5316\u8d85\u96c6<\/li>\n<li><a href=\"http:\/\/jquery.com\">jQuery<\/a> \u5c01\u88c5\u65b9\u6cd5\uff0c\u63d0\u9ad8\u7f16\u7a0b\u6548\u7387\uff0c\u5305\u542b DOM API\u3002<\/li>\n<li><a href=\"https:\/\/zeptojs.com\">Zepto<\/a> \u7c7bjQuery\uff0c\u5c01\u88c5\u65b9\u6cd5\uff0c\u63d0\u9ad8\u7f16\u7a0b\u6548\u7387\uff0c\u5305\u542b DOM API\u3002<\/li>\n<li><del datetime=\"2018-12-07T10:32:04+00:00\"><a href=\"https:\/\/mootools.net\/\">MooTools<\/a><\/del><\/li>\n<\/ul>\n<h2 id=\"make\">\u4ee3\u7801\u7f16\u8bd1<\/h2>\n<ul>\n<li><a href=\"https:\/\/babeljs.io\">Babel<\/a> \u5c06 ES6 \u8f6c\u6362\u4e3a ES5<\/li>\n<li><a href=\"http:\/\/lesscss.org\">Less<\/a> CSS \u7f16\u8bd1\u5de5\u5177<\/li>\n<li><a href=\"http:\/\/sass-lang.com\">Sass<\/a> CSS \u7f16\u8bd1\u5de5\u5177<\/li>\n<li><a href=\"http:\/\/stylus-lang.com\">Stylus<\/a><\/li>\n<\/ul>\n<h2 id=\"lint\">\u4ee3\u7801\u68c0\u67e5<\/h2>\n<ul>\n<li>ESLint<\/li>\n<li>JSHint<\/li>\n<li>JSLint<\/li>\n<\/ul>\n<h2 id=\"unit-test\">\u5355\u5143\u6d4b\u8bd5<\/h2>\n<ul>\n<li>Mocha<\/li>\n<li>Jasmine<\/li>\n<li>Jest<\/li>\n<li>QUnit<\/li>\n<\/ul>\n<h2 id=\"debug\">\u8c03\u8bd5\u5de5\u5177<\/h2>\n<ul>\n<li>browsersync \u591a\u8bbe\u5907\u540c\u6b65\u6d4b\u8bd5<\/li>\n<li><a href=\"http:\/\/www.telerik.com\/fiddler\">Fiddler<\/a> HTTP\u8bf7\u6c42\u8c03\u8bd5\u5de5\u5177<\/li>\n<\/ul>\n<h2 id=\"package-manager\">\u5305\u7ba1\u7406\u5de5\u5177<\/h2>\n<ul>\n<li><a href=\"https:\/\/bower.io\">Bower<\/a> \u524d\u7aef\u5305\u7ba1\u7406\u5de5\u5177<\/li>\n<li><a href=\"\/\/feizhaojun.com\/?p=508\">npm<\/a> \u524d\u7aef\u5de5\u5177\u6e90\uff0c\u53e6\u4e00\u4e2a\u6f5c\u5728\u7684\u524d\u7aef\u6a21\u5757\u6e90<\/li>\n<li><a href=\"https:\/\/yarnpkg.com\/zh-Hans\">Yarn<\/a> Facebook\u63a8\u51fa\u7684\u9ad8\u6548\u5305\u7ba1\u7406\u5de5\u5177<\/li>\n<\/ul>\n<h2 id=\"revision\">\u7248\u672c\u7ba1\u7406<\/h2>\n<ul>\n<li>git \u6258\u7ba1\u53ef\u4ee5\u4f7f\u7528 <a href=\"https:\/\/github.com\">Github<\/a> \u6216 <a href=\"https:\/\/gitee.com\">\u7801\u4e91<\/a><\/li>\n<li>SVN<\/li>\n<\/ul>\n<p><strong>\u53c2\u8003\u6587\u7ae0<\/strong><br \/>\n- <a href=\"https:\/\/segmentfault.com\/a\/1190000017183743\">\u524d\u7aef\u6784\u5efa\uff1a3\u7c7b13\u79cd\u70ed\u95e8\u5de5\u5177\u7684\u9009\u578b\u53c2\u8003<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>UPDATE: 2018-12-05 17:01 \u524d\u9762\u591a\u8bf4\u4e00\u53e5\uff0c\u6211\u89c9\u5f97\u524d\u7aef\u7684\u7075\u9b42\u662f AJAX\uff0c\u6709\u4e86 AJAX \u624d\u6709\u4e86\u524d\u7aef&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-547","post","type-post","status-publish","format-standard","hentry","category-fe","category-javascript"],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/feizhaojun.com\/index.php?rest_route=\/wp\/v2\/posts\/547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/feizhaojun.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/feizhaojun.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/feizhaojun.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/feizhaojun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=547"}],"version-history":[{"count":65,"href":"https:\/\/feizhaojun.com\/index.php?rest_route=\/wp\/v2\/posts\/547\/revisions"}],"predecessor-version":[{"id":2238,"href":"https:\/\/feizhaojun.com\/index.php?rest_route=\/wp\/v2\/posts\/547\/revisions\/2238"}],"wp:attachment":[{"href":"https:\/\/feizhaojun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/feizhaojun.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/feizhaojun.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}