jsdoc3详细入门(图文)

jsdoc3是一个比较方便的js代码生成文档工具。通过在代码中加入规范化的注释可以快速生成合适的接口文档,许多IDE工具也逐渐支持jsdoc规范,拥有jsdoc插件,如Hbuilder,VSCode,Submile Text等。

在使用jsdoc3之前,还需要安装Node.js。Node.js 安装配置|菜鸟教程

一、jsdoc3的下载安装

1)jsdoc3开源地址:

github:https://github.com/jsdoc/jsdoc

码云:https://gitee.com/mirrors/JsDoc3

2)安装

运行界面输入cmd打开控制台,使用npm安装(全局安装)

npm install -g jsdoc

运行界面输入cmd打开控制台,输入 jsdoc -v,出现下图表示成功安装

二、jsdoc3的基本使用

1)jsdoc3说明文档

 [](https://jsdoc.app)

2)使用命令打包js

以一个示例文件jsdoc-test.js为例。这个文件我放在了E:\mapAPI\docstrap

jsdoc-test.js

1./**  
2. * @file  
3. * 这是首页内容展示。  
4. * 支持html样式内容  
5. * <h3>Grades</h3>  
6. */   
7./**  
8. * @class Grades      
9. * 班级类  
10. *  
11. */   
12.function Grades() {   
13. /**  
14. * @property {Array} students  
15. * 班级学生  
16. */   
17. this.students = [{"name":"学生1"},{"name":"学生2"}]   
18. /**  
19. * @property {String} name  
20. * 班级名称  
21. */   
22. this.name = "通信1班"   
23. /**  
24. * @property {String} headMaster  
25. * 班主任  
26. */   
27. this.headMaster = "班主任1"   
28.}   
29./**  
30. * 获取班级学生  
31. * @return {Array} 班级学生数组.{@link Grades#students}  
32. */   
33.Grades.prototype.getStudents = function() {   
34. return this.students;   
35.}   
36./**  
37. * 设置新班主任  
38. * @param {String} headMaster 新班主任名称  
39. */   
40.Grades.prototype.setHeadMaster = function(headMaster) {   
41. this.headMaster = headMaster;   
42.} ​  

在jsdoc-test.js目录下打开控制台,输入:

jsdoc jsdoc-test.js --debug

选项: --debug 生成时控制台打印调试信息。

回车后如下图所示,打印了生成的相关信息


生成后out文件夹中的内容如下图:

点击html文件打开。每个html对应一个页面。生成的文档页面如下图

三、jsdoc3模板配置与使用

jsdoc3有一些风格不错,功能丰富的模板。这些模板在上面的jsdoc3的github里可以找到。这里以docstrap模板为例,记录使用其他模板插件生成文档页面的过程。

docstrap github:https://github.com/docstrap/docstrap

1)安装docstrap

使用npm安装docstrap。在E:\mapAPI\docstrap 打开控制台,输入 npm i ink-docstrap 进行安装

2)创建模板配置文件

新建一个jsdoc.conf.json的空文件,然后填写配置的内容。docstrap的配置方式在遵循jsdoc3配置方式的基础上,新增加了一些选项。具体的选项说明可以在github中查看。以下是我在用的配置模板

jsdoc.conf.json

{
"tags":{
"allowUnknownTags":true
},
"opts":{
"template":"./node_modules/ink-docstrap/template",
"encoding":"utf8",
"destination":"./test_doc/",
"recurse":true
},
"plugins":["plugins/markdown"],
"recurseDepth":10,
"source":{
"includePattern":".+\\.js(doc|x)?$",
"excludePattern":"(^|\\/|\\\\)_"
},
"templates":{
"logoFile":"",
"cleverLinks":false,
"monospaceLinks":false,
"dateFormat":"dddMMMDoYYYY",
"outputSourceFiles":true,
"outputSourcePath":true,
"systemName":"",
"footer":"",
"copyright":"",
"navType":"vertical",
"theme":"cosmo",
"linenums":true,
"collapseSymbols":false,
"inverseNav":true,
"protocol":"html://",
"methodHeadingReturns":false,
"search":true
},
"markdown":{
"parser":"gfm",
"hardwrap":true
}
}

3)生成文档

E:\mapAPI\docstrap 打开控制台,输入 jsdoc jsdoc-test.js -c jsdoc.conf.json --debug

此时当前目录下会出现一个test_doc的文件夹。

里面便是生成好的文档文件。


image.png

效果图:



四、jsdoc3的gulp插件使用

在上面的安装好docstrap后,继续执行安装gulp-jsdoc3

1)安装gulp

在E:\mapAPI\docstrap 打开控制台,输入 npm i gulp@3.9.0

2)初始化package.json

输入npm i init生成一个package.json文件

3)安装gulp-jsdoc3等插件包

输入npm i gulp-jsdoc3 run-sequence 安装

4)新建gulpfile文件

新建一个gulpfile.js,内容如下

1.let gulp = require('gulp');  
2.let jsdoc = require('gulp-jsdoc3');  
3.  
4.gulp.task('doc', function (cb) {  
5.    var config = require('./jsdoc.conf');  
6.    gulp.src(['README.md', './js/**/*.js'], {read: false})  
7.        .pipe(jsdoc(config, cb));  
8.});  
9.  
10.gulp.task('default', function (cb) {  
11.    let runSequence = require('run-sequence');  
12.    runSequence('doc', cb);  
13.      
14.    gulp.watch(['./js/**/*.js'],["doc"]);  
15.});   

5)执行gulp

输入 gulp ,成功运行如下图所示

当js文件发生变化时,会自动监听并重新打包新的文档文件,在开发时可以边写代码边生成开发文档。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352