原文地址:https://www.xingkongbj.com/blog/esdoc/creat-esdoc.html

官网

介绍

ESDoc 是一个根据 javascript 文件中注释信息,生成 JavaScript 应用程序或库、模块的 API 文档的工具。具有文档覆盖率统计、系统手册、一体化测试、详细接口说明等特点。

ESDoc 与 JSDoc 对比

JSDoc 是目前最火的文档生成工具,它存在的时间也比较长,但是功能上还欠缺一些,比如文档覆盖率、自动测试、搜索等,都没有实现。并且它的使用比较复杂,需要严格使用标签,过多依赖备注来实现。它最大的坑是同名接口无法区分。

  ESDoc JSDoc
ES标准 ES6 以上 ES6
模块化 Class、import & export Class、import & export、CommonJS、AMD、Prototype
注释类型 块级注释 块级注释
标签 少量标签 标签完善,需要严格使用
文档内容 自动语义化,说明详细 注释中提炼
覆盖率 支持
测试 支持
手册 支持多个文档 支持多个文档
搜索 支持
插件 支持 支持
同名接口 重叠显示 分开显示

示例

https://try.esdoc.org/

点击左上角 Try it out

Home

读取根目录 README.md 文件,可以用于记录项目基本信息。

Manual

读取本地配置的 markdown 文件,可以用于记录项目相关资料。

Reference

接口的详细说明,根据注释自动生产。

Source

接口的源代码,同时提供文档覆盖率查看。

Test

接口的测试,主要用于纯 JS 代码。

安装和使用

// 安装
npm install --save-dev esdoc esdoc-standard-plugin // 使用
./node_modules/.bin/esdoc

配置文件

项目根目录 .esdoc.json

// esdoc 配置,react版
{
"source": "./app", // 需要生成文档的 js 主目录
"destination": "./esdocs", // 输出目录
"includes": [
"\\.(js|jsx|vue)$" // 包含的匹配正则
],
"excludes": [
"(bundle\\.js|export\\.js)$" // 排除的匹配正则
],
"index": "./README.md", // 首页引入文件
"package": "./package.json", // package 配置文件
"outputAST": true, // 输出结构树
"plugins": [
{ "name": "esdoc-standard-plugin", // 基础插件
"option": {
"manual": {
"index": "./manual/index.md",
"files": [
"./manual/directory.md"
]
}
}
},
{ "name": "esdoc-jsx-plugin", "option": { "enable": true } }, // 支持 jsx 语法
{ "name": "esdoc-ecmascript-proposal-plugin", "option": { "all": true } }, // 支持 es 新语法
{ "name": "esdoc-react-plugin" }, // 支持 react 语法
{
"name": "esdoc-importpath-plugin", // 支持 import 路径修改
"option": {
"stripPackageName": true,
"replaces": [
{"from": "^app/page/", "to": "page/"},
{"from": "^app/component/", "to": "component/"},
{"from": "^app/module/", "to": "module/"},
{"from": "^app/reactTools/", "to": "tools/"},
{"from": "^app/middlewares/", "to": "middlewares/"}
]
}
}
]
}

自动接入工具 eslint-init

接入工具安装

$ npm i -g esdoc-init

接入

# 目前只支持 react 项目
$ esdoc-init # 在有 package.json 文件的项目根目录

运行 esdoc

# 在有 package.json 文件的项目根目录
$ npm run esdoc

常用标签

@public--对外接口,一般可以省略

@private--内部接口,使用 "_" 可以省略

@protected--受保护接口

/**
* @public
*/
class MyClass {
/**
* @private
*/
_method(){...} /**
* @protected
*/
add(){...}
}

@deprecated--接口废弃,会显示在文档中

/**
* @deprecated 使用 MyClassEx 替换
*/
class MyClass{...}

@ignore--忽略接口,不会显示在文档中

/**
* @ignore
*/
class MyClass{...}

@version--标注版本号

/**
* @version 0.0.1
*/
class MyClass{...}

@todo--后期需要实现功能

/**
* @todo 支持修改
*/
class MyClass{...}

@extends--继承自,一般能自动识别

/**
* @extends {SuperClass1}
* @extends {SuperClass2}
*/
class MyClass extends mix(SuperClass1, SuperClass2) {...}

@param--参数,支持对象

class App extends MFEComponent {
/**
* 初始化
* @param {Object} props - 传入对象
* @param {Number} props.foo - 描述
* @param {String} props.bar - 描述
*/
constructor(props){...}
}

@return--返回值,支持对象

class MyClass {
/**
* @return {Object} 描述
* @property {number} foo - 描述
* @property {number} bar - 描述
*/
method(){...}
}

@type--类型定义

// 单个属性
class MyClass {
constructor() {
/** @type {number} */
this.p = 123; /**
* @type {Object}
* @property {number} res.foo - 描述
* @property {string} res.bar - 描述
*/
this.res = {foo: 123, bar: "abc"};
}
} // get/set
class MyClass {
/** @type {string} */
get value() {} /** @type {string} */
set value(v){}
}

类型语法

数组

/**
* @param {number[]} param - 描述
*/
function myFunc(param){...}

并存类型

/**
* @param {number|string} param - 描述
*/
function myFunc(param){...}

esdoc 自动生成接口文档介绍的更多相关文章

  1. rbac介绍、自动生成接口文档、jwt介绍与快速签发认证、jwt定制返回格式

    今日内容概要 RBAC 自动生成接口文档 jwt介绍与快速使用 jwt定制返回格式 jwt源码分析 内容详细 1.RBAC(重要) # RBAC 是基于角色的访问控制(Role-Based Acces ...

  2. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  3. WebApi使用swagger ui自动生成接口文档

    之前就写到.最近正在使用webapi.这里介绍一个实用的东西swageer ui现在开发都是前后端分开.我们这里是给前端提供api.有时候对于一个api的描述,并不想专门写一份文档.很浪费时间.swa ...

  4. Spring Boot Swagger2自动生成接口文档

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 1.问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 2 ...

  5. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)

    一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...

  6. JApiDocs(自动生成接口文档神器)

    JApiDocs教程 前言 作为一名优秀的程序员来说,由于涉及到要与前端进行对接,所以避免不了的就是写接口文档.写完接口文档,一旦代码返回结果,参数等出现变动,接口文档还得随之改动,十分麻烦,违背了我 ...

  7. .net core 使用swagger自动生成接口文档

     前言 swagger是一个api文档自动生动工具,还集成了在线调试. 可以为项目自动生成接口文档, 非常的方便快捷 Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.N ...

  8. drf07 过滤 排序 分页 异常处理 自动生成接口文档

    4. 过滤Filtering 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持. pip install django-filter 在配置文件sett ...

  9. Django rest_framework 自动生成接口文档

    自动生成接口文档 REST framework可以自动帮助我们生成接口文档. 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 1. 安装依赖 REST fram ...

随机推荐

  1. git使用笔记-基础篇

    git使用手册:https://git-scm.com/book/zh/v1/ 一.分支 1.查看所有本地分支 git branch 2.查看所有本地分支和远程分支 git branch -a 3.查 ...

  2. [转]用JS获取地址栏参数的方法(超级简单)

    本文转自:http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用 ...

  3. Windows 入门杂乱无章版

    windows入门 /users/username/appdata/roaming/microsoft/windows/start menu/startup目录中的应用程序是在该用户登录时启动的 /w ...

  4. stl::iterator汇总

    STL——iterator 一.概述Iterator(迭代器)模式又称Cursor(游标)模式, 根据STL中的分类,iterator包括:Input Iterator:只能单步向前迭代元素,不允许修 ...

  5. mybatis SqlSession事务

    mybatis版本:3.4.6. mybatis默认的SqlSessionFactory是DefaultSqlSessionFactory,它openSession()的源码是: public Sql ...

  6. 命令“mkdir "xxx" xcopy "xxx" "xxx" /S /E /C /Y”已退出,代码为 9009。

    前几天公司来了个新同事,使用的VS2013,但我们的所有项目都是使用VS2012创建的,我想用13打开应该没有什么问题.昨天新同事修改完代码提交后,我获取完成后无法编译成功,提示: 错误 3 命令“m ...

  7. LOJ#137. 最小瓶颈路 加强版(Kruskal重构树 rmq求LCA)

    题意 三倍经验哇咔咔 #137. 最小瓶颈路 加强版 #6021. 「from CommonAnts」寻找 LCR #136. 最小瓶颈路 Sol 首先可以证明,两点之间边权最大值最小的路径一定是在最 ...

  8. 在 CentOS 上安装 vsftp 服务

    在 CentOS 上安装 vsftp 服务 1.查看当前 CentOS 服务器是否已安装了 vsftpd 服务: rpm -q vsftpd 如果打印如下类似的信息则表明已安装 vsftpd 服务: ...

  9. PHP underlying structure

    http://www.phpinternalsbook.com/classes_objects/magic_interfaces_comparable.html

  10. 【起航计划 024】2015 起航计划 Android APIDemo的魔鬼步伐 23 App->Notification->IncomingMessage 状态栏通知

    应用程序可以使用Notifications来通知用户某个事件发生了(如收到短信).类NotificationManager 用来处理Notification, NotificationManager可 ...