该如何理解AMD ,CMD,CommonJS规范

来源:互联网 发布:linux运维个人简历 编辑:程序博客网 时间:2024/06/05 23:57

该如何理解CommonJS , AMD ,CMD规范

CommonJS:

CommonJS API定义很多普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。

在CommonJS中,有一个全局性方法require(),用于加载模块。

NodeJS是CommonJS规范的实现,webpack 也是以CommonJS的形式来书写。


AMD:

异步模块定义规范(AMD)制定了定义模块的规则,这样模块和模块的依赖可以被异步加载。这和浏览器的异步加载模块的环境刚好适应(浏览器同步加载模块会导致性能、可用性、调试和跨域访问等问题)。

AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。


CMD:

4、AMD和CMD的区别

       下面这几点是玉伯在知乎上说的。

    对于依赖的模块,AMD 是提前执行,CMD 是延迟执行。不过 RequireJS 从 2.0 开始,也改成可以延迟执行(根据写法不同,处理方式不同)。CMD 推崇 as lazy as possible.

     CMD 推崇依赖就近,AMD 推崇依赖前置

  AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹


参考资料:

http://www.cnblogs.com/chenguangliang/p/5856701.html

http://www.cnblogs.com/qianshui/p/5216580.html

https://github.com/amdjs/amdjs-api/wiki/AMD-(%E4%B8%AD%E6%96%87%E7%89%88)