J

JSDoc 使用 JSDoc 记录你的 Javascript 代码 简介 安装 使用 关于 JSDoc 的其他精彩内容

2025-05-26

JSDoc使用 JSDoc 记录你的 JavaScript 代码

介绍

安装

用法

关于 JSDoc 的其他精彩内容

介绍

在这篇文章中,我将尽量涵盖 JSDoc 入门所需的一切知识。我还会分享一些我学到的其他一些有趣的知识,希望对您有所帮助。

目录


JSDoc是一个开源的 JavaScript API 文档生成器。它允许开发者通过注释来记录他们的代码。以下是一个例子:



/**
 *  Retrieves a single file by id.
 *  @param {string} id File identifier.
 *  @returns {File} File object.
 */
const getFileById = (id) => {
    // ...
}


Enter fullscreen mode Exit fullscreen mode

一旦你的代码文档齐全,你只需运行一个简单的命令,就能轻松生成一个包含所有 API 文档的网站。是不是很酷?

上面的代码在生成的网站中看起来是这样的:

网站中格式化的文档的屏幕截图,包括前面代码中指定的所有 JSDoc 标签

安装

使用以下命令通过npm全局安装 JSDoc :



npm install -g jsdoc


Enter fullscreen mode Exit fullscreen mode

或者使用以下命令为单个项目安装它:



npm install --save-dev jsdoc


Enter fullscreen mode Exit fullscreen mode

有关安装的更多信息请点击此处

说实话,虽然我很久以前就用 JSDoc 注释来记录我的代码,但直到几周前我才安装这个包,因为我实际上并不需要生成网站。我只是把它和 VSCode 一起使用,不过我会在本文后面讨论这个问题。

用法

文档

要开始记录您的代码,您所要做的就是在/**您想要记录的每个代码块上添加以 开头的注释:模块、方法、类、函数等。

您只需添加描述即可使其变得简单:



/**
 * Retrieves a user by email.
 */
const getByEmail = async (email) => {
    // ...
}


Enter fullscreen mode Exit fullscreen mode

或者您可以使用标签充分利用 JSDoc:



/**
 * Retrieves a user by email.
 * @async
 * @method
 * @param {String} email - User email
 * @returns {User} User object
 * @throws {NotFoundError} When the user is not found.
 */
const getByEmail = async (email) => {
    // ...
}


Enter fullscreen mode Exit fullscreen mode

您可以从大量的标签列表进行选择,以便尽可能详细地记录您的代码。

请记住,注释中的信息越多,API 文档就越详细。但也要找到适合自己的详细程度。最好只用几个标签来记录所有代码,而不是只用所有标签来完整记录几个方法,因为那样会太多,你无法跟上进度。

出口

添加评论后,剩下要做的就是生成您的文档网站:

导出文件或文件夹

只需调用 jsdoc 并添加文件或文件夹的路径。



jsdoc path/to/my/file.js


Enter fullscreen mode Exit fullscreen mode

要包含多个文件或文件夹,请添加所有路径并用一个空格分隔。

递归导出所有文件



jsdoc -r .


Enter fullscreen mode Exit fullscreen mode

使用配置文件

您可能正在处理一个大型项目,其中包含许多需要导出的文件和文件夹,同时还有一些需要排除的文件和文件夹(我正在关注您,node_modules)。如果是这种情况,您可能需要使用 JSDoc 配置文件。

使用配置文件允许我们自定义 JSDoc 行为,例如:

  • 应包括哪些文件夹或文件以及应排除哪些文件夹或文件。
  • 当我们使用该选项时,JSDoc 将会深入到什么程度--recurse
  • 将自定义内容应用于模板
  • ETC

您需要做的就是创建一个.json包含所需设置的文件,然后使用-c--configure选项告诉 JSDoc 它们在哪里:



jsdoc -c /path/to/conf.json


Enter fullscreen mode Exit fullscreen mode

下面是一个我经常使用的(非常简单的)例子:



{
    "source": {
        "includePattern": ".+\\.js(doc|x)?$",   // Only process file ending in .js, .jsdoc or .jsx
        "include": ["."],                       // Check all folders.
        "exclude": ["node_modules"]             // Be gone, node_modules.
    },
    "recurseDepth": 10,                         // Only go 10 levels deep.
    "opts": {
        "destination": "./docs/",               // Where I want my docs to be generated.
        "recurse": true                         // Same as using -r or --recurse
    }
}


Enter fullscreen mode Exit fullscreen mode

专业提示:
您可能需要将命令添加到您的 package.json 脚本中:



"scripts": {
    "generate-docs": "jsdoc -c /path/to/my/conf.js"
}


Enter fullscreen mode Exit fullscreen mode

然后只需npm run generate-docs从命令行使用即可。

或者你可以为脚本使用更愚蠢的名称,例如:docs-plsgimme-docs或者ill-have-the-large-docs-with-extra-docs(好吧,也许不是最后一个😅)。

有关配置的更多信息请点击此处

关于 JSDoc 的其他精彩内容

VSCode 内置支持

所以,就像我说的,我在安装 JSDoc 之前就很喜欢它,这是因为 VSCode 内置了对 JSDoc 注释的支持,其中包括:

  • /**当您在函数声明前键入(然后按回车键)时,为您构建 JSDoc 注释结构的代码片段。VSCode 自动生成函数的 JSCode 注释结构
  • 丰富的悬停信息当你将鼠标悬停在某个函数上时,VSCode 会显示该函数的所有标签
  • 有关您正在使用的函数签名的信息当用户输入函数名称时,VSCode 会显示有关函数参数的信息

有关 VSCode 中 JSDoc 支持的更多信息,请查看VSCode 文档

使用自定义布局

您可以通过生成自定义layout.tmpl文件并在 JSDoc 配置文件中将选项设置templates.default.layoutFile为自定义布局的路径来为您的 API 文档创建自己的模板。

没时间自己生成模板?这里有一些非常简洁的模板项目供您参考:

JSDoc 和 Swagger

该项目swagger-jsdoc将 JSDoc 与 swagger 集成在一起,允许您使用块代码上的标签@swagger为路线编写规范:



  /**
   * @swagger
   * /:
   *   get:
   *     description: Returns all users.
   *     responses:
   *       200:
   *         description: All users were returned.
   */
  app.get('/users', (req, res) => {
    // ...
  });


Enter fullscreen mode Exit fullscreen mode

知道其他有趣的 JSDoc 功能吗?

在评论区告诉我吧!👇

文章来源:https://dev.to/paulasantamaria/document-your-javascript-code-with-jsdoc-2fbf
PREV
YAML 简介 简介 基本语法 特色 结论
NEXT
干净的代码...为什么要费心?1. 你的队友会感谢你 2. 想想未来的自己 3. 混乱的代码往往会变得更混乱 4. 更快地做出决策 5. 减少重复代码 6. 感觉很棒!