javascript.basics
javascript.basics copied to clipboard
AMD / CMD规则
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适合浏览器环境
CMD- 同步加载
- CommonJS规范,同步加载(seaJS并不是这个模式)
Sea.js(延迟执行) seaJS
-
commonJS的规范,其实更适合的是本地的服务端打包方式,不需要考虑异步请求规范。
-
seaJS符合的是推崇依赖就近。 有必要简单提一下两者的主要区别,CMD推崇依赖就近,可以把依赖写进你的代码中的任意一行,例: