试图了解使用"map"与通配符vs"paths"的正确位置.
看看需求来源(但肯定不是100%流利)似乎这两个片段在功能上没有区别.真的吗?
使用路径:
require.config({
baseUrl: "include/js/",
paths: {
foo: "stuff/foo",
}
});
Run Code Online (Sandbox Code Playgroud)
使用地图:
require.config({
baseUrl: "include/js/",
map: {
'*': {foo: "stuff/foo"},
}
});
Run Code Online (Sandbox Code Playgroud)
我发现了一个区别,那就是requirejs加载器插件,例如:示例:define(['cs!module'], function(){...} )for CoffeeScript.
使用map:*config 的一部分来声明插件(以及paths依赖模块)在浏览器中工作.但是,在Node中,Requirejs将无法找到加载器插件,除非它们位于paths.
最后,为了能够在Node和浏览器中运行相同的配置,我摆脱了map:*部分,并宣布了所有内容paths,它现在对我来说很好,即使我仍然希望得到一些澄清原因.
小智 9
来自RequireJS Docs"此外,路径配置仅用于设置模块ID的根路径,而不是用于将一个模块ID映射到另一个模块ID."
这意味着"路径"仅用于在资源不在默认位置(baseUrl)时映射到资源的路径.我想这就是你想要做的.
另一方面,使用"map",您可以拥有多个版本的资源(foo1,foo2 ...),您可以映射以从不同的路径加载(即您想从桌面浏览器加载foo1和foo2,这是从移动浏览器修改第一个).
所以,除非你有不同版本的foo,否则我会使用"path",尽管你是对的,"map"也适用于那种情况.
映射配置还有另一个重要区别。您定义将在映射中使用的前缀。
对于您的示例,这意味着foo将被映射到,stuff/foo但也foo/bar/baz/bam将被映射到stuff/foo/bar/baz/bam。
| 归档时间: |
|
| 查看次数: |
11058 次 |
| 最近记录: |