我的頁面包含幾個作爲獨立AMD模塊存在的組件。 Require.js優化器將這些組件中的每個組件都轉換爲單個文件。由於其中幾個組件共享依賴關係(例如jQuery和d3),因此優化程序paths
配置爲這些依賴關係使用CDN URL,而不是將它們捆綁到優化文件中。如何在Require.js優化期間使用本地文件,但在運行時使用CDN託管版本?
這裏是棘手的地方。我爲Ractive.js編寫了一個module loader plugin,名爲rvc.js,它允許我包含在HTML文件中定義的Ractive組件。 (是的,我所要求的關於如何使用我自己的圖書館的幫助。)
這工作得很好 - 正如你所期望像這樣的代碼被優化:
define(function (require) {
var ChartView = require('rvc!views/Chart');
var view = new ChartView({ el: 'chart' });
});
因爲Ractive使用幾個的組件,它應該從CDN如jQuery和d3提供服務。但是它在優化過程中被rvc.js使用,這意味着優化器paths
配置的Ractive
條目不能指向CDN--它必須指向一個本地文件。
有沒有辦法告訴Require.js在優化期間使用本地文件,但在運行時從CDN加載?
設置VAR像fileToUse = amILocal()? 「lib.js」:「lib.min.js」;並傳遞fileToUse來取代硬編碼文字。 – dandavis
問題在於無論給予'fileToUse'哪個值給優化器,這都是a)優化期間使用的文件,以及b)優化程序在構建中包含(或嘗試)的文件。因此,如果'fileToUse'是本地的,本地文件在優化期間被rvc.js使用,但它也被捆綁;如果它很遠,則優化失敗。 –