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 中有一個最佳化工具,可以將模組定義組合到一起,生成最佳化的包以供瀏覽器交付。它作為命令列工具執行,因此您可以將其用作程式碼部署的一部分。

廣告