搭建本地 golang 文档服务器

平时我们看 golang 文档的方式通常有:

  1. go doc <package>
  2. golang.org/pkg 或者国内的 godoc.golangtc.com/pkg/
  3. 看源码,当然这是最好的方式,只是需要更多的时间和耐心。

如果没有网络,我一般会选择 方式1 + 方式3,但缺点是可读性差。

后来了解到,godoc -html <package> 可以生成 HTML 文档,所以就思考如何搭建本地的 localhost:3000/pkg

先取个名字,godocserver

步骤如下:

  1. 获取所有 golang built-in packages 名称
  2. 遍历所有 packages 运行 godoc -html <package>
  3. 保存所有文件,启动一个静态文件服务器

利用 Ruby 实现 步骤1、2,要注意遍历 $GOPATH/src/ 时要过滤一些不需要的目录,创建文件时,要先创建对应的目录。

启动静态服务器用 golang 和 ruby 都可以,我用的是 negroni,就三行代码。

问题是,这样的页面完全没有样式啊,所以我不得不去 golang.org/pkg 上 copy css 和 js 文件。

然后将 Index 的样式修改成这样:

最后实现 package 导航:

这个功能我们需要知道所有已存文档的名称,所以我们需要维护一个文件 all_documents.json 供前端使用,然后我们需要做一个带有过滤功能的列表。这里用 Vue.js 作双向数据绑定(好用,好用,好用)。

至此,我们就可以愉快的在本地看 golang 文档啦。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏smy

jquery及原生javascript对jsonp解决跨域问题实例详解

jquery方式 ---- 前端: $.ajax({ url: 'http://m.xxx.tv/goLottery', ...

42870
来自专栏谈补锅

ios8版本地图定位注意点

  然后我运行时,发现地图定位功能竟然不起作用,一查,发现我的是ios8版本, 针对ios8版本,必须在配置文件info.plist进行一项配置,就是增加NSL...

15840
来自专栏Golang语言社区

Go语言如何并发超时处理详解

大家都知道golang并没有在语言层次上提供超时操作,但可以通过一些小技巧实现超时。下面来一起看看吧,有需要的朋友们可以参考借鉴。 实现原理: 并发一个函数,等...

37860
来自专栏cnblogs

vue组件如何被其他项目引用

自己写的vue组件怎么才能让其他人引用呢,或者是共用组件如何让其他项目引用。本文就粗细的介绍下,如有疑问欢迎共同讨论。在这里你能了解下如下知识点: 1. 如何发...

28450
来自专栏一“技”之长

使用Express快速搭建前端项目框架 原

    Express是基于Node.js的前端Web开发框架,使用其可以简洁快速的创建健壮友好的API服务。在前端或移动端的开发过程中,可以借助Express...

12810
来自专栏大闲人柴毛毛

linux软件安装(一)——源码安装

Linux软件简介 Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。 而一个软件要在Linux上执行,必须是二进制文件,因此...

37640
来自专栏逸鹏说道

Ubuntu16.04下的NetCore环境搭建

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux VSCode安装:http://www...

29250
来自专栏守望轩

Visual Studio 2008 每日提示(十七)

#161、在解决方案里显示(或不显示)编辑器中打开的文件 原文链接:How to have the Solution Explorer always show...

36080
来自专栏Youngxj

利用宝塔简易反向代理教程 适用于谷歌、ss站点

92870
来自专栏React Native开发圈

React Native 报错 Application XXXX has not been registered”

今天新下载了一个React Native项目,在init之后,直接执行run-ios,然后就报错*Application XXXX has not been r...

10710

扫码关注云+社区

领取腾讯云代金券