2013-04-10 36 views
5

我在Pi-engine(基於zend framework 2的php應用程序引擎)上構建應用程序。有沒有什麼方法可以在require.js中動態地設置baseurl?

在我的應用程序中,JavaScript文件路徑取決於應用程序名稱,而應用程序名稱爲 ,由安裝程序挑選。

例如require.js的網址是:根據給出什麼名字申請

http://my.site.name/asset/module-{module_name}/script/js/require.js

MODULE_NAME變化。

我知道我可以把路徑「數據主要」屬性在後端,如:

<script data-main="/asset/module-{module_name}/script/" src="/asset/module-{module_name}/script/js/require.js"></script> 

但我想知道有沒有什麼辦法來設置的BaseURL動態地使用JavaScript,這樣我不需要觸摸後端。

回答

0

如果我正確理解你的問題,你可以在配置對象中使用'baseUrl',你可以在其中設置js文件的路徑。

require.config({ 
    baseUrl: "/js/" 
}); 
+0

如果我使用'的baseUrl:「/ JS /」'中,請求路徑變爲'http:// my.site.name/js/target.js'。 – user1522830 2013-04-10 09:02:02

10

http://requirejs.org/docs/api.html#config

此外,可以定義配置對象作爲全局變量需要require.js被加載之前,並具有自動應用的值。這個例子指定一些依賴儘快require.js定義要求()加載:

<script> 
    var require = { 
     baseUrl: generateBaseUrl() 
    }; 
</script> 
<script src="scripts/require.js"></script> 
0

爲了避免在全球範圍內的污染,你可以用動態的配置代碼,在一個立即執行功能的情況下:

require.config((function(){ 
    var scripts = document.getElementsByTagName("script"); 
    return { 
     baseUrl: '/asset' + scripts[scripts.length-1].src.match(/\/module.*?\//)[0] 
    }; 
})()); 
相關問題