Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – jsdoc没有正确记录nodejs模块大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_2@
我正在尝试让JSDOC(3)正确记录我的NodeJS模块.虽然简单的模块工作,但我找不到记录稍微复杂的模块的方法.

我的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
     }
})()

好吧,如您所见,模块导出方法和类构造函数.没什么好奇怪的.

问题是,JSDOC

>始终无法识别内部类,
>将第一个内部类方法误认为(外部)模块的方法,
>始终跳过实际导出的模块方法.
>我最接近的是,在ClassToExportOne中,当我使用@module MyModule时.< className>接下来是@constructor(按此顺序):在这种情况下,类被识别,但只记录了构造函数,并且其方法被记录为属于父模块

我已经尝试了数千种不同的组合而没有成功:

>使用this.method = function(){…}定义内部类方法(如ClassToExportOne所示)或使用@lends {ClassToExportTwo.prototype}返回带有方法的对象(如ClassToExportTwo所示)
>在每个类的标题中使用@module MyModule.ClassToExportOne
>定义module.exports vs exports.xxxx
>声明内部类@private,声明一切@private但出口
>将@module声明移动到第一次导出之前(总乱,然后,一些东西被提升为“全局”,即使它在主闭包内!!)
>如果我添加@exports< modulename>在导出声明之前,记录方法(与类方法混合)

我已经尝试了http://usejsdoc.org/howto-commonjs-modules.html中建议的所有内容但没有成功.

我确定我错过了什么,却找不到什么.

解决方法

以下适用于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());
@H_301_2@

大佬总结

以上是大佬教程为你收集整理的node.js – jsdoc没有正确记录nodejs模块全部内容,希望文章能够帮你解决node.js – jsdoc没有正确记录nodejs模块所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: