【发布时间】:2012-08-28 06:16:11
【问题描述】:
我们有一个使用 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/ 内。据我所知,我们需要通过 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
});
});
这部分走绝对路径路线还有其他解决方案吗?
【问题讨论】:
标签: javascript requirejs js-amd