同過JavaScript咱們能夠很方便去去引入js調用其中的方法,但因爲JavaScript淡化了類的概念,咱們會比較困難去按模塊去調用既定已封裝好的特定功能的方法。目前關於模塊化的規範有amd和commonjs,AMD是瀏覽器端模塊化開發的規範(requirejs採用此規範),CommonJs是服務器端模塊化開發規範(nodejs採用此規範) html
因爲市面上大多瀏覽器JavaScript引擎都是單線程機制的,也就是說瀏覽器不管是渲染ui仍是運行JavaScript都是單線程執行的,通常的web項目咱們調用api都會經過異步JavaScript實現,但大部分項目JavaScript文件的加載實際上都是同步的。 java
實際上採用AMD規範的requirejs加載全部模塊化的js都是經過異步實現的,甚至requirejs其自己也能夠經過異步加載實現。 node
requirejs下載連接 https://github.com/amdjs/amdjs-api/wiki/require jquery
<script data-main="/res/js/product.buy" src="/res/js/require.js" defer async="true" ></script>
var shim = { 'scroll': { deps: ['jquery'], exports: 'jQuery.fn.scroll' }, "jquery.json-2.4": { deps: ['jquery'], exports: "JSON" } }; require.config({ paths: { "jquery": "/res/js/jquery-2.1.4.min", "cookie": "/res/js/jquery.cookie" }, shim: shim }); require([ "xboss.wap.common.1.0", "module.product", "module.customer", "module.cart", "module.check", "module.collection", "module.praise", "module.render" ], function (common, product, customer, cart, check, collection, praise, render) { $(function () { "user strict"; });
define([ 'jquery', "xboss.wap.common.1.0", "module.render", "module.check", "module.cart", "module.http" ], function ($, common, render, check, cart, http) { var product = {}; return product; });