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"; };

    });

  • 相关阅读:
    [LUOGU]P1443 马的遍历
    NOIP 2017 D2T1 奶酪
    [0] Hello World
    网络测速 风行天下
    zabbix自动发现与监控内存和CPU使用率最高的进程,监测路由器 风行天下
    网络性能测试工具iperf 风行天下
    Centos7下杀毒软件clamav的安装和使用 风行天下
    LINUX漏洞安全防护防火墙相关 风行天下
    smokeping配置方法 风行天下
    vb+MAPX 数据绑定
  • 原文地址:https://www.cnblogs.com/wyaocn/p/5761421.html
Copyright © 2011-2022 走看看