CommonJS和AMD和CMD

作者: 阿r阿r | 来源:发表于2018-09-10 21:31 被阅读1次

    CommonJS

    应用案例:nodejs、webpack、npm
    形式:require、exports、module

    require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。

    NPM了。NPM作为Node的包管理器,不是为了帮助Node解决依赖包的安装问题嘛,那它肯定也要遵循CommonJS规范啦,它遵循包规范(还是理论)的。

    而且最好两者能够兼容,一个模块不用修改,在服务器和浏览器都可以运行。但是,由于一个重大的局限,使得CommonJS规范不适用于浏览器环境。

    浏览器不兼容CommonJS的根本原因,在于缺少四个Node.js环境的变量。

    module
    exports
    require
    global


    AMD

    应用: requirejs、curljs

    写法:require([module], callback) 、define

    因此,浏览器端的模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous)。这就是AMD规范诞生的背景。

    CommonJS是主要为了JS在后端的表现制定的,他是不适合前端的,AMD(异步模块定义)出现了,它就主要为前端JS的表现制定规范。

    AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。

    AMD也采用require()语句加载模块,但是不同于CommonJS,它要求两个参数:

      require([module], callback);
    

    第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。如果将前面的代码改写成AMD形式,就是下面这样:

      require(['math'], function (math) {
    
        math.add(2, 3);
    
      });
    

    CMD

    应用: seajs

    参考
    js模块化编程之彻底弄懂CommonJS和AMD/CMD!

    相关文章

      网友评论

        本文标题:CommonJS和AMD和CMD

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