Javascript Require.js-加载相对于服务器根目录的模块
假设您有一个大型web应用程序,并且决定使用require.js加载一些模块。为了让事情稍微复杂一点,让我们假设您的所有模块都直接存储在服务器的根目录下,并且所有模块都有一个附加前缀(假设前缀由“n/”组成),在加载模块时应该忽略该前缀。 在一些嵌套的页面上,例如Javascript Require.js-加载相对于服务器根目录的模块,javascript,requirejs,relative-path,Javascript,Requirejs,Relative Path,假设您有一个大型web应用程序,并且决定使用require.js加载一些模块。为了让事情稍微复杂一点,让我们假设您的所有模块都直接存储在服务器的根目录下,并且所有模块都有一个附加前缀(假设前缀由“n/”组成),在加载模块时应该忽略该前缀。 在一些嵌套的页面上,例如[host]/path/to/page您想定义一些入口点模块,这些模块依赖于一些任意模块,例如n/my/modulename。所以你有: 定义('entrypoint',['n/my/modulename'],函数(modulename
[host]/path/to/page
您想定义一些入口点模块,这些模块依赖于一些任意模块,例如n/my/modulename
。所以你有:
定义('entrypoint',['n/my/modulename'],函数(modulename){。。。。
});
但是当您打开页面时,require.js决定根据与当前文档位置相对应的模块名称加载您的模块-因此它尝试获取
[host]/path/to/page/n/my/modulename
。到目前为止,您认为可怜的require.js只是在盲目地工作,不知道您的模块的疯狂位置
那么,您如何告诉我们需要重写路径?根据所述,我们可能会尝试以类似以下方式配置它:
require.config({
baseUrl: '/'
})
那不行
让我们试试这个
require.config({
baseUrl: ''
})
没有
还是错
require.config({
baseUrl: '/',
paths: {
n: '/'
}
})
差不多了。现在您意识到require试图从以下路径加载模块:
http://my/modulename
你开始想知道库的作者是什么。经过一番努力,我想我找到了唯一适合我的用例的解决方案。您必须使用以下命令配置require:
require.config({
baseUrl: '/',
paths: {
n: 'FOO/../'
}
})
现在它终于从url
http://[host]/my/modulename
中获取了n/my/modulename
,经过一番努力,我想我找到了唯一适合我的用例的解决方案。您必须使用以下命令配置require:
require.config({
baseUrl: '/',
paths: {
n: 'FOO/../'
}
})
现在它终于从url
http://[host]/my/modulename
中获取了n/my/modulename
,而不是在开发RequireJS时暗示James Burke正在吸烟,你可以这样做。你问题中的最后一次尝试是唯一可能有效的,我看不出有什么好的理由说明RequireJS不能正确处理它。你可以在开发RequireJS时,不要暗示James Burke正在吸烟。您问题中的最后一次尝试是唯一可能有效的尝试,我看不出RequireJS不能正确处理它的原因。