作者: 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”)。

其次,遇到了环境变量与相对路径问题——

  1. 因“jsduck-5.3.4.exe”是单独下载的exe,没注册环境变量。所以我们在命令提示符中使用时,只有进入到此exe的所在目录中才能使用,否则会报错找不到exe。
  2. “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

参考文献

Javascript自动化文档工具JSDuck在Windows下的使用心得的更多相关文章

  1. JavaScript(3)——文档工具

    文档工具 LEARN HTML = 教程 HTML REFERENCE = 字典 HTML + CSS + JAVASCRIPT = DYNAMIC  HTML 推荐浏览器: Chrome浏览器(有丰 ...

  2. 转 创建 JavaScript XML 文档注释

    http://www.cnblogs.com/chenxizhang/archive/2009/07/12/1522058.html 如何:创建 JavaScript XML 文档注释 Visual ...

  3. JavaScript : DOM文档解析详解

    JavaScript DOM  文档解析 1.节点(node):来源于网络理论,代表网络中的一个连接点.网络是由节点构成的集合 <p title=“a gentle reminder”> ...

  4. 生成chm文档工具- Sandcastle -摘自网络

    Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm ...

  5. API文档工具-Swagger的集成

    最近安装了API文档工具swagger,因为Github上已有详细安装教程,且安装过程中没有碰到大的阻碍,所以此文仅对这次安装做一份大致记录 相关网站 Swagger 官方地址: http://swa ...

  6. JavaScript的文档对象模型DOM

    小伙伴们之前我们讲过很多JavaScript的很多知识点,可以点击回顾一下: <JavaScript大厦之JS运算符>: <JavaScript工作原理:内存管理 + 如何处理4个常 ...

  7. golang学习笔记7 使用beego swagger 实现API自动化文档

    golang学习笔记7 使用beego swagger 实现API自动化文档 API 自动化文档 - beego: 简约 & 强大并存的 Go 应用框架https://beego.me/doc ...

  8. javaScript获取文档中所有元素节点的个数

    HTML+JS 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  9. Spring Boot (十五): 优雅的使用 API 文档工具 Swagger2

    1. 引言 各位在开发的过程中肯定遇到过被接口文档折磨的经历,由于 RESTful 接口的轻量化以及低耦合性,我们在修改接口后文档更新不及时,导致接口的调用方(无论是前端还是后端)经常抱怨接口与文档不 ...

随机推荐

  1. 我眼中的WebViewJavascriptBridge

    周六阳光明媚的早晨,非常适合整理和分享一些以前玩过的东西.曾经的工作中参与过一段时间iOS开发,在开发中有个小小的框架让我非常深刻,就是WebViewJavascriptBridge,用于原生控件与前 ...

  2. jquery实现抽奖小游戏

    在很多网站或游戏活动中我们都会看到有关抽奖的活动或界面: 下面我将给大家介绍下如何通过javascript来实现这样的一个抽奖功能,主要从下面三个步骤入手(文中着重介绍第三部分有关功能的实现): 1. ...

  3. 【分享】jQuery无插件实现 鼠标拖动图片切换 功能

    前言 我就想随便叨逼叨几句,爱看就看几句,不爱看就直接跳过看正文就好啦~ 这个方法是仿写页面时我自己研究出来,可能有比我更简单的方法. 但我不管,因为我没查我不知道,我就觉得我的最好啦,耶耶耶~ 效果 ...

  4. Linux系列教程(二十三)——Linux的服务管理

    前面我们讲解Linux软件包管理之源码包.脚本安装包时,我们介绍了rpm包和源码包由于安装位置的不同,会对服务的启动造成影响,具体是什么,本篇博客我们来详细介绍. 1.Linux服务管理总览 我们可以 ...

  5. Spring4 AOP详解

    Spring4 AOP详解 第一章Spring 快速入门并没有对Spring4 的 AOP 做太多的描述,是因为AOP切面编程概念不好理解.所以这章主要从三个方面详解AOP:AOP简介(了解),基于注 ...

  6. "MySql.Data.MySqIClient.MySqlProviderSevices”违反了继承安全 性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安 全可访问性低。 "解决方法

    写Code First 时(使用的是MySql数据库),添加好EntityFrame.MySql.Data .MySql.Data.Entity后 ,写好TestDbContext类. 运行时报出一个 ...

  7. app打包常用操作

    1.修改appId android:打开build.gradle文件 找到defaultConfig{applicationId 'ceshi'} 修改测试.android studio会提示. Gr ...

  8. Spring Boot 的Maven多模块开发web项目使用外部容器进行部署

    Spring Boot中自带有Tomcat容器,因此Spring Boot项目只需要运行main函数,就可以运行,但是以往的web项目,我们习惯于使用自己安装的Tomcat运行或者使用Tomcat.J ...

  9. Spark SQL中的几种join

    1.小表对大表(broadcast join) 将小表的数据分发到每个节点上,供大表使用.executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQ ...

  10. 2746:约瑟夫问题poj

    2746:约瑟夫问题 总时间限制:  1000ms 内存限制:  65536kB 描述 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退 ...