Skip to content
yingjinengPublic

About

API 文档浏览器

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

6,163 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DevDocs — API 文档浏览器

DevDocs 将多种开发者文档整合到一个简洁有序的 Web 界面中,支持即时搜索、离线使用、移动端适配、深色主题、键盘快捷键等功能。

DevDocs 由 Thibaut Courouble 创建,目前由 freeCodeCamp 运营。

我们正在寻找维护者

如果你有兴趣加入团队,请在 Discord 社区联系我们!

关注开发动态:

目录: 快速开始 · 愿景 · 应用 · 爬虫 · 可用命令 · 贡献 · 文档 · 相关项目 · 版权--许可证 · 常见问题

快速开始

除非你希望为项目做贡献,否则推荐直接使用托管版 devdocs.io。它始终保持最新,并且开箱即用支持离线。

使用 Docker(推荐)

本地运行 DevDocs 最简单的方法是使用 Docker:

docker run --name devdocs -d -p 9292:9292 ghcr.io/freecodecamp/devdocs:latest

这将在 localhost:9292 启动 DevDocs。我们提供常规版和基于 Alpine 的镜像:

  • ghcr.io/freecodecamp/devdocs:latest - 标准镜像
  • ghcr.io/freecodecamp/devdocs:latest-alpine - 基于 Alpine(体积更小)

镜像会自动构建并每月更新,包含最新文档。

你也可以自行构建镜像:

git clone https://github.com/freeCodeCamp/devdocs.git && cd devdocs
docker build -t devdocs .
docker run --name devdocs -d -p 9292:9292 devdocs

手动安装

DevDocs 由两部分组成:一个 Ruby 爬虫用于生成文档和元数据,以及一个由小型 Sinatra 应用驱动的 JavaScript 应用。

DevDocs 需要 Ruby 3.4.1(见 Gemfile)、libcurl 和一个 ExecJS 支持的 JavaScript 运行时(OS X 和 Windows 已内置,Linux 推荐 Node.js)。安装好这些依赖后,运行以下命令:

git clone https://github.com/freeCodeCamp/devdocs.git && cd devdocs
gem install bundler
bundle install
bundle exec thor docs:download --default
bundle exec rackup

最后,在浏览器中访问 localhost:9292(首次请求会花几秒编译资源)。一切就绪!

thor docs:download 命令用于从 DevDocs 服务器下载预生成文档(如 thor docs:download html css)。可通过 thor docs:list 查看可用文档及版本。要更新所有已下载文档,运行 thor docs:download --installed。如需下载并安装所有可用文档,运行 thor docs:download --all。

注意: 目前没有自动更新机制,需通过 git pull origin main 更新代码,通过 thor docs:download --installed 下载最新文档。请 关注 仓库以获取新版本信息。

愿景

DevDocs 致力于让查阅和搜索参考文档变得快速、简单、愉悦。

应用的主要目标:

  • 尽量缩短加载时间
  • 提升搜索结果的质量、速度和排序
  • 最大化缓存和其他性能优化的利用
  • 保持界面简洁易读
  • 完全支持离线功能
  • 支持全键盘导航
  • 通过统一的排版和设计减少“上下文切换”
  • 通过聚焦 API/参考类内容并仅索引对大多数开发者有用的最小内容,减少杂乱

注意: DevDocs 不是编程指南或搜索引擎。所有内容均来自第三方,项目无意与全文搜索引擎竞争。其核心是元数据,每条内容都有唯一、简明的标识符。不符合此要求的教程、指南等内容不在项目范围内。

应用

Web 应用完全由客户端 JavaScript 实现,后端为小型 Sinatra/Sprockets 应用。依赖 爬虫 生成的文件。

许多设计决策源于应用通过 XHR 直接加载内容到主框架,包括去除原始文档的大部分 HTML 标记(如脚本和样式表),并为所有 CSS 类名前缀下划线以避免冲突。

另一个关键因素是性能及一切都在浏览器端完成。通过 service worker(有自身限制)和 localStorage 加速启动,同时允许用户自选文档以控制内存消耗。搜索算法保持简单,以便即使在 10 万条字符串中也能快速搜索。

作为开发者工具,浏览器要求较高:

  • 最新版 Firefox、Chrome 或 Opera
  • Safari 11.1+
  • Edge 17+
  • iOS 11.3+

这让代码能充分利用最新 DOM 和 HTML5 API,也让开发更有趣!

爬虫

爬虫负责生成 应用 使用的文档和索引文件(元数据),用 Ruby 编写,位于 Docs 模块下。

目前有两类爬虫:UrlScraper(通过 HTTP 下载文件)和 FileScraper(从本地文件系统读取)。它们都会复制 HTML 文档,递归跟踪符合规则的链接并进行各种修改,同时构建文件及其元数据的索引。文档解析使用 Nokogiri。

每个文档的修改包括:

  • 移除内容,如文档结构(<html>、<head> 等)、注释、空节点等
  • 修复链接(如去重)
  • 替换所有外部(未爬取)URL 为完整路径
  • 替换所有内部(已爬取)URL 为相对路径
  • 添加内容,如标题和原文链接
  • 确保使用 Prism 正确语法高亮

这些修改通过 HTML::Pipeline 库的一组过滤器实现。每个爬虫包含自身特有的过滤器,其中之一负责提取页面元数据。

最终生成一组标准化的 HTML 片段和两个 JSON 文件(索引 + 离线数据)。因索引文件会根据用户偏好由 应用 单独加载,爬虫还会创建一个 JSON 清单文件,包含当前系统可用文档的信息(如名称、版本、更新时间等)。

更多关于 爬虫 和 过滤器 的信息见 docs 文件夹。

可用命令

命令行界面使用 Thor。查看所有命令和选项,请在项目根目录运行 thor list。

# 服务器
rackup              # 启动服务器(ctrl+c 停止)
rackup --help       # 列出服务器选项

# 文档
thor docs:list      # 列出可用文档
thor docs:download  # 下载一个或多个文档
thor docs:manifest  # 创建应用使用的清单文件
thor docs:generate  # 生成/爬取文档
thor docs:page      # 生成/爬取文档页面
thor docs:package   # 打包文档以供 docs:download 使用
thor docs:clean     # 删除文档包

# 控制台
thor console        # 启动 REPL
thor console:docs   # 在 "Docs" 模块下启动 REPL

# 可在控制台内用 "test" 命令快速运行测试。
# 运行 "help test" 查看用法说明。
thor test:all       # 运行所有测试
thor test:docs      # 运行 "Docs" 测试
thor test:app       # 运行 "App" 测试

# 资源
thor assets:compile # 编译资源(开发模式下无需)
thor assets:clean   # 清理旧资源

如系统���装了多个 Ruby 版本,命令需通过 bundle exec 运行。

贡献

欢迎贡献!请阅读贡献指南。

文档

相关项目

做了什么有趣的项目?欢迎 PR 添加到下表!你也可以通过 https://github.com/topics/devdocs 发现新项目。

项目 描述 最近提交 Star 数
yannickglt/alfred-devdocs Alfred 工作流 Latest GitHub commit GitHub stars
Merith-TK/devdocs_webapp_kotlin 安卓应用 Latest GitHub commit GitHub stars
gruehle/dev-docs-viewer Brackets 扩展 Latest GitHub commit GitHub stars
egoist/devdocs-desktop Electron 应用 Latest GitHub commit GitHub stars
skeeto/devdocs-lookup Emacs 函数 Latest GitHub commit GitHub stars
astoff/devdocs.el Emacs 查看器 Latest GitHub commit GitHub stars
naquad/devdocs-shell GTK shell,集成 Vim Latest GitHub commit GitHub stars
hardpixel/devdocs-desktop GTK 应用 Latest GitHub commit GitHub stars
qwfy/doc-browser Linux 应用 Latest GitHub commit GitHub stars
dteoh/devdocs-macos macOS 应用 Latest GitHub commit GitHub stars
Sublime Text plugin Sublime Text 插件 Latest GitHub commit GitHub stars
mohamed3nan/DevDocs-Tab VS Code 扩展(标签页浏览) Latest GitHub commit GitHub stars
deibit/vscode-devdocs VS Code 扩展(浏览器打开) Latest GitHub commit GitHub stars
mdh34/quickDocs 基于 Vala/Python 的查看器 Latest GitHub commit GitHub stars
girishji/devdocs.vim Vim 插件 & TUI(Vim 内浏览) Latest GitHub commit GitHub stars
romainl/vim-devdocs Vim 插件 Latest GitHub commit GitHub stars
waiting-for-dev/vim-www Vim 插件 Latest GitHub commit GitHub stars
luckasRanarison/nvim-devdocs Neovim 插件 Latest GitHub commit GitHub stars
toiletbril/dedoc 终端查看器 Latest GitHub commit GitHub stars
Raycast Devdocs Raycast 扩展 不可用 不可用
chrisgrieser/alfred-docs-searches Alfred 工作流 Latest GitHub commit GitHub stars

版权 / 许可证

Copyright 2013–2025 Thibaut Courouble 及 其他贡献者

本软件遵循 Mozilla Public License v2.0 许可协议。详见 COPYRIGHT 和 LICENSE 文件。

未经维护者许可,请勿使用 DevDocs 名称为衍生产品背书或推广,除非为满足声明/署名要求所必需。

我们也希望任何使用本软件生成的文档文件能注明 DevDocs 来源。让我们共同尊重所有贡献者的劳动成果,谢谢!

常见问题

如有疑问,欢迎在 Discord 贡献者聊天室提问。

About

API 文档浏览器

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages