Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript RequireJS:模块ID与模块名称_Javascript_Requirejs_Amd_Js Amd - Fatal编程技术网

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