学习JSDoc--Javascript API文档生成器教程

342 阅读5分钟

Javascript文档

JsDoc是一个针对javascript语言的文档生成器。这个工具是用来生成HTML格式的javascript源代码文档的,它类似于java语言中的Javadoc。强大的文档是成功的软件应用的因素之一。JSDoc解析带有内容的javascript源,并输出HTML文档。

这篇博文涵盖了JSDoc的教程和实例

安装和设置JSDoc

要玩这个,首先,你需要安装它。安装时提供了命令行工具 -jsdoc。这个库可作为npm包管理器。首先要确保Nodejs已经安装,npm和node命令通过以下命令成功运行。

B:\blogger>npm --version
5.6.0
B:\blogger>node --version
v8.10.0

一旦安装了nodejs,下一步就是安装jsDoc npm包

npm install -g jsdoc

这将把jsdoc包安装在一个全局位置。我是在windows上进行安装的。请看windows上的全局npm安装位置,这是一个npm位置的文件夹,在窗口上是%APPDATA%/npm/node_modules/jsdoc。这是node_modules模块文件夹的全局位置。要找到jsdoc的版本,请发出以下命令

B:\blogger>jsdoc --version
JSDoc 3.5.5 (Thu, 14 Sep 2017 02:51:54 GMT)

JSDoc基本例子

用两个参数声明的简单函数,其返回类型是helloworld.js中的示例代码。

/**
* Adding two numbers.
* @param {value1} firstParameter First parameter to add.
* @param {value2} secondParameter Second Parameter to add.
* @returns {string}
*/
function add(value1, value2) {
 return value1+value2;
}

然后运行下面的命令来生成HTML文档。

jsdoc helloworld.js

生成的HTML文件如下面的截图所示

Learn JSDoc Library examples with tutorials

语法

/**
* Adding two numbers.
* @param {string} firstParameter First parameter to add.
* @param {string} secondParameter Second Parameter to add.
* @returns {string}
*/

解释

  • Jsdoc包含多行注释,除了第一个字符是星号外,每个注释都包括符号@和标签名称。@param是这里的一个标签 注释类型,它包括大括号中的类型名称 @param {string} name

注释与多行注释相似,不同的是多了一个星号 符号 注释也包含HTML标签

// Single line comment
/*
 *  multi-line comment
 */
/**
 * Jsdoc comments
 */

JSDoc函数示例

在函数中添加了几个元标记 @fileOverview,@Author,@Version

/**
 * This is a hello world function.
 * @fileOverview Employee functions.
 * @author [Kiran Babu](mailto:support@cloudhadoop.com)
 * @version 1.0.0
 * @param {string} value - A string param
 * @return {string} Return a string
 *
 * @example
 *
 -   displayEmp('Welcome')
 */
function displayEmp(msg) { return msg }

JSDoc javascript Documentation for classes

如何将方法返回为空?

你必须使用 @return标签 来记录方法函数的类型。类型可以在大括号中使用 在javascript中,void作为类型存在,你也可以使用undefined。

@returns {void} returns nothing
@returns {undefined} returns undefiend

jsdoc中有效的param标签类型是什么?@param标签是用来给函数或方法标记参数类型的。你也可以用*@arg或@argument来代替@param @tag*包含了一个函数的参数的名称、类型和描述。

/**
 * @param {string} argument name of the employee.
 */

这里,名称是参数,类型是用大括号括起来的字符串,描述是雇员的名字。你可以使用javascript内置的数据类型作为参数类型的值,布尔,空,数字,字符串,未定义,符号,对象,可选和默认的参数声明 使用@param标签声明的参数,要使它成为这个param选项。让我们声明可选的参数,比如说字符串类型的信息。

@param {string} [message] // or
@param {string=} message
@param {string} [message='hello'] // defualt value initlization

如何声明混合类型的参数?

在方法或函数声明中,使用|符号分隔符为单个参数添加多种类型。

/**
 * Utility method
 * @param {(string|number)} argument The input parameter to function
 * @returns {(string|number)} The modified return value from a function.
 */
function doSomething(argument) {
    return argument;};

如何表示一个多维数组的对象参数类型?多维是一个对象的数组。在jsdoc的注释中可以用类型--对象来表示。

Jsdoc提供了一个 @callback标签 。它有关于回调函数的参数和返回值等信息。

/**
 * Callback for multiplying two numbers.
 *
 * @callback multiCallback
 * @param {int} multiply - An integer.
 */

/**
 * Multiply two numbers, output the results to a callback function.
 *
 * @param {int} x - An integer.
 * @param {int} y - An integer.
 * @param {multiCallback} callback - A callback to execute.
 */
function Multiply(a, b, multiCallback) {
  multiCallback(a*b);
}

如何记录javascript类?

@class或@constrcutor用来标记它是一个类或结构,可以用new操作符创建。

/**
 * Creates a new Employee.
 * @class Employee class
 */
function Employee() {
 /** @lends Employee */
    {
        /**
         * Create a `Employee` instance.
         * @param {string} name - The Employee's name.
         */
        initialize: function(name) {
            this.name = name;
        },
}
var e = new Employee();

@lend标签用于记录一个类的所有成员。

JSDoc经常使用的注释

Jsdoc支持以下标签,并提到了语法。所有这些语法都应该在jsdoc语法中使用(在多行注释中添加星号)

标签:

说明

用途/语法

@Author:

添加代码的作者,支持添加电子邮件

@author Kiran

@class:

标记功能,作为一个类实例可以使用新的关键字创建

@class 雇员类

@构造器:

将函数作为一个构造函数,与@class相同。

@构造函数 雇员类

@删除的:

指定一个注释,告诉大家这个方法将被废弃。

@从2.5版本开始被弃用

@throws

表示一个方法可能抛出的异常或错误。

@throws {Exception} 异常@throws 如果参数为空,会抛出一个错误

@param:

为方法或函数的参数添加文档

@param {Number} numericValue 对参数的数值。

@private:

将此标记为私有

@private

@return 或 @returns:

方法或函数的返回值文件。

@returns {string}

@版本

一个代码的版本号。

@version 1.0

@interface

这使得作为接口

@interface 动物

@静态

静态变量的标记,可以不通过实例访问。

@静态

@typedef

自定义数据类型的标记。这些可以在其他标记中使用,就像普通的类型参数一样

@typedef {(number|string)} customType

@todo

记录未来需要完成的事情

@todo 为这个方法写边缘案例和文档。

@借贷

记录一个类或对象的所有成员

@借贷 雇佣