之前node笔记中有提到关于模块的概念,在此总结一下AMD、CMD、CommonJS和es6模块。
AMD和CMD概念
之前的JavaScript没有模块这一功能,后来出现了CMD和AMD这两种方式。
AMD(Asynchronous Module Definition)是 RequireJS 在推广过程中对模块定义的规范化产出。提前执行,推崇依赖前置
CMD(Common Module Definition)在推广过程中对模块定义的规范化体现是 SeaJS。延迟执行,推崇依赖就近
AMD的基本用法
1 | define(id?, dependencies?, factory); |
CMD的基本用法
1 | define(id?, dependencies?, factory); |
CommonJS和es6模块
AMD和CMD都属于浏览器端模块开发的规范。CommonJS 是服务端的规范,Node.js 采用了这个规范。
- CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
CommonJS
1 | // a.js |
es6模块
1 | // a.js |
参考链接
https://github.com/seajs/seajs/issues/242
https://github.com/amdjs/amdjs-api/wiki/AMD
http://es6.ruanyifeng.com/#docs/module