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

时间:2017-10-03 12:26:42

标签: requirejs root relative

想象一下,您有一个大型Web应用程序,并且您决定使用require.js来加载某些模块。为了引起一些争议,我们假设您的所有模块都直接存储在服务器的根目录中,并且所有模块都有一个额外的前缀(假设前缀包含' n /')加载模块时应忽略。 在一些嵌套页面上 - 例如[host]/path/to/page你要定义一些入口点模块,它们依赖于某些任意模块,例如n/my/modulename。所以你有:

  

定义('入口点',[' n / my / modulename'],功能(modulename){....   });

但是当你打开页面时,require.js决定根据模块名称相对于当前文档位置加载模块 - 所以它尝试获取 [host]/path/to/page/n/my/modulename。到目前为止,你认为穷人require.js只是盲目地做它的工作而不知道你模块的疯狂位置。

那么你如何告诉需要重写路径?根据{{​​3}},我们可能会尝试以类似于此的方式配置它:

require.config({
    baseUrl: '/'
})

这不起作用

所以让我们试试这个

require.config({
    baseUrl: ''
})

没有

require.config({
    baseUrl: '/',
    paths: {
       n: ''
    }

})

还是错的

require.config({
    baseUrl: '/',
    paths: {
       n: '/'
    }
})

几乎就在那里。现在你意识到需要尝试从这条路径加载你的模块:http://my/modulename并且你开始想知道图书馆吸烟的作者是什么。

1 个答案:

答案 0 :(得分:0)

经过一番挣扎之后,我想我找到了唯一适合我用例的解决方案。您必须使用以下命令配置require:

require.config({
    baseUrl: '/',
    paths: {
       n: 'FOO/../'
    }
})

现在它最终从网址n/my/modulename抓取http://[host]/my/modulename