繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM