RequireJS - CommonJS



模块格式由 CommonJS 定义。它是在不提供浏览器与其他 JavaScript 环境同等选项的情况下定义的。因此,CommonJS 规范建议使用 传输格式异步 require。您可以轻松地将传统的 CommonJS 模块格式转换为与 RequireJS 兼容的格式。但是,并非所有模块都能转换为新的格式。一些例外情况列在下面:

  • 包含用于执行 require 调用的条件代码的模块。
  • 具有循环依赖关系的模块。

手动转换

CommonJS 模块可以通过使用以下语法手动转换为 RequireJS 格式:

define(function(require, exports, module) {
   //place CommonJS module content here
});

转换工具

CommonJS 模块可以使用 r.js 项目 转换工具转换为 RequireJS 格式,该工具内置于 r.js 文件中。您应该指定要转换的文件路径和输出文件夹,如下所示:

node r.js -convert path/to/commonjs/modules/ path/to/output

设置导出值

在 CommonJS 中的一些系统中,允许通过将导出值赋值给 module.exports 来设置导出值。但是 RequireJS 支持更简单的方法,即从传递给 define 的函数中返回值。这样做的好处是您不需要 exports 和 module 函数参数,因此您可以像下面这样省略模块定义中的它们:

define(function (require) {
   var name = require('name');

   //Define the module as exporting a function
   return function () {
      name.doSomething();
   };
});

替代语法

指定依赖项的另一种方法是通过依赖项数组参数 define()。但是,依赖项数组中名称的顺序应与传递给定义函数 define() 的参数顺序匹配,如下所示:

define(['name'], function (name) {
   
   return function () {
      name.doSomething();
   };
});

从 CommonJS 包加载模块

要了解模块在 CommonJS 包中加载的位置和包属性,请使用 RequireJS 通过设置 RequireJS 配置来加载。

优化工具

RequireJS 中有一个优化工具,可以将模块定义组合到一起,生成优化的包以供浏览器交付。它作为命令行工具运行,因此您可以将其用作代码部署的一部分。

广告