常見問題:RequireJS 最佳化
如何使用最佳化工具?§ 1
請參閱 一般最佳化頁面 以取得基本設定。即使您沒有使用 jQuery,也可以參閱 jQuery 文件頁面,以取得設定專案的良好方法。
如何提供一個不依賴 RequireJS 的函式庫給其他人?§ 2
如果您正在建立一個函式庫,供可能不使用 RequireJS 或 AMD 載入器的網頁使用,您可以使用最佳化程式將所有模組合併成一個檔案,然後將它們包裝在一個函式中,並使用 AMD API shim。這可讓您發布不包含所有 RequireJS 的程式碼,並讓您匯出任何類型的 API,這些 API 可在沒有 AMD 載入器的純網頁上執行。
almond 是非常小的 AMD API shim,因此當您使用 RequireJS 最佳化程式將所有模組建置成一個檔案時,可以使用它來取代 require.js。 wrap 建置設定選項會在程式碼周圍加上函式包裝器,或者如果您需要執行額外的邏輯,也可以提供您自己的包裝器。
請參閱 almond 專案,以取得有關如何使用 API shim 和 wrap 建置的詳細資料。
如果您需要在建置後動態載入程式碼,那麼使用 almond+wrap 將不足夠,因為 almond 無法動態載入程式碼。相反地,您可能需要命名 require/define 的使用方式。請參閱下一節。
如何命名我的程式碼,讓它能在其他人的網頁中順利執行?§ 3
如果您想將您的程式碼提供給可能不使用 AMD 載入器的網站,而且您需要動態載入程式碼,那麼執行簡單的 使用包裝器建置一個檔案 是不夠的。您可能還想將您的載入需求與頁面的 AMD 載入器隔離。
有一個 namespace 建置選項,可執行下列動作
- 將 requirejs、require 和 define 用法重新命名,讓它們前面有「namespace」。
- 如果檔案對 define 執行存在檢查,格式如下
typeof define === 'function' && define.amd
,它會在 define 參照前面加上「namespace」。 - 如果已將 require.js 納入建置檔案,它會確保公開 API 的「namespace」版本。
不要使用 namespace.require()/namespace.define() 呼叫來編寫您的來源,而是像平常一樣使用 require()/define(),然後使用最佳化器進行重新命名。