JSDoc用于特殊模块模式

时间:2015-12-16 21:30:14

标签: javascript jsdoc revealing-module-pattern

我有一个特殊的JS揭示模块模式,如下例所示,我正在尝试使用JSDoc 3进行文档编制。

情况类似于thisthis,但我的构造函数有参数,并且没有原型根变量。

如果我将@class与@param一起放入配置中,这似乎是最正确的替代方案,它可以正常工作(描述,作者和依赖关系都已正确编写)但我必须放置@ instance / @ memberof / @名称在每个原型成员中,这非常令人讨厌。

如果我在构造函数中放置@constructor,则会正确识别每个成员,但会将构造函数记录两次。

然后,如果我从My Module中删除@class,则不会出现描述@author和@requires。将@lends放入My Module和@constructs in Constructor会产生相同的效果。

更改代码不是一种选择,它是我公司广泛使用的模式。

如何进行?

var Root = window.Root || {};

/**
 * My module
 *
 * @author ...
 * @requires DependencyOne
 * @requires DependencyTwo
 */
Root.MyModule = (function(DepOne, DepTwo) {
    var _private = {/*...*/};

    /**
     * Constructor
     *
     * @param {Object} config
     * @param {String} config.prop
     */
    function MyModule(config) {
        this.config = config;
    }

    /**
     * My attribute
     *
     * @type {String}
     */
    MyModule.prototype.myAttribute = null;

    /**
     * My function
     *
     * @param {String} param
     * My parameter
     */
    MyModule.prototype.myFunction = function(param) {/*...*/}

    return MyModule;
})(DependencyOne, DependencyTwo);

解决方案:经过一些测试后,我使用@class / @constructor@memberof找出了如何继续:

var Root = window.Root || {};

Root.MyModule = (function(DepOne, DepTwo) {
    var _private = {/*...*/};

    /**
     * Constructor.
     *
     * @constructor
     * @memberof Root
     *
     * @requires DependencyOne
     * @requires DependencyTwo
     *
     * @param {Object} config My config
     * @param {String} config.prop Property
     */
    function MyModule(config) {
        this.config = config;
    }

    /**
     * My attribute
     *
     * @type {String}
     */
    MyModule.prototype.myAttribute = null;

    /**
     * My function
     *
     * @param {String} param
     * My parameter
     */
    MyModule.prototype.myFunction = function(param) {/*...*/}

    return MyModule;
})(DependencyOne, DependencyTwo);

0 个答案:

没有答案