- 模块化历史
- js文件即模块, 全靠自觉, 一种没有模块化的模块
- 对象命名空间
//a.js
let M_1 = {
name: 'joo',
age: 16
}
//b.js
let M_2 = {
name: 'jooo',
age: 17
}
- IIFE把变量挂到window上(编写浏览器js时)
利用此种方式将函数包装成一个独立的作用域,私有空间的变量和函数不会影响到全局作用域。这种方式相当于现在写插件的形式,解决了变量命名冲突的问题,但是没有解决降低开发复杂度的问题。
- Commonjs
- AMD
- CMD
这三种模块的实现可以查阅文档
本质上都是运行时实现的模块化
- ES6 Module
ECMAScript 6(ES6,2015 年发布),是 JavaScript 最新的官方版本。
从语言层面实现了模块化语法, 也就是编译时实现的模块化
其中import关键字也在ECMAScript 5(ES5,2009 年发布)被保留下来, 虽然实现是在ES6