CommonJS/AMD/CMD/UMD概念初探

一、CommonJS是一种规范,NodeJS是这种规范的实现。javascript

1.一、CommonJS 加载模块是同步的,因此只有加载完成才能执行后面的操做。html

参考:java

http://www.commonjs.org/node

http://javascript.ruanyifeng.com/nodejs/module.htmlgit

二、AMD是RequireJS在推广过程当中对模块定义的规范化产出。github

2.一、AMD异步加载模块。web

参考:api

https://github.com/amdjs/amdjs-api/wiki/AMD浏览器

http://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html服务器

三、CMD是SeaJS在推广过程当中对模块定义的规范化产出。

3.一、对于依赖的模块AMD是提早执行,CMD是延迟执行。不过RequireJS从2.0开始,也改为能够延迟执行(根据写法不一样,处理方式不经过)。

3.二、CMD推崇依赖就近,AMD推崇依赖前置。

参考:

https://github.com/cmdjs/specification/blob/master/draft/module.md

https://github.com/seajs/seajs/issues/242

四、UMD是AMD和CommonJS的融合。

4.一、AMD 浏览器第一的原则发展 异步加载模块。

4.二、CommonJS 模块以服务器第一原则发展,选择同步加载,它的模块无需包装(unwrapped modules)。

4.三、这迫令人们又想出另外一个更通用的模式UMD (Universal Module Definition)。但愿解决跨平台的解决方案。 UMD先判断是否支持Node.js的模块(exports)是否存在,存在则使用Node.js模块模式。 在判断是否支持AMD(define是否存在),存在则使用AMD方式加载模块。

参考:

https://github.com/umdjs/umd

以上是关于对JS的概念的理解,后续在进行深刻尝试。

参考:

http://javascript.ruanyifeng.com/nodejs/module.html

http://www.cnblogs.com/fullhouse/archive/2011/07/15/2107416.html

https://justineo.github.io/singles/writing-modular-js/

https://my.oschina.net/felumanman/blog/263330?p=1

http://web.jobbole.com/82238/

http://blog.gejiawen.com/2015/11/03/what-is-amd-cmd-commonjs-umd/?utm_source=tuicool&utm_medium=referral

https://www.zhihu.com/question/20351507

http://www.cnblogs.com/mfc-itblog/p/5216820.html

1.对于依赖的模块AMD是提早执行,CMD是延迟执行。不过RequireJS从2.0开始,也改为能够延迟执行(根据写法不一样,处理方式不经过)。

2.CMD推崇依赖就近,AMD推崇依赖前置。

相关文章
相关标签/搜索