AMD是RequireJS在推广过程中对模块定义的规范化产出。
- 异步加载模块,依赖前置,提前执行。
- Define定义模块 define([‘require’,’foo’],function(){return});
- Require加载模块(依赖前置) require([‘foo’,’bar’],function(foo,bar){});
CMD是SeaJS在推广过程中对模块定义的规范化产出。
- Define定义exports 导出define(function(require,exports,module){}); module上存储了当前模块上的一些对象。
- require(./a)直接引入。Require.async异步引入。
- 同步加载,依赖就近,延迟执行。
SeaJS 的应用
官方入门例子:http://seajs.org/docs/#quick-start
怎么写一个SeaJS模块?
// 所有模块都通过 define 来定义 define(function(require, exports, module) { // 通过 require 引入依赖 var $ = require('jquery'); var Spinning = require('./spinning'); // 通过 exports 对外提供接口 exports.doSomething = ... // 或者通过 module.exports 提供整个接口 module.exports = ... });
在页面中加载模块
在 hello.html 页尾,通过 script 引入 sea.js 后,有一段配置代码: // seajs 的简单配置 seajs.config({ base: "../sea-modules/", alias: { "jquery": "jquery/jquery/1.10.1/jquery.js" } }) // 加载入口模块 seajs.use("../static/hello/src/main")