Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js jsdoc未正确记录nodejs模块_Node.js_Jsdoc - Fatal编程技术网

Node.js jsdoc未正确记录nodejs模块

Node.js jsdoc未正确记录nodejs模块,node.js,jsdoc,Node.js,Jsdoc,我试图让JSDOC(3)正确地记录我的NodeJS模块。虽然简单的模块可以工作,但我找不到方法来记录稍微复杂一点的模块 My NodeJS模块具有以下结构: /** @module MyModule */ (function() { function functionToExportOne {...} function functionToExportTwo {...} /** * @module MyModule.ClassToExportO

我试图让JSDOC(3)正确地记录我的NodeJS模块。虽然简单的模块可以工作,但我找不到方法来记录稍微复杂一点的模块

My NodeJS模块具有以下结构:

/** @module MyModule */
(function() {


     function functionToExportOne {...}

     function functionToExportTwo {...}

     /** 
      * @module MyModule.ClassToExportOne
      * @constructor 
      */
     function ClassToExportOne {

           this.classMethodOne=function() { ... }
           this.classMethodTwo=function() { ... }

     }

     /** @constructor */
     function ClassToExportTwo {

           function classMethodOne() { ... }
           function classMethodTwo() { ... }

           return /** @lends {ClassToExportTwo.prototype} */ {

               methodOne:classMethodOne,
               methodTwo:classMethodTwo
           }
     }
     /** @exports MyModule */  <--- late addition, see comments
     module.exports={
         functionOne:functionToExportOne,
         functionTwo:functionToExportTwo,
         classOne:ClassToExportOne,
         classTwo:ClassToExportTwo
     }
})()
/**@模块MyModule*/
(功能(){
函数functionToExportOne{…}
函数functionToExportTwo{…}
/** 
*@module MyModule.ClassToExportOne
*@constructor
*/
函数类导出{
this.classMethodOne=函数(){…}
this.classMethodTwo=函数(){…}
}
/**@constructor*/
函数ClassToExportTwo{
函数classMethodOne(){…}
函数classMethodTwo(){…}
return/**@lends{ClassToExportTwo.prototype}*/{
方法一:类方法一,
方法二:类方法二
}
}

/**@exports MyModule*/我不想回答我自己的问题,但经过更多的尝试和错误,我得到了令人满意的结果。如果这是一种正确的方法,请随时发表评论,但事实是文档现在已经正确生成:)

关键似乎是要使用
@exports.
@constructor
之前,这样类就会出现在“classes”下的索引中,如果方法是用
this.method=function(){…}
声明的,那么它的方法就会被正确地记录下来

我仍然希望找到一种方法来实现这一点,如果可能的话,对于ClassToExport2中描述的情况,有时我定义这样的类非常方便,特别是对于调用私有方法的长类,这样我就可以避免在类内部完全使用“this”(优化)

这是一个适合我的模板:

/** @module MyModule */
(function() {


     function functionToExportOne {...}

     function functionToExportTwo {...}

     /** works !!
      * @exports MyModule.ClassToExportOne
      * @constructor 
      */
     function ClassToExportOne {

           function innerMethod() { ... }

           // this works: assigning methods to this

           this.classMethodOne=function() { ... }
           this.classMethodTwo=function() { ... }

     }

     /** does not work
      * @exports MyModule.ClassToExportTwo
      * @constructor 
      */         
     function ClassToExportTwo {

           function classMethodOne() { ... }
           function classMethodTwo() { ... }

           // this DOES NOT WORK !! Methods get mixed with parent module
           return  {

               methodOne:classMethodOne,
               methodTwo:classMethodTwo
           }
     }

     // no more @exports here as it duplicates definitions in the docs
     module.exports={
         /** blah blah function description */
         functionOne:functionToExportOne,
         /** blah blah function description */
         functionTwo:functionToExportTwo,
         /** blah blah function description */
         classOne:ClassToExportOne,
         /** blah blah function description */
         classTwo:ClassToExportTwo
     }
})()

以下内容适用于jsdoc 3.3.3:

/**
 * Example model.
 *
 * @module model/example
 */
module.exports = (function () {
    /**
     * Constructor function.
     *
     * @exports model/example.Example
     * @constructor
     * @param {string} id
     */
    var example = function Example(id) {
        this.id = id;
    };

    /**
     * Returns the ID.
     *
     * @memberof model/example.Example
     * @returns {string} the id
     */
    example.prototype.getId = function () {
        return this.id;
    };

    return example;
}());
以及创建模型实例的示例:

var example = new Example("ID");
console.log(example.getId());

这正是我所需要的。谢谢。当父类在自己的模块中时,我无法让JSDOC为我的子类正确生成文档。