RequireJS - CommonJS
模块格式由 CommonJS 定义。它的定义并不提供与其他 JavaScript 环境同等的浏览器选项。因此,CommonJS 规范推荐 Transport 格式 和 异步 require。您可以轻松地将传统的 CommonJS 模块格式转换为与 RequireJS 兼容。但是,并非所有模块都会转换为新格式。下面列出了一些例外情况 −
- 带有条件代码以执行 require 调用的模块。
- 具有循环依赖关系的模块。
手动转换
可以使用以下语法将 CommonJS 模块手动转换为 RequireJS 格式 −
define(function(require, exports, module) { //place CommonJS module content here });
转换工具
CommonJS 模块可以使用 r.js project 转换工具转换为 RequireJS 格式,该工具内置于 r.js 文件中。您应该指定要转换的文件的路径和输出文件夹,如下所示 −
node r.js -convert path/to/commonjs/modules/ path/to/output
设置导出值
CommonJS 中的某些系统允许通过将导出值分配为 module.exports 来设置导出值,但 RequireJS 支持更简单的方法,即从传递给定义的函数返回值。这样做的好处是你不需要导出和模块函数参数,因此你可以将它们从模块定义中删除,如下所示−
define(function (require) { var name = require('name'); //将模块定义为导出函数 return function () { name.doSomething(); }; });
替代语法
指定依赖项的替代方法是通过依赖项数组参数 define()。但是,依赖项数组中名称的顺序应与传递给定义函数 define() 的参数顺序相匹配,如下所示 −
define(['name'], function (name) { return function () { name.doSomething(); }; });
从 CommonJS 包加载模块
要了解位置和包属性,请使用 RequireJS 通过设置 RequireJS 配置来加载 CommonJS 包中的模块。
优化工具
RequireJS 中有一个优化工具,它可以将模块定义组合成优化的包,以便浏览器交付。它以命令行工具的形式运行,因此您可以将其用作代码部署的一部分。