当前位置: 首页 > news >正文

玩转微服务-技术篇-JSDOC教程

一. 简介

JSDoc 3 是一个用于 JavaScript 的API文档生成器,类似于 Javadoc 或 phpDocumentor。可以将文档注释直接添加到源代码中。JSDoc 工具将扫描您的源代码并为您生成一个 HTML 文档网站。

JSDoc 是一种用于 JavaScript 代码文档注释的标记语言和工具。它不仅仅是一种文档编写方式,更是一种代码规范和团队协作工具。通过使用 JSDoc 注释,开发人员可以将关于函数、类、方法、参数、返回值等方面的信息嵌入到代码中,从而帮助其他开发人员更轻松地理解和使用代码。

文档地址:中文文档地址

英文地址:英文文档地址

二. 文档注释的意义

编写JavaScript的文档注释有助于提高代码的可读性、生成易于阅读的API文档、明确接口规范、辅助调试和维护工作,以及促进团队合作和知识共享。这是为了更好地组织和记录代码,并使其更易于理解和使用的最佳实践之一。

  • 提供代码的可读性:文档注释可以帮助其他开发人员更好地理解你的代码。通过提供清晰的注释,可以解释代码的目的、使用方法和重要细节,使代码更易于阅读和维护。

  • 自动生成文档:许多开发工具和框架可以根据代码中的文档注释来自动生成文档。例如,JSDoc 是一个常用的JavaScript文档生成工具,它可以解析文档注释并生成API文档。这样其他开发人员就可以轻松地查看代码的接口和用法。

  • 提供接口定义和规范:通过文档注释,可以明确说明函数、类、方法和参数的用途、类型和预期行为。这不仅帮助其他开发人员正确使用你的代码,还可以在团队协作中提供一致性和规范。

  • 辅助代码调试和维护:当你在调试和维护代码时,文档注释可以提供有关代码功能和实现细节的重要信息。这对于理解复杂的功能和排查问题非常有帮助,尤其是当你需要处理他人编写的代码或长时间未接触的代码时。

  • 促进团队合作和知识共享:文档注释可以为开发团队提供一个共享的知识库,使所有人都能理解代码的功能和实现细节。这有助于提高团队成员之间的沟通和协作,并促进代码质量和一致性。

三. 命令行参数

JSDoc 支持大量的命令行选项,其中许多选项有长和短两种形式。或者,JSDoc 命令行选项可以在配置文件中指定。命令行选项:

选项描述
-a <value>, --access <value>只显示特定 access 方法属性的标识符: private, protected, public, or undefined, 或者 all(表示所有的访问级别)。默认情况下,显示除 private 标识符以外的所有标识符。
-c <value>, --configure <value>JSDoc 配置文件的路径。默认为安装 JSDoc 目录下的 conf.jsonconf.json.EXAMPLE
-d <value>, --destination <value>输出生成文档的文件夹路径。JSDoc 内置的 Haruki 模板,使用 console 将数据转储到控制台。默认为 ./out
--debug打印日志信息,可以帮助调试 JSDoc 本身的问题。
-e <value>, --encoding <value>当 JSDoc 阅读源代码时假定使用这个编码,默认为 utf8
-h, --help显示 JSDoc 的命令行选项的信息,然后退出。
--match <value>只运行测试,其名称中包含 value。
--nocolor当运行测试时,在控制台输出信息不要使用的颜色。在 Windows 中,这个选项是默认启用的。
-p, --private将标记有@private 标签的标识符也生成到文档中。默认情况下,不包括私有标识符。
-P, --package包含项目名称,版本,和其他细节的 package.json 文件。默认为在源路径中找到的第一个 package.json 文件。
--pedantic将错误视为致命错误,将警告视为错误。默认为 false
-q <value>, --query <value>一个查询字符串用来解析和存储到全局变量 env.opts.query 中。示例:foo=bar&baz=true。
-r, --recurse扫描源文件和导览时递归到子目录。
-R, --readme用来包含到生成文档的 README.md 文件。默认为在源路径中找到的第一 README.md 文件。
-t <value>, --template <value>用于生成输出文档的模板的路径。默认为 templates/default,JSDoc 内置的默认模板。
-T, --test运行 JSDoc 的测试套件,并把结果打印到控制台。
-u <value>, --tutorials <value>导览路径,JSDoc 要搜索的目录。如果省略,将不生成导览页。查看导览说明,以了解更多信息。
-v, --version显示 JSDoc 的版本号,然后退出。
--verbose日志的详细信息到控制台 JSDoc 运行。默认为 false
-X, --explain以 JSON 格式转储所有的 doclet 到控制台,然后退出。

详细参见:https://jsdoc.bootcss.com/about-commandline.html

四. 配置说明

1. 配置文件的类型

自定义 JSDoc 的行为,可以使用以下格式之一向 JSDoc 提供配置文件:

  • 一个JSON文件。在JSDoc 3.3.0及更高版本中,此文件可能包含注释。
  • 导出单个配置对象的 CommonJS 模块。JSDoc 3.5.0及更高版本支持这种格式。

要使用配置文件运行 JSDoc,请使用 -c 命令行选项(例如,jsdoc -c /path/To/conf.jsonjsdoc -c /path/To/conf.js)。

2. 默认配置说明

默认配置内容

{"plugins": [],"recurseDepth": 10,"source": {"include": [ /* array of paths to files to generate documentation for */ ],"exclude": [ /* array of paths to exclude */ ],"includePattern": ".+\\.js(doc|x)?$","excludePattern": "(^|\\/|\\\\)_"},"sourceType": "module","tags": {"allowUnknownTags": true,"dictionaries": ["jsdoc", "closure"]},"templates": {"cleverLinks": false,"monospaceLinks": false},"opts": {"template": "templates/default",  // same as -t templates/default"encoding": "utf8",               // same as -e utf8"destination": "./out/",          // same as -d ./out/"recurse": true,                  // same as -r"tutorials": "path/to/tutorials", // same as -u path/to/tutorials}
}
  • 无插件加载(plugins);
  • 如果使用 -r 命令行标志启用递归,JSDoc 将搜索 10 层深的文件(recurseDepth);
  • 只有以 .js.jsdoc.jsx 结尾的文件将会被处理(source.includePattern);
  • 任何文件以下划线开始或开始下划线的目录都将被忽略(source.excludePattern);
    • source.include:可选的路径数组,JSDoc应该为它们生成文档。JSDoc 将会结合命令行上的路径和这些文件名,以形成文件组,并且扫描。如果路径是一个目录,可以使用 -r 选项来递归。
    • source.exclude:可选的路径数组,JSDoc 应该忽略的路径。在 JSDoc3.3.0 或更高版本,该数组可包括 source.include 路径中的子目录。
    • source.includePattern:一个可选的字符串,解释为一个正则表达式。如果存在,所有文件必须匹配这个正则表达式,以通过 JSDoc 进行扫描。默认情况下此选项设置为.+.js(doc)?$,这意味着只有以 .js.jsdoc.jsx 结尾的文件将被扫描。
    • source.excludePattern:一个可选的字符串,解释为一个正则表达式。如果存在的话,任何匹配这个正则表达式的文件将被忽略。默认设置是以下划线开头的文件(或以下划线开头的目录下的所有文件)将被忽略。
  • JSDoc 支持使用 ES2015 modules(sourceType);
  • JSDoc 允许您使用无法识别的标签(tags.allowUnknownTags),该属性影响 JSDoc 如何处理无法识别的标签。如果将此选项设置为 false,JSDoc发现它不能识别(例如,@foo),JSDoc 将记录一个警告。默认情况下,此选项设置为 true。;
  • 标准 JSDoc 标签和 closure 标签被启用(tags.dictionaries);
    • 属性控制 JSDoc 识别哪些标签,以及 JSDoc 如何解析它识别标签。在 JSDoc3.3.0 或更高版本中,有两个内置的标签词典:
      • jsdoc: 核心JSDoc标签
      • closure: Closure Compiler 标签
  • @link标签呈现在纯文本(templates.cleverLinkstemplates.monospaceLinks)。
  • opt: 可以将 JSDoc 的许多命令行选项放入配置文件中,而不是在命令行中指定它们。为此,将相关选项的长名称添加到配置文件的 opts 部分,并将值设置为该选项的值。

五. 标签

JSDoc支持两种不同类型的标签:

  • 块标签(Block), 这是在一个JSDoc注释的最高级别。
  • 内联标签(inline), 块标签文本中的标签或说明。

块标签通常会提供有关您的代码的详细信息,如一个函数接受的参数。内联标签通常链接到文件的其他部分,类似于HTML中的锚标记(<a>)。

块标签总是以 at 符号(@)开头。除了 JSDoc 注释中最后一个块标记,每个块标签后面必须跟一个换行符。

内联标签也以 at 符号(@)开。然而,内联标签及其文本必须用花括号({ and })括起来。 { 表示行内联标签的开始,而 } 表示内联标签的结束。如果你的标签文本中包含右花括号(}),则必须用反斜线( \ )进行转义。在内联标签后,你并不需要使用一个换行符。

1. 块级标签

块级标签使用说明

2. 内联标签

内联标签使用说明

六. 使用

1. 安装:

npm install -g jsdoc

2. 生成文档

jsdoc -r src -d doc

-r表示源目录,-d表示生成的目标目录,或者使用配置文件生成:

jsdoc -c /path/to/conf.json

相关文章:

玩转微服务-技术篇-JSDOC教程

一. 简介 JSDoc 3 是一个用于 JavaScript 的API文档生成器&#xff0c;类似于 Javadoc 或 phpDocumentor。可以将文档注释直接添加到源代码中。JSDoc 工具将扫描您的源代码并为您生成一个 HTML 文档网站。 JSDoc 是一种用于 JavaScript 代码文档注释的标记语言和工具。它不仅…...

Android12之logcat日志显示颜色和时间(一百六十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

【Windows】内网穿透实现hMailServer远程发送邮件

目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网…...

深信服技术认证“SCSA-S”划重点:SQL注入漏洞

为帮助大家更加系统化地学习网络安全知识&#xff0c;以及更高效地通过深信服安全服务认证工程师考核&#xff0c;深信服特别推出“SCSA-S认证备考秘笈”共十期内容&#xff0c;“考试重点”内容框架&#xff0c;帮助大家快速get重点知识~ 划重点来啦 深信服安全服务认证工程师…...

Leetcode-二叉树oj题

1.二叉树的前序遍历 144. 二叉树的前序遍历https://leetcode.cn/problems/binary-tree-preorder-traversal/这个题目在遍历的基础上还要求返回数组&#xff0c;数组里面按前序存放二叉树节点的值。 既然要返回数组&#xff0c;就必然要malloc一块空间&#xff0c;那么我们需…...

软件磁盘阵列(software RAID)

RAID-0 等量模式&#xff08;各个磁盘平均存放文件&#xff09; RAID-1 镜像模式&#xff08;一个文件存放两个磁盘&#xff09; RAID 01 RAID 10 组合模式 RAID 5 三块以上磁盘&#xff0c;记录文件和同位码&#xff08;存放不通磁盘&#xff0c;通过同…...

浏览器安全攻击与防御

前言 浏览器是我们访问互联网的主要工具&#xff0c;也是我们接触信息的主要渠道。但是&#xff0c;浏览器也可能成为攻击者利用的突破口&#xff0c;通过各种手段&#xff0c;窃取或篡改我们的数据&#xff0c;甚至控制我们的设备.本文将向大家介绍一些常见的浏览器安全的攻击…...

vue生命周期、工程化开发和脚手架

1、前言 持续学习记录总结中&#xff0c;vue生命周期、工程化开发和脚手架 2、Vue生命周期 Vue生命周期&#xff1a;就是一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个阶段&#xff1a;① 创建 ② 挂载 ③ 更新 ④ 销毁 1.创建阶段&#xff1a;创建响应式数据 2.挂…...

文件搜索工具HoudahSpot mac中文版特点

HoudahSpot mac是一款文件搜索工具&#xff0c;它可以帮助用户快速准确地找到文件和文件夹&#xff0c;支持高级搜索和过滤&#xff0c;同时提供了多种视图和操作选项&#xff0c;方便用户进行文件管理和整理。 HoudahSpot mac软件特点 高级搜索和过滤功能&#xff1a;软件支持…...

maven中scope和optional区别

文章目录 1. Scope&#xff08;作用范围&#xff09;&#xff1a;2. Optional&#xff08;可选项&#xff09;&#xff1a; 1. Scope&#xff08;作用范围&#xff09;&#xff1a; Maven的<scope>元素用于指定依赖项的作用范围&#xff0c;即依赖项在构建和运行时的可见…...

《ChatGPT实操应用大全》探索无限可能

&#x1f5e3;️探索ChatGPT&#xff0c;开启无限可能&#x1f680; 文末有免费送书福利&#xff01;&#xff01;&#xff01; ChatGPT是人类有史以来最伟大的发明。他能写作、绘画、翻译、看病、做菜、编程、数据分析、制作视频、解高等数学题…&#xff0c;他会的技能…...

基于helm的方式在k8s集群中部署gitlab - 部署(一)

文章目录 1. 背景说明2. 你可以学到什么&#xff1f;3. 前置条件4. 安装docker服务&#xff08;所有节点&#xff09;5. 部署k8s集群5.1 系统配置&#xff08;所有节点&#xff09;5.2 安装kubelet组件(所有节点)5.2.1 编写kubelet源5.2.2 安装kubelet5.2.3 启动kubelet 5.3 集…...

flask web开发学习之初识flask(二)

文章目录 一、创建程序实例并注册路由1. 为视图绑定绑定多个URL2. 动态URL 二、启动开发服务器1. 自动发现程序实例2. 管理环境变量3. 使用pycharm运行服务器4. 更多的启动选项5. 设置运行环境6. 调试器7. 重载器 一、创建程序实例并注册路由 app.py # 从flask包中导入flask类…...

利用异或、取反、自增bypass_webshell_waf

目录 引言 利用异或 介绍 eval与assert 蚁剑连接 进阶题目 利用取反 利用自增 引言 有这样一个waf用于防御我们上传的文件&#xff1a; function fun($var): bool{$blacklist ["\$_", "eval","copy" ,"assert","usort…...

K8s Docker实践三

单主机创建多个node 在Mac桌面上部署多个Kubernetes节点可以使用Minikube工具。Minikube是一个轻量级的Kubernetes工具&#xff0c;它可以在单个主机上创建一个虚拟集群。以下是在Mac桌面上使用Minikube部署多个Kubernetes节点的步骤&#xff1a; 安装Minikube&#xff0c;运…...

记录 | pip加速配置

以下方法不仅适用于linux&#xff0c;也适用于mac 临时加速配置&#xff1a; pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com matplotlib3.4.0其中可选源有&#xff1a; https://pypi.douban.com/simple http://mirrors.aliyun.com/pypi/sim…...

HarmonyOS开发—Arkts循环渲染(ForEach)深入运用详解【鸿蒙专栏-16】

文章目录 ArkTS ForEach接口详解与应用示例ForEach接口概述介绍接口描述参数说明键值生成规则默认规则组件创建规则首次渲染非首次渲染使用场景高级用法条件渲染逻辑LazyForEach的性能优化渲染结果预期ForEach的错误使用案例与性能降低渲染结果非预期渲染性能降低结语ArkTS For…...

uniapp挽留提示2.0

项目需求&#xff1a;有时候挽留的ui是全屏的&#xff0c;用page-container也可以。后来产品提了个问题&#xff0c;手机侧滑的时候没那么顺畅&#xff08;就是一用侧滑&#xff0c;就显示出来&#xff0c;产品要的方案是如下图&#xff0c;emmm大概是这个意思&#xff09; 后面…...

电源控制系统架构(PCSA)之系统分区电压域

目录 4.1 电压域 4.1.1 系统逻辑 4.1.2 Always-On逻辑 4.1.3 处理器Clusters 4.1.4 图形处理器 4.1.5 其他功能 4.1.6 SoC分区示例 本章描述基于Arm组件的SoC划分为电压域和电源域。 所描述的选择并不详尽&#xff0c;只是可能性的一个子集。目的是描述基于Arm组件的SoC…...

[Linux] 正则表达式及grep和awk

一、正则表达式 1.1 什么是正则表达式 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 正则表达式可以在文本中查找、替换、提取和验证特定的模式。 正则表达式和通配符的区别 正则…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...