Durandal 中的模块 ID 来自哪里?

Where does the module id come from in Durandal?

我正在使用 durandal 开发旧版应用程序。我在定义模块时注意到:

define({ message: 'hello world' });

然后 grunt 的输出如下所示:

define('filePath\fileName',{ message: 'hello world' });

filePath\fileName从何而来?我尝试用简单的 RequireJS 构建一个模块,我必须自己提供这个 id。我读到 Durandal 使用一种称为 AMD(异步模块定义模式)的模式。 filePath\fileName 使用 fileName.js 约定是 AMD 模式的一部分吗?

AMD 优化器在优化您的模块时添加这些 ID。

只要每个文件有一个模块,AMD 加载器就能够从文件路径和模块加载器的配置中推断出模块 ID。因此,当每个文件有一个模块时,从 define 调用中省略模块 ID 并让 AMD 加载程序推断模块 ID 是可以的。顺便说一下,这被称为“匿名 define

优化器的工作之一是将多个模块合并到一个文件中。当优化器将多个模块合并到同一个文件中时,将无法区分哪个 define 调用属于哪个模块,除非优化器也记录了此信息。 AMD规范的设计方式,记录哪个define属于哪个模块的方式是在define.

的第一个参数中添加模块id