让JSDoc为模块

时间:2015-11-24 10:32:43

标签: javascript jsdoc

我正在使用JSDoc生成器为我正在使用AMD模块的项目生成一些好看的文档。

在我的项目中,我有一些模块包含未导出的函数,因此无法从模块外部使用它们。生成JSDoc时,文档中不包含这些函数。

我创建了以下示例模块来说明我的示例:

/**
 * Example foobar module
 * @module foobar
 */
define([], function () {

    /**
     * Returns foo
     * @returns {string} - The string "foo"
     */
    function foo() {
        return "foo";
    }

    return {
        /**
         * Returns bar
         * @returns {string} - The string "bar"
         */
        bar: function(){
            return "bar";
        }
    }
});

当我为上述模块生成文档时,文档中只包含bar函数,而我还希望将foo函数包含在我的文档中并标记为私有。< / p>

有没有办法实现这个目标?感谢。

1 个答案:

答案 0 :(得分:3)

注意:这是在JSDoc 3

上测试的

这有两个部分:

  • 获取JSDoc以生成嵌套函数的代码
  • 获取JSDoc以生成私有成员的代码

获取JSDoc以生成嵌套函数的代码

/**
 * Returns foo
 * @memberOf module:foobar
 * @returns {string} - The string "foo"
 */
function foo() {
    return "foo";
}

默认情况下,不记录嵌套函数。为此,请添加@memberOf指令。这迫使JSDoc将该函数记录为模块的成员。请注意module:前缀 - 这是标准。

这应该会使foo显示在模块Methods的{​​{1}}部分下方。

获取JSDoc以生成私有成员的代码

现在,只需将该功能标记为私有。为此,请使用@private指令。

foobar

您会注意到现在的文档不再包含方法/** * Returns foo * @private * @memberOf module:foobar * @returns {string} - The string "foo" */ function foo() { return "foo"; } 。这是因为JSDoc默认忽略私有成员。要为私有成员生成代码,请使用foo命令行选项。

-p

现在,foo在jsdoc foobar.js -p 中显示为(private, static)方法,而foobar只是bar