JSDoc 是什么?

JSDoc是Javascript源代码的标记语言(特殊格式的注释)。
JSDoc用于为JavaScript应用或库中的API生成文档。
即以特殊格式的注释来描述JavaScript应用或库中的API的作用、参数列表、返回值等特性,而后通过工具自动生成API文档。

JSDoc标签

JSDoc标签用于提供更多信息。
示例:

  • @constructor表示构造函数
  • @param表示参数
    1. /**
    2. * 表示一本书
    3. * @constructor
    4. * @param {string} title - 书的标题
    5. * @param {string} author - 书的作者
    6. */
    7. function Book(title, author) {}

    标签实示例

    来源标识

    @author / @file / @version
    1. /**
    2. * @author Jane Smith <jsmith@example.com>
    3. * @file Manages the configuration settings for the widget.
    4. * @version 1.2.3
    5. */
    6. function MyClass() {}

    访问性

    @abstract (@virtual) @access / @private / @protected / @packeg / @public / @global /@instance ```javascript /* @global / var foo = ‘hello foo’;

/ @namespace */ var BaseObject = { /

  1. * foo is now BaseObject#foo rather than BaseObject.foo.
  2. * @instance 成员变量
  3. */
  4. foo: null

};

/**

  • Check whether the dairy product is solid at room temperature.
  • @abstract
  • @return {boolean} */ DairyProduct.prototype.isSolid = function() { throw new Error(‘must be implemented by subclass!’); };

/* @constructor / function Thingy() {

  1. /** @access private */
  2. var foo = 0;
  3. /** @access protected */
  4. this._bar = 1;
  5. /** @access package */
  6. this.baz = 2;
  7. /** @access public */
  8. this.pez = 3;

}

// same as…

/* @constructor / function OtherThingy() {

  1. /** @private */
  2. var foo = 0;
  3. /** @protected */
  4. this._bar = 1;
  5. /** @package */
  6. this.baz = 2;
  7. /** @public */
  8. this.pez = 3;

}

  1. **@static**<br />两种用法
  2. ```javascript
  3. /** @namespace MyNamespace */
  4. /**
  5. * @function myFunction
  6. * @memberof MyNamespace
  7. * @static
  8. */
  1. /** @module Rollerskate */
  2. /**
  3. * The 'wheel' variable is documented as Rollerskate.wheel
  4. * rather than Rollerskate~wheel.
  5. * @static
  6. */
  7. var wheel = 1;

类型标识

@enum

  1. /**
  2. * Enum for tri-state values.
  3. * @readonly
  4. * @enum {number}
  5. */
  6. var triState = {
  7. /** The true value */
  8. TRUE: 1,
  9. FALSE: -1,
  10. /** @type {boolean} */
  11. MAYBE: true
  12. };

@property

  1. /**
  2. * @namespace
  3. * @property {object} defaults - The default values for parties.
  4. * @property {number} defaults.players - The default number of players.
  5. * @property {string} defaults.level - The default level for the party.
  6. * @property {object} defaults.treasure - The default treasure.
  7. * @property {number} defaults.treasure.gold - How much gold the party starts with.
  8. */
  9. var config = {
  10. defaults: {
  11. players: 1,
  12. level: 'beginner',
  13. treasure: {
  14. gold: 0
  15. }
  16. }
  17. };

@member [] []

  1. /** @class */
  2. function Data() {
  3. /** @member {Object} */
  4. this.point = {};
  5. }

/* @type {myCallback} / var cb;

  1. <a name="ZpLnQ"></a>
  2. ## 不常用
  3. - [@async](https://jsdoc.app/tags-async.html) 标识异步函数
  4. - [@augments](https://jsdoc.app/tags-augments.html) 标识其他参数
  5. - [@ignore](https://jsdoc.app/tags-ignore.html)
  6. - [@kind](https://jsdoc.app/tags-kind.html)
  7. - [@type](https://jsdoc.app/tags-type.html) 类型表示案例
  8. <a name="S1AyP"></a>
  9. #
  10. <a name="Pp3xH"></a>
  11. # 安装工具
  12. 在注释写好之后,下面我们来安装jsdoc,它的作用是从源文件中将注释提取出来并生成文档。<br />注意:JSDoc是标记语言,jsdoc是工具。
  13. <a name="cfwWN"></a>
  14. ## 安装
  15. ```javascript
  16. npm install --save-dev jsdoc
  17. # npm install -g jsdoc //全局安装

生成文档

  1. jsdoc book.js

此命令会在CWD下创建out/,并将文档置于其中。


参考: