RequireJS - CommonJS


模块格式由 CommonJS 定义。它的定义没有提供与其他 JavaScript 环境相同的浏览器选项。因此,CommonJS 规范推荐了Transport 格式异步 require。您可以轻松转换传统的 CommonJS 模块格式以与 RequireJS 一起使用。但是,所有模块都不会转换为新格式。下面列出了一些例外情况 -

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

手动转换

可以使用以下语法将 CommonJS 模块手动转换为 RequireJS 格式 -

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

转换工具

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

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

设置导出值

CommonJS 中的某些系统允许通过将导出值指定为module.exports来设置导出值,但 RequireJS 支持从传递给定义的函数返回值的更简单方法。这样做的优点是您不需要导出和模块函数参数,因此您可以将它们从模块定义中删除,如下所示 -

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 包加载模块

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

优化工具

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