美文网首页
简单理解commonjs、AMD、CMD

简单理解commonjs、AMD、CMD

作者: 艾石溪 | 来源:发表于2017-03-06 11:46 被阅读28次

    相同点:三者都是为了实现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比较严格,指责单一。

    相关文章

      网友评论

          本文标题:简单理解commonjs、AMD、CMD

          本文链接:https://www.haomeiwen.com/subject/agwygttx.html