AMD CMD commonJS es6 到底是什么区别

看到很多人傻傻的分不清楚 AMD、CMD 、 commonJS 、 es6的区别,实际上这跟这几年前段技术的发展有很大的关系。

实际上这是JavaScript的模块化思想演进的一个过程。

最开始的时候我们都是在 首页 index.html 中,通过N多个<script>标签来引入各个js文件(每个js 文件就是一个单独的模块)。这其中我们的加载先后的顺序非常的受限制。需要根据依赖的先后进行依次加载。

AMD首先它是一个规范  全称是Asynchronous Module Definition,即异步模块加载机制。AMD很短也很简单,但它却完整描述了模块的定义,依赖关系,引用关系以及加载机制。从它被requireJS,NodeJs,Dojo,JQuery使用也可以看出它具有很大的价值。AMD规范简单到只有一个API,即define函数:

define([module-name?], [array-of-dependencies?], [module-factory-or-object]);
   module-name: 模块标识,可以省略。
   array-of-dependencies: 所依赖的模块,可以省略。
   module-factory-or-object: 模块的实现,或者一个JavaScript对象。

 常用的require.js就是这个的规范实现。

CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。seaJs是国内著名工程师玉伯提出来的,它既遵循了amd规范,又遵循commonJs规范,所以称之为cmd规范。

CommonJS规范是诞生比较早的。NodeJS就采用了CommonJS,这种写法适合服务端,因为在服务器读取模块都是在本地磁盘,加载速度很快。但是如果在客户端,加载模块的时候有可能出现“假死”状况,因为它是同步加载所要依赖的其他模块。

es6 的意思是javascript 本事实现了 模块化的  不用再引入第三方库(如:require.js  sea.js)

猜你喜欢

转载自www.cnblogs.com/Paul-Yellow/p/10077461.html