栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

CommonJS,AMD和RequireJS之间的关系?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CommonJS,AMD和RequireJS之间的关系?

RequireJS 实现 AMD API

CommonJS 是在

exports
对象的帮助下定义模块的方法,该对象定义了模块的内容。简而言之,CommonJS实现可能如下所示:

// someModule.jsexports.doSomething = function() { return "foo"; };//otherModule.jsvar 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最初是从CommonJSTransport格式衍生出来的,后来演变为自己的模块定义API。因此,两者之间的相似之处。AMD中的新功能是

define()
允许模块在加载之前声明其依赖性的功能。例如,定义可以是:

define('module/id/string', ['module', 'dependency', 'array'], function(module, factory function) {  return ModuleContents;  });

因此,CommonJS和AMD是 Javascript 模块定义API,它们具有不同的实现,但是它们来自相同的来源。

  • AMD 更适合浏览器,因为它支持异步加载模块依赖项。
  • RequireJSAMD 的实现,同时尝试保持 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"; };});

我希望这有助于澄清问题!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号