我们有一个使用 require.js 的应用程序,它同时允许扩展,并且这些扩展的 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/
。据我所知,我们需要从 foo-extensionrequire('/extension/foo-extension/js/modules/foo/bar')
加载。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
});
});
走绝对路径路线是否有另一种解决方案?