你会用AngularJS,但你会写AngularJS文档么?

涉及知识:gulp javascript

我们经常在写代码的时候要求写好注释,方便日后维护。但其实注释还有一个重要的用途:生成API文档。

文档意义

API文档有什么用?
避免多人开发时出现重复造轮子(轮子都在文档上)。
方便新加入项目的开发人员了解公用函数/组件。
方便所有开发人员查阅公用函数/组件的入参和出参以及调用方式。
。。。

实际问题

前端API文档生成有著名的工具jsdoc
公司项目采用gulp构建工具和AngularJS的框架,所以很自然的选用gulp-jsdoc来生成文档,理想中生成的文档应该是像这样的:

而现实却是一片空白。。。冏~

研究后终于找到了生成基于AngularJS框架代码API文档的正确方式~

解决方案

挑选工具

专为AngularJS项目量身打造的插件ngdocs,这里我以gulp为例,选择的是gulp-ngdocs。整个任务流程
监听源码(可选) => 生成文档、刷新浏览器(可选) => 启动服务器(可选)
这里贴一下核心任务 生成文档 的部分代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
gulp.task('doc:generate', function (cb) {
//生成章节
return $.ngdocs.sections({
api: {
glob: ['src/**/*.js'], //源码目录
api: true,
title: 'API文档' //章节标题
}
})
.pipe($.ngdocs.process({
image: '',
title: '前端框架' //标题
}))
.pipe(gulp.dest('./docs')); //生成路径
});

具体源码请戳gulpfile.js

注释写法

ngdocs 其实是对 jsdoc 的扩展,关于写法部分详细说明可以查看AngularJS的官方文档——《Writing AngularJS Documentation》
重要的内容摘抄并翻译如下:

  • @ngdocs 规定注释文档的类型。常用类型:service、function、directive、filter。
  • @name 文档名称。不同类型的名称写法不一样。

    1
    2
    3
    4
    5
    以模块名为"module"为例
    指令:@name module.directive:指令名称
    服务:@name module.服务名
    服务属性:@name module.服务名#函数名
    过滤器:@name module.filter:过滤器名
  • @restrict 可填值”AEMC”,对应指令的restrict属性值。

  • @scope 如果有此声明,表明该指令有独立作用域。
  • @description API描述信息,支持markdown语法哦~
  • @requires 声明依赖信息,有多个依赖时:

    1
    2
    3
    @requires $q
    @requires $timeout
    ...
  • @param 声明参数信息。函数用得比较多,指令也可以使用~
    @param {类型} 名称 说明

  • @return 函数返回值,写法同@param
  • @methodOf 声明该函数所属的服务或对象。
    @methodOf 模块名.服务名
  • @example 示例代码可写于此。如果相关配置正确可以显示实时预览效果。

示例项目

ngdocs-demo

更多示例:
angular-translatehttps://github.com/angular-translate/angular-translate/tree/master/src
ui-routerhttps://github.com/angular-ui/ui-router/tree/master/src/ng1

总结

一个优秀的项目应该实现:代码注释即API文档,接口文档即mock服务器。
本文实现了第一个要求,而第二个要求的实现可以查看我之前的文章
接口调试(下)——让接口服务器为前后端解耦
以及开源项目api-documentapi-mock

转自博客: http://yalishizhude.github.io

你会用AngularJS,但你会写AngularJS文档么?的更多相关文章

  1. 看云&gitbook 写帮助文档 | 专注于文档在线创作、协作和托管

    看云 写帮助文档 | 专注于文档在线创作.协作和托管 https://www.kancloud.cn/manual/thinkphp/1678 https://www.gitbook.com/

  2. 「快学springboot」16.让swagger帮忙写接口文档

    swagger简介 官方的介绍 THE WORLD'S MOST POPULAR API TOOLING Swagger is the world's largest framework of API ...

  3. 使用docsify 写开源文档

    使用docsify 写开源文档 官网:https://docsify.js.org/#/ docsify 是一个动态生成文档网站的工具.不同于 GitBook.Hexo 的地方是它不会生成将 .md ...

  4. 《Spring Boot 实战纪实》之如何攥写需求文档

    目录 前言 (思维篇)人人都是产品经理 1.需求文档 1.1 需求管理 1.2 如何攥写需求文档 1.3 需求关键点文档 2 原型设计 2.1 缺失的逻辑 2.2 让想法跃然纸上 3 开发设计文档 3 ...

  5. 有了Swagger2,再也不用为写Api文档头疼了

    1.为什么要写Api文档 现在,前后端分离的开发模式已经非常流行,后端开发工程师只负责完成后端接口,前端页面的开发和渲染完全由前端工程师完成. 问题来了,前端工程师怎么知道后端接口的具体定义呢?答案是 ...

  6. C#写TXT文档

    //C#写TXT文档 String strDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAs ...

  7. 要写文档了,emmm,先写个文档工具吧——DocMarkdown

    前言 之前想用Markdown来写框架文档,找来找去发现还是Jekyll的多,但又感觉不是很合我的需求 于是打算自己简单弄一个展示Markdown文档的网站工具,要支持多版本.多语言.导航.页内导航等 ...

  8. Markdown写接口文档,自动添加TOC

    上回说到,用Impress.js代替PPT来做项目展示.这回换Markdown来做接口文档好了.(不敢说代替Word,只能说个人感觉更为方便)当然,还要辅之以Git,来方便版本管理. Markdown ...

  9. Perl:写POD文档

    官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出.在开始下面的文章之前,请先粗略 ...

  10. 如何写Java文档注释(Java Doc Comments)

    本文翻译自How to Write Doc Comments for the Javadoc Tool,但是精简了一些私以为不重要的东西 本文不讨论如何使用javadoc工具自动生成文档的方法,而是主 ...

随机推荐

  1. PHPCMS详细文件目录结构

    PHPCMS详细文件目录结构 根目录 |  –  api  接口文件目录 |  –  caches 缓存文件目录 |  – configs 系统配置文件目录 |  – caches_* 系统缓存目录 ...

  2. uploadify上传之前判断一个input输入框是否为空

    onUploadStart:function(file){ if ($("#ContractCode").val() == "") { alert(" ...

  3. 在js里双引号里又加单引号的解决方案常用WdatePicker

    EndTime: '<input name="EndTime" type="text" class="editable center decim ...

  4. google打不开解决的方法

    14.5.27以来.谷歌又打不开了. 从网上找了些国内的googleserverIP,例如以下: const char* g_google_ips[18] = { "203.208.48.1 ...

  5. 读源码 | metisMenu侧边栏插件

    ————————————————————————————————————————————————————————— 使用方法 实现效果 引入文件 <link rel="styleshe ...

  6. java 新创建的类要重写的方法

    重写toString方法,可以控制println打印的结构. 如果需要往hashSet或者HashMap中存,需要重写hashCode和equals方法,因为hashSet执行添加,以对象为参数删除, ...

  7. pip简单配置

    pip安装Python模块的工具,等价于Redhat中的yum! 01.下载 百度云盘:http://pan.baidu.com/s/1eRHGBfk             ###相关的 Linux ...

  8. HDUOJ---------Kia's Calculation

    Kia's Calculation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. 【LeetCode】88. Merge Sorted Array (2 solutions)

    Merge Sorted Array Given two sorted integer arrays A and B, merge B into A as one sorted array. Note ...

  10. ubuntu 中数据的迁移

    1.先停止mysql /etc/init.d/mysql stop