美文网首页
commonjs amd cmd

commonjs amd cmd

作者: 别让我一个人醉_1fa7 | 来源:发表于2017-10-09 18:54 被阅读0次

Commonjs

  • Commonjs是一个偏向于服务器端的规范。Node.js采用了这个规范。 根据CommonJS规范,一个单独的文件就是一个模块。加载模块使用require方法,该方法读 取一个文件并执行,最后返回文件内部的exports对象。CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作

AMD

  • 加载模块是异步方式,模块的加载不影响它后面语句的执行。所有依赖这个模块的语句,都定义到一个回调函数中,等到加载完成之后,这个回调函数才会运行。
  • AMD规范使用define方法定义模块,通过数组引入依赖 ,回调函数通过形参传入依赖:
    define(["/libs/jquery"], function(jquery){
        function log(){
            alert("hello world!");
        }
        return {
            log: log
        }
    });
  • AMD也允许输出模块兼容CommonJS规范:
define(function(require, exports, module){
        var module = require("module");
        module.doSometing( );
        exports.do = function(){
            module.doSometing( );
        }
    });
  • AMD 是 RequireJS 在推广过程中对模块定义的规范化产出

CMD

  • CMD 是 SeaJS 在推广过程中对模块定义的规范化产出
  • CMD和AMD的区别有以下几点:
    • 对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不通过)。
    • CMD推崇依赖就近,AMD推崇依赖前置。
amd//
define(['./a','./b'], function (a, b) {
    //依赖一开始就写好
    a.test();
    b.test();
});
cmd//
define(function (requie, exports, module) {     
    //依赖可以就近书写
    var a = require('./a');
    a.test();     
    ...
    //软依赖
    if (status) {  
        var b = requie('./b');
        b.test();
    }
});

相关文章

网友评论

      本文标题:commonjs amd cmd

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