# JavaScript教程 - 20 模块化
模块化就是将代码按照功能分割为独立、可复用的模块,这样利于代码的组织和管理以及代码复用。还可以解决了全局变量污染等问题。
# 20.1 立即执行函数
在以前的 JavaScript 中,使用立即执行函数表达式(IIFE),通过闭包的方式来模拟模块化,但缺乏标准化的依赖管理。
举个栗子:
我们定义一个 moduleA.js
,内容如下:
// 模块A
const moduleA = (function() {
let privateVar = 'A的私有变量';
function privateMethod() {
console.log(privateVar);
}
return {
publicMethod: function() {
privateMethod();
}
};
})();
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 在上面的代码中创建了一个立即执行函数,并将函数的返回结果赋值给 moduleA,这个函数其实是构成了一个闭包,函数内的变量外部是无法访问的,避免被其他代码修改,造成污染。
在使用的时候,引入上面的 js 并使用:
<script src="moduleA.js"></script>
<script>
moduleA.publicMethod(); // 输出: A的私有变量
</script>
1
2
3
4
2
3
4
- 但是 IIFE 这种方式无法声明依赖关系,只能依赖 script 的加载顺序,如果模块 A 依赖模块 B,必须先引入 B,否则就报错。所以说 IIFE 只是语法技巧,并不是真正意义上的模块机制,它不能自动管理依赖、导出、导入。
# 20.2 现代模块化方式
ECMAScript 2015(ES6)引入的原生模块系统,可以使用 export
导出模块成员,使用 import
导入模块成员,并且支持静态解析(编译时确定依赖关系)。
内容未完......
← 19-异步编程 21-浏览器的本地存储 →