Javascript 在AMD中使用JSDoc

Javascript 在AMD中使用JSDoc,javascript,requirejs,amd,jsdoc,jsdoc3,Javascript,Requirejs,Amd,Jsdoc,Jsdoc3,我的模块采用以下AMD结构 /* globals define */ define([""], function() { 'use strict'; var module = {}; function _somePrivateFunc() {} function somePublicFunc() {} module.somePublicFunc = somePublicFunc; return module; }); 我正在努力使用JS

我的模块采用以下AMD结构

/* globals define */
define([""], function() {
    'use strict';

    var module = {};

    function _somePrivateFunc() {}

    function somePublicFunc() {}

    module.somePublicFunc = somePublicFunc;

    return module;
});
我正在努力使用JSDoc使其与我的模块一起工作。直到现在,我都可以像这样工作

/* globals define */
/**
 * Module description here
 * @module some/module/name
 */  
define([""], function() {
    'use strict';

    /**
     * @alias module:some/module/name
     */
    var module = {};

    function _somePrivateFunc() {}

    function somePublicFunc() {}

    /**
     * Some property description here
     * @itWorks
     */
    module.somePublicFunc = somePublicFunc;

    return module;
});
正如你所看到的,它正在发挥作用。但是我希望在函数声明中定义我的文档注释,而不是将它们添加到模块中。我想做到这一点:

/* globals define */
/**
 * Module description here
 * @module some/module/name
 */
define([""], function() {
    'use strict';

    /**
     * @alias module:some/module/name
     */
    var module;

    /**
     * Somehow make this appear in JSDoc
     * @extend module:some/module/name
     * @private
     */
    function _somePrivateFunc() {}

    /**
     * Make this appear in JSDoc for sure.
     */
    function somePublicFunc() {}

    // I want this to NOT annotate, and I want the property to gather JSDoc 
    // from the func. declaration
    module = {
        somePublicFunc: somePublicFunc
    };

    return module;
});
后一个是我想要实现的,但遗憾的是它不起作用:(

有什么想法吗? 干杯

编辑: 我取得了一些进步。记住,如果我只写以下内容:

define('dep', function(require) {

    /**
     * @exports dep
     */
    var module = {};

    /**
     * Adds two numbers together.
     * @param  {Number} a the first number
     * @param  {Number} b the second number
     * @return {Number}   the sum of a and b
     */
    function sum(a, b) {
        return a + b;
    }

    module.sum = sum;

    return module;
});
然后输出为空。JSDoc无法正确生成文档。虽然如果我在函数中添加
@method
注释,那么它会自动工作得很好。有趣的是,仅添加一个没有名称的
@method
注释是不够的。我的最终工作解决方案如下:

define('dep', function(require) {

    /**
     * @exports dep
     */
    var module = {};

    /**
     * Adds two numbers together.
     * @func sum
     * @param  {Number} a the first number
     * @param  {Number} b the second number
     * @return {Number}   the sum of a and b
     */
    function sum(a, b) {
        return a + b;
    }

    /**
     * Creates a closure. Adds two numbers together
     * @func _add
     * @param {Number} a the closure variable to add statically
     * @return {Function} the closure
     * @private
     */
    function _add(a) {
        return function(b) {
            return a + b;
        };
    }

    module.sum = sum;

    return module;
}); 
CLI标志
-p
使私有成员出现在文档中

附加信息 通过示例代码,我只能以一种方式创建内部链接:

/**
 * Adds two numbers together.
 * @func sum
 * @param  {Number} a the first number
 * @param  {Number} b the second number
 * @return {Number}   the sum of a and b
 * @see {@link module:dep~_add|_add}
 */
function sum(a, b) {
    return a + b;
}

可能是重复的谢谢,但另一个问题根本没有回答我的问题,而且这似乎是一个不同的问题:(a)你在这里的标题是“与AMD一起使用JSDoc”。另一个问题回答了这个问题。b)你真的尝试了另一个问题中的方法,还是你只是立即放弃了它?如果这些方法失败了,那么它们是如何失败的呢?不要只是在评论中断言其他问题不能解决你的问题。(这就是你刚才所做的。)在你的问题主体中解释另一个问题的答案中的方法如何无法解决你的问题。你能更具体地说明另一个线程中的哪个答案回答了我的问题吗?由于似乎没有人回答我的问题,我也有一个可行的解决方案,但该解决方案不适合我的团队需要:(或者我应该更具体地说明这个问题?!