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 中有一个优化工具,它可以将模块定义组合成优化的包,以便浏览器交付。它以命令行工具的形式运行,因此您可以将其用作代码部署的一部分。