AMD与CMD异同

2015-09-17 veryyoung 更多博文 » 博客 » GitHub »

原文链接 http://veryyoung.me/blog/2015/09/17/difference-between-amd-and-cmd.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


近来 AMD 和 CMD 的讨论异常的激烈,他们到底有哪些相同或不同的呢?

<!-- more -->


本来想写篇文章说明一下,结果随便 Google 一下,发现 SeaJS 的作者玉伯已经说的很明白了!

直接贴链接吧!

  1. SeaJS 与 RequireJS 的异同
  2. AMD 和 CMD 的区别有哪些?

玉伯很耐心的在 Github 和知乎等地方很耐心的解答网友的问题,非常赞!!


个人理解:

SeaJS 和 RequireJS 都是为前端模块化编程提供的解决方案。

最大的不同点在于 SeaJS 是懒执行,RequireJS 是提前执行。

AMD 的性能会好一点,因为 RequireJS 会预先加载所有的模块,直到使用的时候才执行(会浪费资源); CMD 只有真正需要的时候才加载依赖,性能会差点。

前端开发和后端不同,后端绝大多数情况下是需要用的时候才加载模块,这样能避免浪费。

前端每次请求一个资源都会新开一个 http 请求,会很浪费资源,不如一次加载完的好。

所以可能后端开发者可能会比较习惯 CMD 的思想, 而前端开发者为了提高效率(减少 http 消耗,但可能会加载没执行到的模块)会使用 AMD 。

另外如果把整个网站的 JS 都打成一个包,就木有 CMD 这个概念了!