缘起

一个合格的可维护项目,必须要有足够的文档,因此一个项目开发到一定阶段后需要适当的编写文档。项目的类型多种多样,有许多项目属于内部项目,例如一个内部的开发引擎,或者一个本身就是面向开发者的项目。

本文考虑的是这种面向开发者的项目文档编写。通过本文,你将快速获得如下技能:

  • 理解开发项目文档的基本要素
  • 掌握编写有头有尾结构化文档的能力
  • 获得1个开发项目文档编写的模版项目和现成工具

感受

在开始之前,我们先通过几个现成的例子,直观的感受一个面向开发者的项目,其专业的文档应该是什么样的。我们通过直接截图的方式直接了当的表达这点。

Rust编程语言文档

文档地址:doc.rust-lang.org-2018

截图:

Julia编程语言文档

文档地址:docs.julialang.org-en-v1

截图:

BuckyCloud开发文档

文档地址:docs.buckycloud.com-zh-cn

截图:

小结一下,开发项目文档一般都具有如下章节:

  • 介绍(Introduction)
  • 快速开始(QuickStart, Helloworld, Getting Started...)
  • 整体介绍(Common/Core/Basic Concept, Architecture, Understanding...)
  • 开发手册(References)
  • 示例(Examples)
  • 知识库文章(Articles)

根据项目特点,不同类型的项目会做对应的取舍和顺序调整。

工具

工欲善其事,必先利其器。作为极简系列,我们直接了当的介绍我们的工具:

通过Gitbook可以在线编写文档,按照上一节的套路即可编写出相对专业的文档。但是Gitbook同时提供了一个命令行工具,使得我们可以直接在本地编写MarkDown文档,然后使用命令行工具把MarkDown转成文档网页。

Gitbook命令行工具如下,该工具基于nodejs编写,因此你需要安装nodejs:

因此你只需:

  • 创建一个git仓库
  • 创建完整的文档目录结构,并使用MarkDown编写章节内容
  • 编写脚本调用gitbook-cli转换文档目录为网页
  • 部署网页到线上即可,例如docs.example.com

快速体验

现在,我们可以通过几个命令来快速体验一下。

  • 首先,请安装nodejs:http://nodejs.org/
  • 其次,请克隆示例项目:git clone https://github.com/fanfeilong/doc.git
  • 接着,执行npm install来安装依赖的node modules。
  • 接着,在doc目录下执行命令生成文档:node doc.js docs.starlab docs.starlab.io
    • 注意docs.js的第一个参数是文档源目录,第二个参数是我们希望生成的网站目录

      • docs.js会自动安装依赖的gitbook-cli,首次安装会慢一些。
  • 可以看到浏览器已经打开了生成的文档:

如果你直接在Chrome浏览器里打开生成的静态HTML里的index.html会出现跨域请求问题,本地起网页调试的方式如下:

  1. cd docs.starlab
  2. gitbook serve
  3. 浏览器访问:http://localhost:4000

文档目录设计

gitbook要求根目录下必须有如下三个MarkDown文档:

  • index.md
  • README.md
  • SUMMARY.md

示例中,我们虚拟了一个开发项目的文档目录docs.starlab,设计目录结构如下:

.
├── 1.QuickStart
│ ├── 1.1.InstallStarlabSDK.md
│ ├── 1.2.Hello,Starlab.md
│ ├── 1.3.UnderstandingStarlabApp.md
│ ├── 1.4.HowToDebugStarlab.md
│ └── 1.5.UnderstandingDebugger.md
├── 2.LearnStarlabSDK
│ ├── 2.1.IntrudoctionToStarlab.md
│ └── 2.2.CoreConcept.md
├── 3.Examples
│ ├── 3.1.CreateEarth.md
│ ├── 3.2.CreateMars.md
│ └── 3.3.CreateMoon.md
├── 4.References
│ ├── ref_fixedstar.md
│ ├── ref_meteor.md
│ ├── ref_planet.md
│ ├── tool_fixedstar.md
│ ├── tool_meteor.md
│ └── tool_planet.md
├── README.md
├── SUMMARY.md
└── index.md
  • 其中,index.md用来生成Introduction一节
  • 其中,README.md是gitbook需要的,一般我们让README.md和index.md的内容一样即可。
  • 其中,SUMMARY.md通过MarkDown来组织网页左侧的目录结构。

可以看一下SUMMARY.md的内容:

# Document

* [1. QuickStart](1.QuickStart/1.1.InstallStarlabSDK.md)
* [1.1. Install StarlabSDK](1.QuickStart/1.1.InstallStarlabSDK.md)
* [1.2. Hello, Starlab](1.QuickStart/1.2.Hello,Starlab.md)
* [1.3. Understanding Starlab App](1.QuickStart/1.3.UnderstandingStarlabApp.md)
* [1.4. How to Debug Starlab](1.QuickStart/1.4.HowToDebugStarlab.md)
* [1.5. Understanding Debugger](1.QuickStart/1.5.UnderstandingDebugger.md)
* [2. Learn Starlab SDK](2.LearnStarlabSDK/2.1.IntrudoctionToStarlab.md)
* [2.1. Introduction to Starlab](2.LearnStarlabSDK/2.1.IntrudoctionToStarlab.md)
* [2.2. Core Concept](2.LearnStarlabSDK/2.2.CoreConcept.md)
* [3. Examples](3.Examples/3.1.CreateEarth.md)
* [3.1. Create Earth](3.Examples/3.1.CreateEarth.md)
* [3.2. Create Mars](3.Examples/3.2.CreateMars.md)
* [3.3. Create Moon](3.Examples/3.3.CreateMoon.md)
* [4. References](4.References/ref_fixedstar.md)
* [fixedstar](4.References/ref_fixedstar.md)
* [meteor](4.References/ref_meteor.md)
* [planet](4.References/ref_planet.md)
* [fixedstar tool](4.References/tool_fixedstar.md)
* [meteor tool](4.References/tool_meteor.md)
* [planet tool](4.References/tool_planet.md)

注意:目录名和文档名不能含有空格,但是在SUMMARY.md里组织的时候,[text](relativepath)格式里的text可以起更友好的名字。

部署

如果需要部署,只需要把生成的网站部署到自己的网站服务器上即可。

你的尝试

相信,通过本文的方式,你可以为自己的项目快速构建内部或外部文档,如果你想了解doc.js做了什么,你可以直接阅读这个简短的工具脚本,按需定制。我用这个方式已经为好多个项目写了专业的文档,希望你也可以!GoodLuck!

--end--

工具(5): 极简开发文档编写(How-to)的更多相关文章

  1. So注入工具TsoInject开发文档

    So注入工具TsoInject开发文档 导语: 作为一个软件安全从业者而言,我们需要对某个App的关键函数就行Hook, 对于android而言,Smali层我们使用Xposed Hook框架,So层 ...

  2. .NET6使用DOCFX自动生成开发文档

    本文内容来自我写的开源电子书<WoW C#>,现在正在编写中,可以去WOW-Csharp/学习路径总结.md at master · sogeisetsu/WOW-Csharp (gith ...

  3. [翻译]开发文档:android Bitmap的高效使用

    内容概述 本文内容来自开发文档"Traning > Displaying Bitmaps Efficiently",包括大尺寸Bitmap的高效加载,图片的异步加载和数据缓存 ...

  4. ECMall模板开发文档

    ECMall 模板开发文档 前 言 欢迎阅读 ECMall 模板制作教程,通过阅读本教程可快速上手 ECMall 模板的使用和制作. ECMall 模板制 作要求用户具备 XML . XHTML 和 ...

  5. [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档

    [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档     Doxygen本来是一个很好的工具,可是我感觉在mac系统下,如果用doxygen最后生成的CHM文件感觉就不是那么恰当, ...

  6. 项目管理之 使用 appledoc 生成开发文档

    写项目时通常会遇到要求写开发文档的需求,但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手.Objective-C 有一些文档管理工具,doxygen, headdoc 和 apple ...

  7. 若快打码平台python开发文档修改版

    一.打码的作用 在进行爬虫过程中,部分网站的登录验证码是比较简单的,例如四个英文数字随机组合而成的验证码,有的是全数字随机组成的验证码,有的是全中文随机组成的验证码.为了爬虫进行自动化,需要解决自动登 ...

  8. 【原创】Odoo开发文档学习之:构建接口扩展(Building Interface Extensions)(边Google翻译边学习)

    构建接口扩展(Building Interface Extensions) 本指南是关于为Odoo的web客户创建模块. 要创建有Odoo的网站,请参见建立网站;要添加业务功能或扩展Odoo的现有业务 ...

  9. 微信-小程序-开发文档-服务端-模板消息:templateMessage.send

    ylbtech-微信-小程序-开发文档-服务端-模板消息:templateMessage.send 1.返回顶部 1. templateMessage.send 本接口应在服务器端调用,详细说明参见服 ...

随机推荐

  1. Winows + VSCode + Debug PHP

    一.环境 环境:Win10 二.软件 1.安装VSCode 下载地址:https://code.visualstudio.com/Download 2.PHP 代码包 版本:php-7.2.9-Win ...

  2. C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码

    前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...

  3. 记一次工作失误,openresty报502错误

    调试落地项目,代理跳转接口报502错误. 一开始认为阿里云tomcat有误,后面发现别的地址代理跳转有效. 开始配置跳转地址,一直折腾半天不好使.后面才知道,应用服务器和数据库服务器是分开部署的.一直 ...

  4. knockoutjs data-bind 声明式绑定整理

    一.Visible绑定 1.功能 Visible绑定通过绑定一个值来确定DOM元素显示或隐藏 2.示例 <div data-bind="visible: shouldShowMessa ...

  5. [深度应用]·实战掌握PyTorch图片分类简明教程

    [深度应用]·实战掌握PyTorch图片分类简明教程 个人网站--> http://www.yansongsong.cn/ 项目GitHub地址--> https://github.com ...

  6. lib和dll文件的初了解

    lib,dll这两样东西在许多编程书中都很少出现,但实际工程中,这两样东西的作用确实非常重要,我觉得c++程序员都有必要了解这两样东西. 首先总共有 动态链接 和 静态链接 这两种链接方式 |静态链接 ...

  7. js 实现 复制 功能 (zeroclipboard)

    #复制功能因访问权限和安全问题, 被浏览器禁了# 我要实现的功能:点击复制按钮,复制浏览器的当前页面地址,加上用户选择的参数(用户查找过滤),直接将该链接发给别人,点击打开就是对应的查找结果而不是默认 ...

  8. Python编程从入门到实践笔记——if语句

    Python编程从入门到实践笔记——if语句 #coding=utf-8 cars=['bwm','audi','toyota','subaru','maserati'] bicycles = [&q ...

  9. 搞懂Redis到底快在哪里

    前言 Redis是一种基于键值对(Key-Value)的NoSQL数据库,Redis的Value可以由String,hash,list,set,zset,Bitmaps,HyperLogLog等多种数 ...

  10. WPR003N变成尸体的后记

    这是一个很悲哀的标题,尽管本来不想说还是打算写出来. 应小便的要求本文不加任何字体变化,不设置玄关来等大家破解,只是很自然的把悲剧和大家分享一下. 自上回2019 Valentine's Day 圣地 ...