我們有一個應用程序,使用require.js,同時允許擴展,並且這些擴展的js從不同的路徑獲得服務。因此,在我們的配置,我們有:動態加載混合基址下的require.js模塊
var require = {
baseUrl : '/app/js/modules/'
}
但擴展從/extension/foo-extension/js/modules/
服務。 此外,擴展是動態的,他們將一些html注入到使用data-module="foo/bar"
的頁面中,該頁面用於加載該模塊。
理想情況下,我們可以通過/設置require.js的上下文,該範圍將以下模塊加載到baseUrl /extension/foo-extension/js/modules/
中。據我所知,我們需要做require('/extension/foo-extension/js/modules/foo/bar')
從foo-extension加載foo/bar
。
下面是一些僞代碼想象,我們需要處理設置路徑/背景:
define(['some-dep'], function(SomeDep) {
$.get('somepage', function(html) {
var extension = html.data('extension'); // "foo/bar"
var extensionBase = html.data('extensionBase'); // extension/foo-extension/js/modules/
// This is where we need to readjust require to use the base path for any foo module
});
});
是否有從去絕對路徑路由另一個解決這個部分?
請注意這裏的* dynamic *位。我無法使用路徑,因爲這是在我的配置設置完成後發生的。如果以某種方式插入路徑,我可以使用'/ extension/{extension}/js/modules /'。 – Nervetattoo
「理想情況下,我們可以爲require.js傳遞/設置一個上下文,以便將以下模塊加載到baseUrl中......」這正是路徑選項的作用。如果您需要動態的服務器端解決方案,我可以建議發佈服務器端發生的情況的描述嗎? – Russ
這是設置預定義的路徑。我們從通過稍後通過ajax請求加載的標記中的數據屬性中選擇此路徑。這是我們用我們的路徑吐出require.js配置後的方式。我更新了一些更僞代碼的問題... – Nervetattoo