JSDoc:模块和命名空间之间的关系是什么

JSDoc: What is a relationship between modules and namespaces

我在理解联合中名称空间和模块的用途时遇到了问题。例如我有一个 class Game.utils.Matrix。我想将 Game 注释为命名空间,将 utils 注释为模块,并将 Matrix 注释为 class:

/**
 * @namespace Game
 */

/**
 * @module utils
 * @memberOf Game
 */

/**
 * Create a matrix
 * @constructor
 */
function Matrix(){}

它创建了一个文档并且 Matrix class 的名称路径是 Game.utils~ Matrix,但是如果我遵循 Module link 它的名称路径Module: utils 没有 Game 命名空间前缀,如果我遵循 Game link 它不包含 utils 模块 link.

此外,我无法向该模块添加另一个 class,因为此 class 未显示在 utils 模块选项卡中:

/**
 * Create Dictionary
 * @memberOf Game.utils
 * @constructor
 */
function Dictionary(){}

问题是:记录名称空间和模块的正确方法是什么?它们各自的用例是什么?

我试了一下,我想在名称空间中包含模块有点棘手。对我有用的是定义一个模块 utils 和一个引用它的命名空间。但是,该模块名为 utils,而不是 Game.utils,但在 Game 中,您可以看到链接到它的 属性。

/**
 * @namespace Game
 * @property {module:utils} utils
 */

/**
* @module utils
*/

/**
 * Create a matrix
 * @class
 */
function Matrix(){}