博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CommonJS,AMD,RequireJS的差别
阅读量:7009 次
发布时间:2019-06-28

本文共 1160 字,大约阅读时间需要 3 分钟。

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

});

转载地址:http://ijttl.baihongyu.com/

你可能感兴趣的文章
[Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的哦)...
查看>>
讨论:怎样加快android的开机时间
查看>>
oh my zsh设置
查看>>
解读ASP.NET 5 & MVC6系列(5):Configuration配置信息管理
查看>>
【原创】JDK动态代理,此次之后,永生难忘。
查看>>
collection的框架结构
查看>>
c++中的对象复制
查看>>
ubuntu下linux内核源码阅读工具和调试方法总结
查看>>
PHP生成UTF-8编码的CSV文件用Excel打开乱码的解决办法
查看>>
xshell快捷键
查看>>
win10无法使用内置管理员账户打开应用怎么办
查看>>
Fidller证书安装失败的解决--creation of the root certificate was not successful
查看>>
Vue2---父子组件之间的访问
查看>>
重新想象 Windows 8 Store Apps (41) - 打印
查看>>
100%布局的头部,内部内容960居中出现滚动条的时候,注意的小东西
查看>>
Ubuntu系统里下载安装配置redis-2.2.13.tar.gz
查看>>
2017年PHP程序员未来路在何方
查看>>
vue - webpack.base.conf.js
查看>>
MongoDB 主从复制小实验
查看>>
Linux Shell常用技巧(七)
查看>>