Javascript Require.js-加载相对于服务器根目录的模块

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

假设您有一个大型web应用程序,并且决定使用require.js加载一些模块。为了让事情稍微复杂一点,让我们假设您的所有模块都直接存储在服务器的根目录下,并且所有模块都有一个附加前缀(假设前缀由“n/”组成),在加载模块时应该忽略该前缀。 在一些嵌套的页面上,例如
[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不能正确处理它的原因。