js 模块化
js 模块化的演变
模块可以认为是认为一个功能的封装。在代码中的体现就是一个函数、一个对象、一个文件等等。
它解决的问题是 js命名空间 。
- 原始写法
function a(){
// ...
}
function b(){
// ...
}
缺点:涉及的全局变量很多,模块成员之间的关系不明确。
- 对象写法
进一步的解决:把相近功能的模块成员放作为对象的属性或方法。
var m = {}
m.num = 1;
m.a = function(){
this.a = 12;
// ...
};
m.b = function(){
this.a += 2;
// ...
}
缺点:内部成员可被修改,不安全。
- IIFE
var m = (function(){
var num = 1;
var a = function(){
// ...
}
var b = function(){
// ...
}
return {
a:a,
b:b
}
})();
jquery和其他的函数库都采用的是IFFE 这样的写法。
- 借用第三方的sea.js 或者 基于node的webpack ...