简单理解commonjs、AMD、CMD

相同点:三者都是为了实现javascript模块化而产生的规范。
不同点:

  • commonjs是随着nodejs的火而火起来的,nodejs采用了commonjs规范,实现了(require、exports、module)等。

  • AMD 最好的实现模块化的方式是实现前后端统一的标准,无奈,commonjs并不适用于浏览器。比如:在后端使用
    {
    var math = require('math');
    math.add(2, 3);
    }
    在加载完成math.js模块之后,可以计算2+3,但是若是在前端使用,由于同步加载过程中,可能会造成浏览器“假死”的状态,不利用用户的体验,所以异步加载规范AMD诞生。其中的应用实例是require.js。

  • CMD 是在Sea.js中逐渐火起来,推崇的是as lazy as possible。

AMD 和 CMD的主要区别

1: 对于依赖的模块,AMD是提前执行,CMD是延迟执行。不过从require.js2.0起,AMD也实现延迟执行(写法不同,执行方式不同),CMD思想是as lazy as possible.
2: AMD推崇依赖前置,CMD推崇依赖就近。代码如下

  //AMD
  define(['./a', './b'], function(a, b){
      a.doSomething();
      ......
      b.doSomething();
  })

  //CMD
  define(function(require, exports, module){
    var a = require('./a');
    a.doSomething();
    ......
    var b = require('./b');
    b.doSomething();
  })

3: AMD的API默认的是一个当多个用,CMD比较严格,指责单一。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容