zoukankan      html  css  js  c++  java
  • CommonJS,AMD,RequireJS的差别


    RequireJS实现了AMD的API.

    CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容。简单地实现一个CommonJS的定义就像以下这样:

    // someModule.js

    exports.doSomething = function() { return "foo"; };

    //otherModule.js

    var someModule = require('someModule'); // in the vein of node    

    exports.doSomethingElse = function() { return someModule.doSomething() + "bar"; };

    基本上CommonJS明白了你须要有一个require函数来获取依赖,exports变量来输出模块的内容和一些用来获取依赖的模块标识符。

    CommonJS有多种实现。比方Node.js.

    由于CommonJS设计的时候没有考虑浏览器,所以它不适合浏览器环境(我事实上对这个不明白,可是这样的说法到处都有,比方RequireJS官网)。所以我们得做一些工作来实现异步载入。

    相反,RequireJS实现了AMD。它被设计用来适应浏览器环境。表面上看来,AMD開始是CommonJS输出格式的副产品,并且终于进化出了自己的API。

    在AMD中出现的新东西是define函数。它同意模块在载入依赖之前声明它的依赖。比如定义可能就像以下这样:

    define('module/id/string', ['module', 'dependency', 'array'], 

    function(module, factory function) {

    return ModuleContents;  

    });

    因此CommonJS和AMD是Javascript模块定义API的不同的实现。可是他们有同样的根源。AMD更适合浏览器,由于它支持异步载入模块依赖。RequireJS是AMD的一个实现,并且尽量保留了CommonJS的精神(主要是模块标识符上)。

    更让人混乱的是,RequireJS在实现AMD的同一时候,还提供了一个CommonJS包裹,这样CommonJS模块能够差点儿直接被RequireJS引入。

    define(function(require, exports, module) {

        var someModule = require('someModule'); // in the vein of node    

        exports.doSomethingElse = function() { return       someModule.doSomething() + "bar"; };

    });

  • 相关阅读:
    CodeForces 731A Night at the Museum
    nyoj914 Yougth的最大化
    addEventListener或attachEvent都可以用bind代替
    答疑
    js判断是pc还是手机
    js实现xml转json和json转xml
    js实现xml转json
    margin重叠的解决办法
    去除移动端按钮点击时的阴影和rem标签垂直居中
    关于fiddler https 客户端 抓包配置
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7093118.html
Copyright © 2011-2022 走看看