Javascript自动化文档工具JSDuck在Windows下的使用心得
作者: zyl910
一、工具比较
为了让前端JavaScript程序更具可维护性,更利于团队开发,文档非常重要。此时便需要使用自动化文档工具了。
我对比了各种JavaScript自动化文档工具,发现JSDuck最适合我。它的优点有——
- 生成文档的易读性高,界面美观。
- 文档注释的语法简单,功能丰富,能比较随意的编写文档注释。
- 对于 构造函数、闭包、极简主义 这3种方法定义的类,均能正确识别、生成文档。
- 提供了打包好的exe,可直接在Windows下使用,不用安装 ruby 环境。且其文件小,只有3MB左右,很适合放在代码目录中。
JSDuck强力功能点如下:
- 树形类命名空间组织
- 类子父关系的层次体系展示
- 成员与事件和配置项快速索引
- 可穿插着色代码范例演示和编辑范例代码
- 类成员源码实现部分快速导航
二、下载与环境安装
JSDuck推荐的安装办法是——先装好ruby环境,然后用gem或apt-get等命令安装JSDuck。
对于Windows平台,它还提供了打包好的exe。下载下来后直接可以用,无需安装ruby环境。
JSDuck的发布地址是——
https://github.com/senchalabs/jsduck/releases
它目前的稳定版是 5.3.4,可点击上述页面中的“jsduck-5.3.4.exe”进行下载。
三、命令行与使用心得
JSDuck是一个命令行程序,故其基本用法是——通过命令行配置好参数,然后执行该命令生成文档。
为了避免每次敲命令的重复劳动,它还提供了 --config 参数,后面接一个JSON配置文件(一般为config.json)的路径。这便能使用JSON配置中的参数了。
命令行与--config方式并不是互斥的,可同时使用。你可自由的决定哪些参数放到配置文件中,哪些直接写在命令行中。
JSDuck命令行的格式为——
jsduck [options] files/dirs...
可使用 --help 参数来查看帮助。
jsduck --help
3.1 Windows 下的使用心得
首先,因为我们现在是直接使用下载的“jsduck-5.3.4.exe”。因文件名不同,所以不能像官方教程那样用“jsduck”命令,而应该用“jsduck-5.3.4.exe”(或“jsduck-5.3.4”)。
其次,遇到了环境变量与相对路径问题——
- 因“jsduck-5.3.4.exe”是单独下载的exe,没注册环境变量。所以我们在命令提示符中使用时,只有进入到此exe的所在目录中才能使用,否则会报错找不到exe。
- “jsduck-5.3.4.exe”运行时,是先在临时目录中解压后再运行的,导致其当前目录与之前的不同。导致无法使用相对目录,特别是不适合在 config.json 中使用目录。但若写成绝对路径,却又没有通用性。
这些问题可通过Windows批处理来解决。因为批处理提供 %~dp0 变量来代表当前目录,这便可以方便的指定目录了。
例如JavaScript源码在“src”子目录,准备将文档生成到doc目录时,批处理(jsduck_make.bat)可这样写——
%~dp0jsduck-5.3.4.exe --output="%~dp0doc" --images="%~dp0images" --builtin-classes --title="test_jsduck: Test JSDuck" "%~dp0src"
pause
参数说明——
| 参数 | 说明 |
|---|---|
| --output="%~dp0doc" | 设置输出目录为当前目录下的“doc”子目录 |
| --images="%~dp0images" | 设置输出目录为当前目录下的“images”子目录 |
| --builtin-classes | 建javascript语言内建类文档,如Array或Object类的使用说明。 |
| --title="test_jsduck: Test JSDuck" | 设置文档标题 |
| "%~dp0src" | 没有其他命令约束的,就是源码目录(或文件),能支持多个源码目录。这里是将当前目录下的“src”子目录作为源码目录 |
在资源管理器中双击该bat,便可生成文档。不用在“命令提示符”手工敲命令了。

有时会遇到 in "mkdir": Permission denied 这样的错误信息,这一般是因文件临时被安全软件锁定了所引起的。再双击bat重新生成就行。
四、生成效果


范例代码:
/** 动物.
*/
var Animal = {
/** 创建 动物.
*
* @return {Animal} 返回所创建的对象.
* @static
*/
createNew: function(){
var animal = {};
/** 睡觉.
*/
animal.sleep = function(){ alert("睡懒觉"); };
return animal;
}
};
/** 猫.
*
* @extends Animal
*/
var Cat = {
/** 声音.
* @static @protected
*/
sound : "喵喵喵",
/** 创建 猫.
*
* @return {Cat} 返回所创建的对象.
* @static
*/
createNew: function(){
var cat = Animal.createNew();
/** 发声.
*/
cat.makeSound = function(){ alert(Cat.sound); };
/** 修改声音.
* @param {String} x 声音.
*/
cat.changeSound = function(x){ Cat.sound = x; };
return cat;
}
};
JSDuck对于 构造函数、闭包、极简主义 这3种方法定义的类,均能正确识别、生成文档。完整的范例源码地址:
https://github.com/zyl910/test_jsduck
参考文献
- 官网: https://github.com/senchalabs/jsduck
- 官方wiki: https://github.com/senchalabs/jsduck/wiki
- yeelan0319《Javascript自动化文档工具:YUI Doc, JSDoc 3, JSDuck等比较》. https://segmentfault.com/a/1190000002579067
- mymickey《Jsduck:前端文档生成利器Jsduck介绍及安装使用》. http://lzw.me/a/jsduck-doc.html
- 阮一峰《Javascript定义类(class)的三种方法》. http://www.ruanyifeng.com/blog/2012/07/three_ways_to_define_a_javascript_class.html
Javascript自动化文档工具JSDuck在Windows下的使用心得的更多相关文章
- JavaScript(3)——文档工具
文档工具 LEARN HTML = 教程 HTML REFERENCE = 字典 HTML + CSS + JAVASCRIPT = DYNAMIC HTML 推荐浏览器: Chrome浏览器(有丰 ...
- 转 创建 JavaScript XML 文档注释
http://www.cnblogs.com/chenxizhang/archive/2009/07/12/1522058.html 如何:创建 JavaScript XML 文档注释 Visual ...
- JavaScript : DOM文档解析详解
JavaScript DOM 文档解析 1.节点(node):来源于网络理论,代表网络中的一个连接点.网络是由节点构成的集合 <p title=“a gentle reminder”> ...
- 生成chm文档工具- Sandcastle -摘自网络
Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm ...
- API文档工具-Swagger的集成
最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...
- JavaScript的文档对象模型DOM
小伙伴们之前我们讲过很多JavaScript的很多知识点,可以点击回顾一下: <JavaScript大厦之JS运算符>: <JavaScript工作原理:内存管理 + 如何处理4个常 ...
- golang学习笔记7 使用beego swagger 实现API自动化文档
golang学习笔记7 使用beego swagger 实现API自动化文档 API 自动化文档 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/doc ...
- javaScript获取文档中所有元素节点的个数
HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2
1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...
随机推荐
- JavaScript基本知识点整理(超实用)
絮叨絮叨 今天给大家分享一下这两天自己整理的JavaScript部分的笔记,下面都是我觉得比较常用的,希望能帮助到大家! 1. 导入JS的三种方式 ①在HTML ...
- tornado的非异步阻塞模式
[优化tornado阻塞任务的三个选择] 1.优化阻塞的任务,使其执行时间更快.经常由于是一个DB的慢查询,或者复杂的上层模板导致的,这个时候首要的是加速这些任务,而不是优化复杂的webserver. ...
- (三):C++分布式实时应用框架——系统管理模块
C++分布式实时应用框架--系统管理模块 上篇:(二): 基于ZeroMQ的实时通讯平台 一个分布式实时系统集群动辄上百台机器,集群的规模已经限定这将是一个"封闭"的系统.你不可能 ...
- SpringMVC 快速入门
SpringMVC 快速入门 SpringMVC 简介 SpringMVC是 Spring为展示层提供的基于Web MVC设计模式的请求驱动类型的轻量级Web框架,它的功能和Struts2一样.但比S ...
- lazy ideas in programming(编程中的惰性思想)
lazy形容词,懒惰的,毫无疑问是一个贬义词.但是,对于计算机领域,lazy却是非常重要的优化思想:把任务推迟到必须的时刻,好处是避免重复计算,甚至不计算.本文的目的是抛砖引玉,总结一些编程中的laz ...
- (四):C++分布式框架——状态中心模块
(四):C++分布式框架--状态中心模块 上篇:(三):C++分布式实时应用框架--系统管理模块 技术交流合作QQ群:436466587 欢迎讨论交流 版权声明:本文版权及所用技术归属smartguy ...
- 对NumPy中dot()函数的理解
今天学习到numpy基本的运算方法,遇到了一个让我比较难理解的问题.就是dot函数是如何对矩阵进行运算的. 一.dot()的使用 参考文档:https://docs.scipy.org/doc/num ...
- caioj 1237: 【最近公共祖先】树上任意两点的距离 在线倍增ST
caioj 1237: [最近公共祖先]树上任意两点的距离 倍增ST 题目链接:http://caioj.cn/problem.php?id=1237 思路: 针对询问次数多的时候,采取倍增求取LCA ...
- mysql的explain
explain 一般用于分析sql. 如下 [SQL] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 2 ...
- PHP生成xml 无法识别或是无法读取或是浏览器不识别等问题
PHP 数组转XML函数如下 [PHP] 纯文本查看 复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 ...