1

私のモジュールには次の 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 <name>と、自動的にうまく機能します。興味深いですが@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により​​、プライベート メンバーがドキュメントに表示されます。

追加情報

サンプル コードでは、内部リンクを 1 つの方法でしか作成できませんでした。

/**
 * 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;
}
4

0 に答える 0