【转】Jsduck一个纯净的前端文档生成神器
让前端程序更具可维护性,是一个老生常谈的问题,大多数时候我们都关注于应用层面的代码可维护性,如:OO、模块化、MVC,编码规范、可扩展和复用性,但这都是属于设计层面需要考虑的事情,可维护性还应包含另一个方面,也是很多coder容易忽略的地方,就是将自己写的程序以文档的形式沉淀起来,对自己工作有一个结构化的组织,也可以帮助到他人。
试想一下如下情况:
1、团队中加入了新的同学,这时他可能需要快速的将目前项目中现有程序有一个系统的了解,如:某个公共工具模块的用途,某个通用组件的接口,程序之间的依赖性,这时他只有去看源码和注释了。
2、团队中有同学离开,但他写的程序在此之前已经深入到项目的各个层面,最了解和能快速修改维护这些程序的人可能只有他,之后在迭代时遇上其环节,其他接手的同学只能望眼欲穿了。
3、自己写了一个不错的可复用组件,打算推广到团队中,这时他人需要使用自己的组件时不得不去看源码和注释了。
这时候如果每个人都对自己程序有一个文档化的阐释,便可对上述问题做出很大的缓解,通常程序的文档化需求只存在于大型项目或是拥有成熟体系的框架之中,对于前端们来讲其实大多数时候都想用文档来展示和沉淀自己的知识成果的,可一直缺乏一套行之有效快速一致性的解决方案,导致在大家谈到程序文档化的时候都因为时间关系,繁琐程度就望而却步了。
长期以来前端开发们都缺乏一个像样的文档化工具,虽然在这之前出现过 YUI DOC、JSDoc ,但这些工具始终难于将开发者从复杂的配置中解脱出来,从而使开发者很快便将它们遗忘。
如果有对sencha的 ExtJs 和 Sencha Touch 开发框架有过了解的同学想必都对为其定制的API文档印象深刻,富应用形态的展现方式和树节点的命名空间管理, 避免了 YUI DOC 和 jQeury API 那样沉长页面带来的繁琐,而文档中附加的学习的范例也能帮助初学者尽快上手,生成这样强大的 API 文档使用的是jsduck,它不仅在使用和配置上非常简单,文档的 UI 和交互方式也是目前对于开发者来说是最友好的。
1. Jsduck 简介
jsduck 是 senchalabs 众多开源项目中的一个,它是使用 ruby 编写的 javascript API 文档生成器。
Jsduck强力功能点如下:
- 树形类命名空间组织
- 类子父关系的层次体系展示
- 成员与事件和配置项快速索引
- 可穿插着色代码范例演示和编辑范例代码
- 类成员源码实现部分快速导航
- 很简单一条命令可以将目录下的js生成帮助手册,推荐通过批处理文件操作
2. 安装jsduck
首先在Github(点击进入)上下载最新版的二进制版本(含多个平台版本),下载之后只有一个exe文件,此文件中已捆绑好了ruby解释器,不需要另外独立安装,将下载后的文件更名为jsduck.exe,在windows的环境变量的PATH变量中添加上此文件的路径,这样在命令行下输入jsduck便可可以直接调用到jsduck.exe。
注释规范需以“/**” 开头和“*/”结束,在 eclipse 或者 Aptana 这类支持 javaDoc 或 jsDoc 的 IDE 中键入 “/**” 按下回车键即可生成一个符合文档生标准的注释块,如果使用 SpketIDE,注释块生成的时候还能帮助开发者自动完成函数参数的命名。
以下是一些常用标签的注解:
- @author:作者
- @class:类
- @deprecated:标记此方法属性或者类不赞成使用,在升级过渡的时候需兼容之前的API时特别有用。
- @example:给类或者方法添加一个代码范例,jsduck不仅会给代码着色,还能给代码生成一个代码编辑器,编辑代码后可实时预览,使用@example需要四个空格的缩进。
- @extends:标记一个类继承自另一个类,生成后会有一个类型继承体系陈列在文档视图的右侧。
- @cfg:构造器的配置项,并在其后跟随“{className}”,再跟随参数名。
- 范例:@cfg {String} fieldName配置项的描述。
- @return:与@cfg类似,标记一个函数成员调用过后的返回类型。
- 范例:@return {Number} 文字描述
- @param:与@cfg类似,给一个函数成员标记其所需的参数类型和描述,如果参数类型为多种可以用“/”分割,如需要给参数进行更详细描述还能使用“[param.member]”描述符。
- 范例:@param {Number/String} fieldName
- 范例:@param {String[]} fieldName
- 范例: /**
* @cfg {Object} opt
* @cfg {Number} [opt.age]
* @cfg {Number} [opt.name=0]
*/ - @event:标记一个事件,随后通常会跟随@param标签给事件回调函数声明参数的说明。
- @inheritdoc:在其后跟随Class#member,常用在子类覆盖父类成员后,子类注释块还需继续使用父类注释的情况下使用。
- @private:将成员标记成私有,虽然也有@public但如果不特殊标明即为公有。
- @protected:将成员标记成受保护的。
- @static:将成员标记成静态的,静态成员也会在文档中进行分类展示。
- @img:在文档注释中链接一张图片,让文档变得更具可读性。
- @link:在文档注释中标记某个类或类成员的锚点。
文档化你的项目不仅可以让催悲的前端们将自己写的注释变更具有价值,也可以为项目后期维护带来巨大便捷,在协同作战环境下起着至关重要的作用。
【转】Jsduck一个纯净的前端文档生成神器的更多相关文章
- 求你别再用swagger了,给你推荐几个在线文档生成神器
前言 最近公司打算做一个openapi开放平台,让我找一款好用的在线文档生成工具,具体要求如下: 必须是开源的 能够实时生成在线文档 支持全文搜索 支持在线调试功能 界面优美 说实话,这个需求看起来简 ...
- 再见丑陋的 SwaggerUI,这款开源的API文档生成神器界面更炫酷,逼格更高!
一般在使用 Spring Boot 开发前后端分离项目的时候,都会用到 Swagger.Swagger 是一个规范和完整的框架,用于生成.描述.调试和可视化 RESTful 风格的 Web API 服 ...
- 生成 Visual Studio 中的代码的文档生成神器
当我们在团队开发中的时候,经常要给别人提供文档,有了这个工具,设置一下,一键生成.前提是你要写好xml注释. 这也是开源项目: https://sandcastle.codeplex.com/ 它就是 ...
- vs开发nodejs api文档生成神器-apidoc
直接生成文档的神器 apidoc 1 win+R 输入 cmd 回车 然后进入 nodejs 项目目录 例如 D:\NodeTest\newApp1 2 用npm安装 apidoc 直接输入 npm ...
- MaltReport2:通用文档生成引擎
UPDATED: 本文仅适用 MaltReport 2.x ,3.x 版本文档还在撰写当中,目前请参考项目中的 Samples. MaltReport 是我几年前写的开源单据.报表引擎,最近进行了较大 ...
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- [.NET] 打造一个很简单的文档转换器 - 使用组件 Spire.Office
打造一个很简单的文档转换器 - 使用组件 Spire.Office [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6024827.html 序 之前,& ...
- (亲测解决)每次打开excel文件都会出现两个窗口,一个是空白的sheet1,另一个是自己的文档
版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/sinat_34104446/article/details/80210424 一.问题描述每次打开Exce ...
- 安装doxygen(一个自动文档生成工具)+Graphviz图形可视化软件
参考文章: http://www.fmddlmyy.cn/text21.html http://www.cnblogs.com/duguguiyu/archive/2008/06/29/1231852 ...
随机推荐
- MySQL学习笔记二:权限管理
1. 创建和删除用户,mysql中的用户是由用户名和主机名来确定的 create user "user_name@host_name" identified by passwd; ...
- 支持向量机原理(四)SMO算法原理
支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...
- iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值
在上篇博客<iOS开发之使用Runtime给Model类赋值>中介绍了如何使用运行时在实体类的基类中添加给实体类的属性赋值的方法,这个方法的前提是字典的Key必须和实体类的Property ...
- Angularjs promise对象解析
1.先来看一段Demo,看完这个demo你可以思考下如果使用$.ajax如何处理同样的逻辑,使用ng的promise有何优势? var ngApp=angular.module('ngApp',[]) ...
- SQL Server SQL性能优化之--数据库在“简单”参数化模式下,自动参数化SQL带来的问题
数据库参数化的模式 数据库的参数化有两种方式,简单(simple)和强制(forced),默认的参数化默认是“简单”,简单模式下,如果每次发过来的SQL,除非完全一样,否则就重编译它(特殊情况会自动参 ...
- android获得ImageView图片的等级
android获得ImageView图片的等级问题 要实现的功能如下图,点击分享能显示选中与不选中状态,然后发送是根据状态来实现具体分享功能. 在gridview中有5个子项,每个子元素都有两张图片A ...
- OpenCV2学习笔记(一)
Mat - 图像的容器 在对图像进行处理时,首先需要将图像载入到内存中,而Mat就是图像在内存中的容器,管理着图像在内存中的数据.Mat是C++ 的一个类,由于OpenCV2中引入了内存自动管理机制, ...
- ios 控件代码transform学习笔记
1.图片设置(平移,缩放,旋转) 创建一个transform属性 //按钮点击时,只能执行一次向上旋转 //派 M_PI_4 45度旋转 . CGAffineTransform transforms= ...
- CSS3学习总结
(写在前边~)过了这么长时间,才写博客,最近实在是太忙了,做了两个项目,一个项目用于练手,自我感觉做的很漂亮,一个项目是一套完整的页面体系,答辩时候老师给了100分和99分,并让我打包上传,我很是感动 ...
- 在DirectShow中支持DXVA 2.0(Supporting DXVA 2.0 in DirectShow)
这几天在做dxva2硬件加速,找不到什么资料,翻译了一下微软的两篇相关文档.并准备记录一下用ffmpeg实现dxva2,将在第三篇写到.这是第二篇.,英文原址:https://msdn.microso ...