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的区别的主要内容,如果未能解决你的问题,请参考以下文章