Javascript 有没有办法在require.js中动态设置baseurl?
我正在(基于zend framework 2的php应用程序引擎)上构建一个应用程序 在我的应用程序中,javascript文件路径取决于应用程序名,而应用程序名是 由安装人员挑选 例如,require.js的url为:Javascript 有没有办法在require.js中动态设置baseurl?,javascript,zend-framework2,requirejs,Javascript,Zend Framework2,Requirejs,我正在(基于zend framework 2的php应用程序引擎)上构建一个应用程序 在我的应用程序中,javascript文件路径取决于应用程序名,而应用程序名是 由安装人员挑选 例如,require.js的url为: http://my.site.name/asset/module-{module_name}/script/js/require.js 模块名称根据应用程序的名称而变化 我知道我可以在后端的“data main”属性中放置路径,如: <script data-main="
http://my.site.name/asset/module-{module_name}/script/js/require.js
模块名称根据应用程序的名称而变化
我知道我可以在后端的“data main”属性中放置路径,如:
<script data-main="/asset/module-{module_name}/script/" src="/asset/module-{module_name}/script/js/require.js"></script>
但是我想知道是否有任何方法可以使用javascript动态设置baseurl,这样我就不需要接触后端。如果我正确理解了您的问题,您可以在配置对象中使用“baseurl”,您可以在其中设置找到js文件的路径
require.config({
baseUrl: "/js/"
});
此外,您可以在require.js加载之前将config对象定义为全局变量require,并自动应用这些值。此示例指定在require.js定义require()时立即加载一些依赖项:
var require={
baseUrl:generateBaseUrl()
};
感谢您的回答,我刚刚在第页找到了一个使用javascript的解决方案:
这似乎很奇怪,但它可以工作。为了避免对全局作用域的污染,您可以将动态配置代码包装为立即执行的函数:
require.config((function(){
var scripts = document.getElementsByTagName("script");
return {
baseUrl: '/asset' + scripts[scripts.length-1].src.match(/\/module.*?\//)[0]
};
})());
如果我使用baseUrl:“/js/”
,请求路径将变为http://my.site.name/js/target.js
。
var scripts = document.getElementsByTagName("script");
require.config({
baseUrl: '/asset' + scripts[scripts.length-1].src.match(/\/module.*?\//)[0] + 'script/',
});
require.config((function(){
var scripts = document.getElementsByTagName("script");
return {
baseUrl: '/asset' + scripts[scripts.length-1].src.match(/\/module.*?\//)[0]
};
})());