AMD与CMD规范 - xiaojiandong/blogAndResourceCollect GitHub Wiki
AMD与CMD规范
// http://blog.chinaunix.net/uid-26672038-id-4112229.html
/*
*
* 1. AMD(异步模块加载) - require.js
* define('moduleName',['m1','m2','m3'],function(m1,m2,m3){//参数:模块名,依赖的模块,方法实例化的对象
* return SUBJ = {
* }; // 实例化的对象
* });
*
* 2. CMD(同步模块加载) - sea.js : 与node般的书写模块代码,依赖自动加载
* define(function(require,exports,module){
* var a = require('./a'); //获取a模块的接口
* a.fn1(); // 执行a模块的方法
* 2.1 exports.foo = 'hehe'; // 向外暴露属性或方法
* exports.fn1 = function(){};
* 2.2 // 上述 exports的用法也可以用 return,向外暴露
* return myModule = {
* 'foo' : 'haha',
* 'fn1' : function(){}
* }
* 2.3 // 用module.exports向外暴露
* module.exports = {
* 'foo' : 'nali',
* 'fn1' : function(){}
* };
* });
*
* 3. 两者的区别
* 3.1 AMD是提前执行,CMD是延迟执行;AMD依赖前置,CMD依赖就近
* // AMD写法:
* define(['./a','./b'],function(a,b){ // 依赖一开始就要写好
* a.doFn1();
* b.doFn2();
* });
* // CMD写法:
* define(function(require,exports,module){ // 当需要某个模块时才加载
* var a = require('./a');
* a.doFn1(); // 获取a模块的方法
* a.foo1; // 获取a模块的属性
* // others ...
* var b = require('./b'); // 获取b模块
* b.doFn2();
* b.foo2;
* });
*
*
*/