前端模块化(AMD和CMD、CommonJs)

知识点1:AMD/CMD/CommonJs是JS模块化开发的标准,目前对应的实现是RequireJs/SeaJs/nodeJs.node

知识点2:CommonJs主要针对服务端,AMD/CMD主要针对浏览器端,因此最容易混淆的是AMD/CMD。(顺便提一下,针对服务器端和针对浏览器端有什么本质的区别呢?服务器端通常采用同步加载文件,也就是说须要某个模块,服务器端便停下来,等待它加载再执行。而浏览器端要保证效率,须要采用异步加载,这就须要一个预处理,提早将所须要的模块文件并行加载好。)浏览器

知识点3 : AMD/CMD区别,虽然都是并行加载js文件,但仍是有所区别,AMD是预加载,在并行加载js文件同时,还会解析执行该模块(由于还须要执行,因此在加载某个模块前,这个模块的依赖模块须要先加载完成);而CMD是懒加载,虽然会一开始就并行加载js文件,可是不会执行,而是在须要的时候才执行。服务器

知识点4:AMD/CMD的优缺点.一个的优势就是另外一个的缺点, 能够对照浏览。
AMD优势:加载快速,尤为遇到多个大文件,由于并行解析,因此同一时间能够解析多个文件。
AMD缺点:并行加载,异步处理,加载顺序不必定,可能会形成一些困扰,甚至为程序埋下大坑。
CMD优势:由于只有在使用的时候才会解析执行js文件,所以,每一个JS文件的执行顺序在代码中是有体现的,是可控的。
CMD缺点:执行等待时间会叠加。由于每一个文件执行时是同步执行(串行执行),所以时间是全部文件解析执行时间之和,尤为在文件较多较大时,这种缺点尤其明显。异步

知识点5:如何使用?CommonJs的话,由于nodeJs就是它的实现,因此使用node就行,也不用引入其余包。AMD则是经过<script>标签引入RequireJs。CMD则是引入SeaJs。

模块化

相关文章
相关标签/搜索