Node.js jsdoc未正确记录nodejs模块
我试图让JSDOC(3)正确地记录我的NodeJS模块。虽然简单的模块可以工作,但我找不到方法来记录稍微复杂一点的模块 My 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
/** @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为我的子类正确生成文档。