AMD与CMD的一个简单demo
$ npm install
$ npm start
// console输出
server start at 3000
访问:
main required
mod1 required
mod1 hello
mod2 required
mod2 hello
main hello
mod2 required
mod1 required
main required
mod1 hello
mod2 hello
main hello
CMD
和AMD
的区别:
- 模块执行机制差别
首先,要清楚模块执行机制和模块加载机制的概念。模块加载机制是指浏览器请求模块的方式,这里两者都是异步请求,因此没有区别。而模块执行机制是指factory
的执行顺序。CMD
是懒执行的,即执行流从主模块factory
开始,如果require
到某个依赖模块,则再去执行该依赖模块的factory
。而AMD
是在执行主模块factory
之前,先执行所有依赖模块的factory
。
- 依赖模块的执行顺序差别
在上一条结论里,由于CMD
是懒执行的,因此执行顺序始终是一致的。而AMD
里各自的依赖模块执行顺序是无序的,即浏览器请求到模块时立即执行factory
。在demo的代码里故意延迟加载mod1.js
,从输出结果可以看到mod2先执行。