[英]Require.js - loading modules relative to the root of the server
假设您有一个大型Web应用程序,并且决定使用require.js加载某些模块。 为了使事情更容易些,让我们假设所有模块都直接存储在服务器的根目录下,并且所有模块都有一个附加前缀(假设前缀由“ n /”组成),在加载模块时应将其忽略。 在某些嵌套页面上,例如[host]/path/to/page
您想要定义一些依赖于某些任意模块(例如n/my/modulename
入口点模块。 所以你有了:
define('entrypoint',['n / my / modulename'],function(modulename){....});
但是,当您打开页面时,require.js决定根据相对于当前文档位置的模块名称加载模块-因此它尝试获取[host]/path/to/page/n/my/modulename
。 到目前为止,您认为可怜的require.js只是盲目地工作,并且不知道模块的疯狂位置。
那么您如何知道要求重写路径? 根据Require.js文档,我们可以尝试以类似于以下方式进行配置:
require.config({
baseUrl: '/'
})
那行不通
所以让我们尝试一下
require.config({
baseUrl: ''
})
没有。
require.config({
baseUrl: '/',
paths: {
n: ''
}
})
还是错
require.config({
baseUrl: '/',
paths: {
n: '/'
}
})
快好了。 现在,您意识到require尝试从以下路径加载模块: http://my/modulename
,您开始怀疑该库的作者是谁。
经过一番苦苦挣扎,我认为我找到了适合我的用例的唯一合适的解决方案。 您必须使用以下命令配置需求:
require.config({
baseUrl: '/',
paths: {
n: 'FOO/../'
}
})
现在,它终于抓住n/my/modulename
从URL http://[host]/my/modulename
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.