javascript.basics icon indicating copy to clipboard operation
javascript.basics copied to clipboard

AMD / CMD规则

Open Kelichao opened this issue 9 years ago • 0 comments

AMD(异步加载)- CMD(同步/本地加载)

  • AMD是前置依赖,CMD是就近依赖。

模块化的基本写法

  var module1 = (function(){
              // 内部私有变量不被暴露
    var _count = 0;

             // 可以用于外部使用的共有方法
    var m1 = function(){
      //...
    };
    var m2 = function(){
      //...
    };

              // 返回对象模块,由于有返回值,通过闭包保存局部变量
    return {
      m1 : m1,
      m2 : m2
    };
  })();

AMD异步加载-代表RequireJS(提前执行) requireJS

  • 就是说执行requireJS第一行代码开始,所有js都已经全部加载并且可以使用。

  • 这段代码的问题是如果math这个模块加载很慢,整个浏览器就卡死在那里。

 var math = require('math');
  math.add(2, 3);
  • 所以AMD的解决思路是做成一个回调函数,等待对应模块加载完毕了,再去触发callback
 require(['math'], function (math) {
           //回调函数
    math.add(2, 3);
  });

所以AMD适合浏览器环境

requireJs中文网

CMD- 同步加载

  • CommonJS规范,同步加载(seaJS并不是这个模式)

Sea.js(延迟执行) seaJS

  • commonJS的规范,其实更适合的是本地的服务端打包方式,不需要考虑异步请求规范。

  • seaJS符合的是推崇依赖就近。 有必要简单提一下两者的主要区别,CMD推崇依赖就近,可以把依赖写进你的代码中的任意一行,例:

Kelichao avatar Nov 19 '16 13:11 Kelichao