ES6写JSDoc的一些经验和实例

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

ES6写JSDoc的一些经验和实例

关于JSDoc和它的基本语法支持,请参考官方文档:http://usejsdoc.org/。虽说官方文档还是比较全的,实际使用中还是需要摸索一下适合自己项目的写法,并考虑最终文档生成工具的支持。

例1:Object类型在function中的定义

假设我们有个需要Object参数的方法。可以这样写:

/**
 * 把两个数字a和b加起来
 * @param {Object} args
 * @prop {number} [args.a] 我是a
 * @prop {number} [args.b=0] 我是b,默认值为0
 * @return {number} 返回a+b
 */
function func({ a, b = 0 }) {
  return a + b;
}

这种写法不允许其他部分重复利用args的结构。

也可以将args独立声明成一个类型:

/**
 * @typedef {Object} FuncArgs
 * @prop {number} [a] 我是a
 * @prop {number} [b=0] 我是b,默认值为0
 */
/**
 * 把两个数字a和b加起来
 * @param {FuncArgs} args
 * @return {number} 返回a+b
 */
function func({ a, b = 0 }) {
  return a + b;
}

这种写法通常用于声明全局或模块通用的类型。

也可以将FuncArgs声明为func的内部类型:

/**
 * @typedef {Object} func~FuncArgs
 * @prop {number} [a] 我是a
 * @prop {number} [b=0] 我是b,默认值为0
 */
/**
 * 把两个数字a和b加起来
 * @param {func~FuncArgs} args
 * @return {number} 返回a+b
 */
function func({ a, b = 0 }) {
  return a + b;
}

这种写法与同样是为func内部类型的第一种写法比起来,更具可读性。但有个个人不太喜欢的地方就是最终生成的文档会将function和参数的类型分成两个部分,对阅读这种文档结构不熟悉的人来说不是很友好。

例2: function作为参数传入的写法

首先,官方设定了一个@callback关键字:

/**
 * @param {func~myCallback} cb
 * @param {number} num
 * @return {number}
 */
function func(cb, num) {
  return cb(num);
}
/**
 * @callback {Function} func~myCallback
 * @param {number} a
 * @return {number}
 */

不过同例1一样,也可以利用@typedef关键字:

/**
 * @param {func~myCallback} cb
 * @param {number} num
 * @return {number}
 */
function func(cb, num) {
  return cb(num);
}
/**
 * @typedef {Function} func~myCallback
 * @param {number} a
 * @return {number}
 */

这两种基本上是一样的,使用@callback更符合语义。另外一点是,这种回调方法一般很少通用,所以建议声明为调用方法的内部类型。

例3: ES6模块default export

/** @module testmodule */
/**
 * @param {number} a I am argument a.
 * @return {string} Return description.
 **/
export default function(a, b) {
  return '' + a + b;
}

jsdoc-to-markdown生成结果:

single default export

使用@alias:

/** @module testmodule */
/**
 * @alias module:testmodule
 * @param {number} a
 * @return {string} b
 **/
function test(a, b) {
  return '' + a + b;
}

export default test;

jsdoc-to-markdown生成结果跟上面一样。

有趣的是,如果直接export的不是匿名方法,结果会不一样。

/** @module testmodule */
/**
 * @param {number} a I am argument a.
 * @return {string} Return description.
 **/
export default function test(a, b) {
  return '' + a + b;
}

jsdoc-to-markdown生成结果:

single default export

例4: 有多个export的ES6模块

jsoc-to-markdown的wiki给了一个非常简单的例子,但只处理了整个文件没有default export的情况: https://github.com/jsdoc2md/jsdoc-to-markdown/wiki/How-to-document-an-ES2015-module-(multiple-named-exports)。

假设有一个ES6文件:

/** @module testmodule */
/**
 * @const
 */
export const testConst = 1;

/**
 * @enum
 */
export const testEnum = {
  'JS': 1,
  'PYTHON': 2,
  'C++': 3
};

/**
 * Function export
 */
export function func() {}

/**
 * @param {number} a I am argument a.
 * @return {string} Return description.
 **/
export default function test(a, b) {
  return '' + a + b;
}

生成结果如下:

es6 multi exports

这就让人很不解了,为啥要把那些跟default无关的东西放在default下面,混淆视听。

但如果把default export去掉就好了:

es6 multi exports

但现实是这两种有可能同时出现,我没有找到很好的解决办法,目前只能通过避免出现这种写法或者手动加@memberof module:testmodule,或者更改文档生成模版来修正。

## 例5: 使用Babel

JSDoc还不能聪明到解析ES6代码,为了能让它解析ES6,需要借助于Babel,和插件jsdoc-babel,当然还有相应的Babel preset和插件。

首先安装这些依赖:

npm i --save-dev babel-core babel-preset-env jsdoc jsdoc-babel

然后需要一个JSDoc配置文件, .jsdoc.json(随便什么名字):

{
  "plugins": ["node_modules/jsdoc-babel"]
}

还要一个.babelrc,根据自己的代码来选择preset和插件:

{
  "presets": [
    [
      "env",
      {
        "targets": {
          "browsers": ["last 2 versions", "safari >= 7"]
        },
        "modules": false
      }
    ]
  ]
}

然后运行:

npm run jsdoc -c .jsdoc.json

其他一些状况

有时候模块下的export会被认作内部对象,而不是静态对象

并不是很清楚具体的触发时机,可能是个bug?碰到这种我只能认命加/** @static */来修正结果。

要选对模版

用ES6写JS最大的好处恐怕就是从此多了无数个文件,每个文件里都只是很小一块代码,从此找代码要靠IDE跳转或全文搜索了。So我会希望将一个文件夹作为一个模块,所有此文件夹下的文件通过index.js来选出该模块开放给别人用的东西。
然后我就发现用JSDoc生成文档的时候,要做到这点比较难。
第一是JSDoc似乎并不能识别文件路径,如果要将多个文件声明属于同一个模块,只有在每个文件头部手动加上/** @module ModuleName */。
但这一切,还需要模版的帮忙。我试用了nijikokun/minami和tui.jsdoc-template。tui.jsdoc-template很好的实现了我想要的这种树状的结构效果:
tui jsdoc template

还有要考虑的一点是/** @enum */这个关键字,个人认为是应该要在生成文档时列举出声明的键和值的。但同样的,要看模版支不支持。

支持flow

flow的支持也是简单地靠Babel插件transform-flow-strip-types来完成。
特地拿出来讲是因为我曾很美好地设想可以直接在flow type的声明下面,加上结构特别类似的JSDoc和必要的描述说明文字。把flow type声明转成JSDoc这一步甚至可以完全通过脚本自动完成,会省不少力气。
结果发现如果一个文件纯粹只有flow声明和注释,transform-flow-strip-types这个插件会直接将整个文件的内容干掉,导致里面的JSDoc丢失。
然后flow type声明转成JSDoc这个我刚开始就放弃了,要做到这点我需要一点点分析AST结构,将每种情况对应成JSDoc,很费力而且价值不是很大。

jsDoc注释规范 jsDoc,顾名思义,jsDoc是一个用于JavaScript的API文档生成器,类似于Javadoc或phpDocumentor。它根据JavaScript文件中的注释信息,生成JS应用程序或模块的API文档。通过使用JSDoc标记如:命名空间,类,方法参数等,从而使开发者能够轻易地阅读代码,掌握代码定义的类和和其属性和方法,从而降低维护成本并提高开发效率。 JSDoc中文文档 JSDoc官网 JSDoc注释通常应该放在代码被记录之前。为了被JSDoc解析器识别,每个注释必须以/**序列开头,以便由JSD 阅读详情

相关推荐

谈谈JSDOC对ES6的支持

随着AMD与COMMONJS的深入人心,ES6与babel的组合已成为前端开发必备套件,所以也有必要更新JSDOC的写法,为应用与技术的发展与维护提高更好的文档支持。1. 生成文档的两种选择根据前端代码编译的生命周期,生成文档可以选择在ES6编译后或ES6编译前,编译后的优点是能完全兼容ES3文档规范,学习成本低,所需的JSDOC注解较少,但经过测试,却发现可信度不高,原因在于编译后代码与注释的关联

甘焕的博客 3944

使用jsDoc(注释规范)

使用@typedef和@property 定义一个类型,然后在其他地方使用/*** @property {string} title 书名* @property {string} author 作者*//***/

smouns_的博客 4064

红宝书第五十五讲:文档生成(JSDoc vs ESDoc):像写笔记一样自动生成说明书

红宝书第五十五讲:文档生成(JSDoc vs ESDoc):像写笔记一样自动生成说明书

kovlistudio的博客 507

JSDoc ,一个可替代 TypeScript 的方案?

许多开发者喜欢使用TypeScript,因为它具有类型检查功能。然而,这需要额外的转译步骤,可能会带来麻烦和浪费时间。本文将向您展示如何使用JSDoc来获得相同类型的控制,同时使用纯JavaScript进行最快的开发时间和更好的文档编写!JavaScript已经巩固了其作为近年来最常用的脚本语言之一的地位。它以在Web平台上编写脚本的简易性而闻名。随着语言的发展,它从最初只是一个利用Java成功的...

前端达人 950

全局子程序 参数调用

为什么要子程序: 为了实现程序结构化,我们尽量使用不同功能的功能块来实现一些特定的功能, 子程序接口: 使用过程的注意事项,尤其是数组使用时的注意事项 从一个主程序中可以将参数传递到局部或全局子程序和函数中。 怎样传递参数有 2 种方式: 作为 IN 参数 变量值在主程序中保持不变。 这种传递方式也称为“ 值传递 (Call by Value)”。 作为 OUT 参数 子程序读取并更改该值,然后将新值写回到主程序中。 这种传递方式也称为“Call by Reference”。 举例说明 1 DEF MY

Eric_Yang1024的博客 1095

海康VisionMaster表面缺陷滤波实战:从参数调优到工业检测避坑指南

本文深入探讨海康VisionMaster表面缺陷滤波技术在工业检测中的应用,从参数调优到ROI绘制与Blob分析的协同策略,提供金属外壳、锂电池铝壳等复杂表面的缺陷检测实战指南。通过多级滤波架构和动态ROI生成法,显著提升检出率至98.7%,误检率低于0.5%,为工业质检提供智能化解决方案。

ujm5678901的博客 328

JSDoc

JSDoc 是许多代码库中使用的一种流行的内联文档方法。 编写 JSDoc 是为了增强代码的可读性,以及方便导出 API 文档。 为什么要使用 JSDoc? JSDoc 是 DocBlock 的 JavaScript 实现,DocBlock 是一种用于各种编程语言(包括 PHP、Ruby 和 Python)的文档方法。 它提供了一种一致且可识别的文档方法。还有几个工具可以根据 JSDoc 注释自动...

lio-zero 的博客 1237

Dify如何实现自主学习

摘要:Dify通过构建感知-决策-执行-反馈的闭环实现"自主学习",本质是打造能自动获取信息、更新知识库并调整策略的Agent工作流。核心包括:1)建立知识库作为记忆体;2)搭建感知与执行工具获取实时信息;3)通过工作流编排决策"大脑",包含LLM决策节点、行动执行节点和反馈反思节点。典型应用如根据用户反馈优化回答风格,通过存储反思日志到知识库实现持续优化。这种机制使智能体能基于新数据和经验不断自我改进。

专注于技术研发行业技术主要有AI人工智能视觉识别、物联网技术、电商平台、app原生技术、微信小程序、鸿蒙语言开发、办公企业oa、ERP等,致力于做东半球最优秀的程序员 725

JS-ES6 jsdoc通过注解生成->更具规格的API文档

前言: 在敏捷开发的过程中或者说是项目后期维护的过程中,文档是必不可少的,可以避免过多的交流从而加快项目的速度,今天介绍的就是一款基于前端的工具jsdoc,他能够根据代码中的注释很快生成API文档,只需要一个命令。 1.首先我这里推荐一个注释的快捷键工具,您可以在VS Code 中安装它。 插件名称:koroFileHeader 截图: 这个插件安装...

北京-老黑的博客 2359

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 335

jlink驱动安装

jlink驱动下载安装及keil识别

qq_43868701的博客 3万+

Moodle JavaScript API 文档:基于 JSDoc 生成 AMD 与 ES2015 模块的开发参考指南

Moodle 作为全球广泛使用的开源学习平台,其前端大量采用 JavaScript,并同时存在 AMD 与传统 ES2015(ESM)两种模块格式。本文围绕仓库内 [.grunt/jsdoc/README.md](https://link.gitcode.com/i/c2fc982b7074ac32f6b68415a8a3e4f4) 这一文档入口,系统讲解 Moodle 如何基于 JSDoc 为这

gitblog_00911的博客 143

2006NOIP普及组真题 4. 数列

从上述推理中,我们发现要输出的幂次和中的第 N 项(也就是幂次和中的序号N),对应的二进制位数和幂次和对应的二进制位数相同。当 k=3 时,k的幂次为1, 3, 9, 27, 81…,即第0位,第2位均为1,转成 k 进制(k=3)时。,即第2位,第3位均为1,转成 k 进制(k=3)时。转成 k 进制(k=3)时的幂次和为。,即第0位,第1位,第2位均为1,(即第0位,第1位,第2位均为1)N=12时,12的二进制是。(即第0位,第2位均为1)(即第2位,第3位均为1)结论:这道题就变成了。

weixin_40252159的博客 1514

React Styleguidist 组件文档编写完全指南:从 JSDoc 注释到交互式 Playground

Styleguidist(React Styleguidist)是一个"活"的 React 组件开发环境与风格指南工具,它的核心能力之一就是**从源码中自动生成组件文档**。本指南以仓库中的 [docs/Documenting.md](https://link.gitcode.com/i/b524080b1b912873636b1c70525201f6) 为主线,系统讲解如何通过代码注释(JSDo

gitblog_00661的博客 363

Unity游戏开发客户端Unity基础

Unity游戏开发客户端面经 之 Unity 篇

Sea3752的博客 2万+

机器学习实战——疫情数据分析与预测

机器学习如何做到疫情可视化——疫情数据分析与预测实战 本文将带领大家爬取11个国家以及中国31个省(自治区、直辖市)在2022.0101-2022.06.19的新冠疫情数据。并且采用机器学习模型对2022.6.20-2022.6.30每一天的全国确诊人数、死亡人数、治愈人数进行预测,**做出疫情可视化图形并且求出最终的相关系数R2!...

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

探索JSDoc的新境界:jsdoc-vue - 为Vue.js项目带来清晰的文档

探索JSDoc的新境界:jsdoc-vue - 为Vue.js项目带来清晰的文档 项目简介 在开发复杂的前端应用时,代码文档的重要性不言而喻。是一个针对Vue.js组件和项目的JSDoc插件,它旨在帮助开发者生成结构清晰、易于理解的API文档,提升团队协作效率。 技术分析 jsdoc-vue是基于原生JSdoc的扩展,它充分利用了JSdoc的强大注解能力,并针对Vue.js的特点进行了优化。以下是...

gitblog_00046的博客 896

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

一款生成JSDoc风格注释的VSCODE插件

JSDoc Annotation 是一款轻量级、可高度定制的注释生成插件,旨在为您的 TypeScript 或 JavaScript 文件中的类、方法、属性等成员,快速生成符合JSDoc风格的注释。通过简便的命令操作,它让开发过程更加高效、流畅,极大提升代码注释的生成效率,带来未来感十足的开发体验。

cjiajiajiawa的博客 2432

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

jsdoc通过注解生成HTML API文档

1.首先我这里推荐一个注释的快捷键工具,您可以在VS Code 中安装它。 插件名称:koroFileHeader 这个插件安装好后就可以使用了,鼠标点击js方法然后按 Ctrl+Alt+T ,就会自动生成注释。 2.接下来我们安装jsdoc,您可以打开VS Code 的终端 输入命令:npm install jsdoc -g 3.jsdoc注释的关键字及说明,可以参考。 (1)对文件进行描述 ...

xdhc的博客 1511

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

vue项目配置jsdoc

1、项目根目录添加jsdoc-vue.js var compiler = require('vue-template-compiler'); exports.handlers = { // 利用 vue-template-compiler 编译 vue 模板 beforeParse: function (e) { if (/\.vue$/.test(e.filename)) { ...

weixin_34334744的博客 3252

JSDoc注释使用

JSDoc注释使用 JSDoc通过JS文件中的一些特殊JSDoc标记,解析文档。下面列出了可以创建HTML文档的一些特殊JSDoc标记。如果你曾在Java代码中编写过javadoc注释,应该对这些标记并不陌生。如果要在最后生成的文档中包含某个注释块,所有这些注释块都必须以/**开头,并以*/结束。JSDoc 命令属性命令名                描述 @param@argument   ...

给自己一个记录的天空 752

JSDoc 介绍使用规范JsDoc的使用介绍

JsDoc Toolkit不久前发布了2.3.2版本,主要还是对前版本的修复。 如果你需要使用Ant,JsDoc还有一个Ant插件:JsDoc Toolkit Ant Task 下载JsDoc Toolkit2.3.2:http://jsdoc-toolkit.googlecode.com/files/jsdoc_toolkit-2.3.2.zip命令名描述 @param @argument 指定...

关注前端开发 658

【亲测免费】 JSDoc:JavaScript API文档生成利器

JSDoc是一款广受好评的JavaScript API文档生成工具,自2011年起,由Michael Mathews及其贡献者团队维护。它采用JavaScript为主要编程语言,并且遵循Apache-2.0开源许可协议,允许开发者自由地使用、修改和分发。JSDoc通过解析代码中的注释来自动化文档的创建过程,极大地方便了开发者对复杂项目的理解与维护。 ## 核心功能 JSDoc的核心能力在于其能...

gitblog_01216的博客 664

jsdoc安装与配置

0 环境 本文档采用npm版本为6.11.3 jsdoc官网 1 使用NPM安装JSDoc 首先,新建一个工程目录,不妨为jsdoc_demo。创建完成后进入目录 执行 npm init -y 生成一个package.json文件 安装jsdoc npm i -D jsdoc package.json中会新增开发依赖配置项 2 配置 jsdoc需要一个配置文件,如果你不创建它,jsdoc会使用默认值 首先,在工程根目录创建一个文件jsdoc.json,并从官网复制默认内容进去 { "plu

wallezhou的博客 1195

jsDoc开发文档生成

一键生成 jsdoc 开发文档

pleasantsheep_的博客 1616

jsDoc注释的规范

jsDoc是一个用于JavaScript的API文档生成器。它根据JavaScript文件中的注释信息,生成JS应用程序或模块的API文档。通过使用JSDoc标记如:命名空间,类,方法参数等,使开发者能够轻易地阅读代码,掌握代码定义的类和和其属性和方法,从而降低维护成本并提高开发效率。添加一个描述很简单–只需在文档注释中键入所需的说明。可以使用特殊的 JSDoc标签 来提供更多信息。例如,如果函数是类的构造函数,则可以通过添加标记来表示。使用标签添加更多的信息。

什么当当当啊? 1635
上一篇: 为Git库设置持续集成做自动化测试(TravisCI + Github)
下一篇: 怎么看待Redux
杰尼js
博客等级 码龄15年 21粉丝 47原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值