Javascript RequireJS:模块ID与模块名称
我在《还魂曲》中有点不在话下;我最近读了这篇文章,发现了这两个术语:Javascript RequireJS:模块ID与模块名称,javascript,requirejs,amd,js-amd,Javascript,Requirejs,Amd,Js Amd,我在《还魂曲》中有点不在话下;我最近读了这篇文章,发现了这两个术语:moduleid和modulename。它们可以互换使用吗?或者它们是不同的概念 摘录: 默认情况下,RequireJS还假设所有依赖项都是脚本,因此它不希望在模块IDs上看到后缀“.js”。当将模块ID转换为路径时,RequireJS将自动添加它 用于模块名称的路径不应包含扩展名,因为路径映射可能用于目录。将模块名称映射到路径时,路径映射代码将自动添加.js扩展名 加载程序按模块名称而不是路径在内部存储模块。因此,对于相
moduleid
和modulename
。它们可以互换使用吗?或者它们是不同的概念
摘录:
默认情况下,RequireJS还假设所有依赖项都是脚本,因此它不希望在模块IDs上看到后缀“.js”。当将模块ID转换为路径时,RequireJS将自动添加它
用于模块名称的路径不应包含扩展名,因为路径映射可能用于目录。将模块名称映射到路径时,路径映射代码将自动添加.js扩展名
加载程序按模块名称而不是路径在内部存储模块。因此,对于相对名称引用,这些引用是相对于进行引用的模块名称进行解析的,然后如果需要加载,模块名称,或ID,将转换为路径
模块名和模块id是相同的,它们与模块路径不同。假设以下配置:
require.config({
baseUrl: '/lib/',
paths : {
bar : 'a/b/c',
flip : 'd/e/f',
'flip/flop': 'dir/dir/something'
}
});
你的第一句话谈到了当你调用require(['foo'],
。上面的配置中没有指定foo
转换为什么的路径。因此,RequireJS将从模块id创建路径,即foo
。最终它将尝试加载文件/lib/foo.js
你的第二句话谈到了当你的模块有一个路径时会发生什么。如果你require(['bar'),…
,那么RequireJS在尝试加载时会将id转换为/lib/a/b/c.js
。它会添加扩展本身。这句话还间接地暗示了你需要require的情况(['bar/baz'],…
。使用上述配置,RequireJS会将模块id分成两部分:bar
,而baz
,会发现bar
有一个path
配置,因此会构建路径/lib/a/b/c
,然后将baz
和扩展名添加到其中,以便尝试加载文件e> /lib/a/b/c/baz.js
。因此,如果您有相关模块的层次结构,您可以将该层次结构的根放在路径中,而不是为层次结构中的每个模块指定路径
第三段引文指出,模块id是解释相关模块id时使用的。比如说,flip/flop
已经加载,并且它的依赖项中有。
。RequireJS将flip/flop
与组合。
解析为flip
,然后RequireJS将转换此模块id到路径:d/e/f.js
,因为flip
在路径中有一个映射。有时人们认为RequireJS将解释。
相对于需要它的模块的路径。引号澄清了事实并非如此。(如果是这样,那么RequireJS将尝试加载dir/dir.js
)