Project Icon

devdocs

整合多语言API文档的在线浏览器 支持离线和移动使用

DevDocs整合了多种编程语言和框架的API文档,提供统一的Web界面。具备即时搜索、离线访问和移动端支持等特性,旨在优化开发者查阅文档的效率。项目开源,由freeCodeCamp维护,欢迎社区贡献。

DevDocs — API文档浏览器

DevDocs将多种开发者文档整合到一个干净、有组织的Web界面中,具有即时搜索、离线支持、移动版、深色主题、键盘快捷键等功能。

DevDocs由Thibaut Courouble创建,并由freeCodeCamp运营。

我们目前正在寻找维护者

如果您想加入团队,请通过Discord与社区联系!

关注开发动态:

目录: 快速开始 · 愿景 · 应用 · 抓取器 · 命令 · 贡献 · 文档 · 相关项目 · 许可证 · 问题?

快速开始

除非您想为项目做贡献,否则我们建议使用devdocs.io上的托管版本。它是最新的,并且开箱即用支持离线功能。

DevDocs由两部分组成:一个生成文档和元数据的Ruby抓取器,以及一个由小型Sinatra应用支持的JavaScript应用。

DevDocs需要Ruby 3.3.0(在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也可以作为Docker容器启动:

# 首先,构建镜像
git clone https://github.com/freeCodeCamp/devdocs.git && cd devdocs
docker build -t thibaut/devdocs .

# 最后,启动DevDocs容器(访问http://localhost:9292)
docker run --name devdocs -d -p 9292:9292 thibaut/devdocs

愿景

DevDocs旨在使阅读和搜索参考文档变得快速、简单和愉快。

应用的主要目标是:

  • 尽可能缩短加载时间
  • 提高搜索结果的质量、速度和顺序
  • 最大化缓存和其他性能优化的使用
  • 保持清晰易读的用户界面
  • 完全支持离线功能
  • 支持全键盘导航
  • 通过在所有文档中使用一致的排版和设计来减少"上下文切换"
  • 通过专注于特定类别的内容(API/参考)并只索引大多数开发者最有用的最小内容来减少杂乱

**注意:**DevDocs既不是编程指南,也不是搜索引擎。我们所有的内容都来自第三方来源,本项目不打算与全文搜索引擎竞争。它的核心是元数据;每一条内容都由一个唯一的、"显而易见"且简短的字符串标识。不符合这一要求的教程、指南和其他内容都不在项目范围内。

应用

Web应用完全是客户端JavaScript,用CoffeeScript编写,由一个小型的Sinatra/Sprockets应用驱动。它依赖于抓取器生成的文件。

许多代码设计决策都源于应用使用XHR直接将内容加载到主框架的事实。这包括剥离原始文档的大部分HTML标记(如脚本和样式表)以避免污染主框架,以及为所有CSS类名添加下划线前缀以防止冲突。

另一个驱动因素是性能和一切都在浏览器中发生的事实。使用服务工作线程(带有自己的一系列约束)和localStorage来加快启动时间,同时通过允许用户选择自己的文档集来控制内存消耗。搜索算法保持简单,因为即使在搜索100,000个字符串时也需要快速。

作为一个开发者工具,DevDocs的浏览器要求很高:

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

这允许代码利用最新的DOM和HTML5 API,使开发DevDocs变得更加有趣!

抓取器

抓取器负责生成应用使用的文档和索引文件(元数据)。它用Ruby编写,位于Docs模块下。 目前有两种抓取器:通过HTTP下载文件的UrlScraper和从本地文件系统读取文件的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发现新项目。

项目描述最近提交星标数
yannickglt/alfred-devdocsAlfred 工作流最新 GitHub 提交GitHub 星标
Merith-TK/devdocs_webapp_kotlinAndroid 应用最新 GitHub 提交GitHub 星标
gruehle/dev-docs-viewerBrackets 扩展最新 GitHub 提交GitHub 星标
egoist/devdocs-desktopElectron 应用最新 GitHub 提交GitHub 星标
skeeto/devdocs-lookupEmacs 函数最新 GitHub 提交GitHub 星标
astoff/devdocs.elEmacs 查看器最新 GitHub 提交GitHub 星标
naquad/devdocs-shellGTK shell 与 Vim 集成最新 GitHub 提交GitHub 星标
hardpixel/devdocs-desktopGTK 应用最新 GitHub 提交GitHub 星标
qwfy/doc-browserLinux 应用最新 GitHub 提交GitHub 星标
dteoh/devdocs-macosmacOS 应用最新 GitHub 提交GitHub 星标
Sublime Text 插件Sublime Text 插件最新 GitHub 提交GitHub 星标
mohamed3nan/DevDocs-TabVS Code 扩展(以标签页形式查看)最新 GitHub 提交GitHub 星标
deibit/vscode-devdocsVS Code 扩展(在浏览器中打开)最新 GitHub 提交GitHub 星标
mdh34/quickDocs基于 Vala/Python 的查看器最新 GitHub 提交GitHub 星标
girishji/devdocs.vimVim 插件和 TUI(在 Vim 内浏览)最新 GitHub 提交GitHub 星标数
romainl/vim-devdocsVim 插件最新 GitHub 提交GitHub 星标数
waiting-for-dev/vim-wwwVim 插件最新 GitHub 提交GitHub 星标数
luckasRanarison/nvim-devdocsNeovim 插件最新 GitHub 提交GitHub 星标数
toiletbril/dedoc基于终端的查看器最新 GitHub 提交GitHub 星标数
Raycast DevdocsRaycast 扩展不可用不可用

版权 / 许可证

版权所有 2013–2024 Thibaut Courouble 和其他贡献者

本软件根据 Mozilla 公共许可证 v2.0 的条款进行许可。请参阅 COPYRIGHTLICENSE 文件。

请勿使用 DevDocs 这个名称来认可或推广由本软件衍生的产品,除非得到维护者的许可,或为遵守通知/署名要求而必须使用。

我们也希望使用本软件生成的任何文档文件都能归功于 DevDocs。让我们公平对待所有贡献者,给予应得的荣誉。谢谢!

有问题?

如果您有任何问题,请随时在 Discord 上的贡献者聊天室中提问。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号