同过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; });