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;
   *   });
   *
   *
   */