AMD/CMD/CommonJs的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AMD/CMD/CommonJs的区别相关的知识,希望对你有一定的参考价值。

AMD/CMD/CommonJs是js模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs.

CommonJs 主要针对服务器端,AMD/CMD 主要针对浏览器端。

服务器端和浏览器端有什么区别呢?

服务器端一般采用同步加载文件,也就是说需要某个模块,服务器便停下来,等待它加载再执行,而浏览器要保证效率,需要采用异步加载,这就需要一个预处理,提前将说需要的模块并行加载好。

AMD和CMD的区别,虽然都是并行加载文件,但还是有所区别,AMD是预加载,在并行加载js文件同时,还会解析执行该模块(因为还需要执行,所以在加载某模块前,这个模块的依赖模块必须先加载完),而CMD是懒加载,虽然会一开始就并行加载js文件,但是不会执行,而是在需要的时候才执行。

ADM是依赖前置,CMD是依赖就近

AMD 和CMD 的优缺点

AMD: 优点:加载速度快,因为并行解析,所以同一时间可以解析多个文件

缺点:并行加载,异步处理,加载顺序不一定,可能会造成一些困扰。

CMD:优点: 只有使用的时候才解析执行js文件,因此,每个js文件的执行顺序是可控的。

缺点:因为每个文件是同步执行,因此时间是所有文件执行时间之和。

 

如何使用ADM/CMD/CommonJs ?

nodejs是CommonJs的实现,所以使用node就可以,也不用引入其他包。AMD则是通过script 标签引入RequireJs,CMD 则是script标签引入Seajs  

以上是关于AMD/CMD/CommonJs的区别的主要内容,如果未能解决你的问题,请参考以下文章

前端模块化(AMD和CMDCommonJs)

了解JS模块规范:AMD,CMD,CommonJS

浅析JS模块规范:AMD,CMD,CommonJS

浅析JS模块规范:AMD,CMD,CommonJS

Amd,Cmd, Commonjs, ES6 import/export的异同点

把自己的js模块兼容到AMD CMD CommonJS