搜索
Electron 网站新增了一个搜索引擎,可以即时搜索 API 文档、教程、Electron 相关 npm 包等内容。

学习像 Electron 这样的新技术或框架可能会让人望而却步。一旦你克服了 快速入门 阶段,学习最佳实践、找到正确的 API 或发现能帮助你构建梦想应用程序的工具可能会很困难。我们希望 Electron 网站能成为一个更好的工具,帮助你更快、更轻松地找到所需的资源。
访问 electronjs.org 上的任何页面,你都会在页面顶部找到新的搜索输入框。
搜索引擎
当我们开始在网站上添加搜索功能时,我们使用 GraphQL 作为后端构建了自己的搜索引擎。GraphQL 使用起来很有趣,搜索引擎的性能也很出色,但我们很快意识到构建搜索引擎并非易事。像多词搜索和拼写检查等功能需要大量的工作才能做好。为了避免重复造轮子,我们决定使用现有的搜索解决方案:Algolia。
Algolia 是一种托管搜索服务,已迅速成为 React、Vue、Bootstrap、Yarn 和 许多其他 流行的开源项目的首选搜索引擎。
以下是 Algolia 成为 Electron 项目理想选择的一些功能:
- InstantSearch.js 提供输入时即时结果,通常在 1 毫秒左右。
- 容错性 意味着即使你输入
widnow也能获得结果。 - 高级查询语法 允许使用
"精确引用匹配"和-排除。 - API 客户端 是开源的,并且文档完善。
- 分析 告诉我们人们搜索最多的内容,以及他们搜索但未找到的内容。这将为我们提供有价值的见解,了解如何改进 Electron 的文档。
- Algolia 对 开源项目 是免费的。
API 文档
有时你可能知道 想要实现什么,但不知道 如何实现。Electron 有超过 750 个 API 方法、事件和属性。没有人能轻易记住所有这些,但计算机擅长这些事情。使用 Electron 的 JSON API 文档,我们将所有这些数据索引到 Algolia 中,现在你可以轻松找到你正在寻找的 API。
尝试调整窗口大小?搜索 resize 并直接跳转到你需要的函数。
教程
Electron 拥有不断增长的教程集,以补充其 API 文档。现在,你可以更轻松地找到关于特定主题的教程,并与相关的 API 文档放在一起。
正在寻找安全最佳实践?搜索 security。
npm 包
现在 npm 注册表中已有超过 70 万个包,找到你需要的包并不总是容易的。为了更容易地发现这些模块,我们创建了 electron-npm-packages,这是一个为 Electron 构建的 3400 多个模块的集合。
Libraries.io 的团队创建了 SourceRank,这是一种基于代码、社区、文档和使用情况等指标对软件项目进行评分的系统。我们创建了一个 sourceranks 模块,其中包含 npm 注册表中每个模块的评分,我们使用这些评分对包结果进行排序。
想要 Electron 内置 IPC 模块的替代方案吗?搜索 is:package ipc。
Electron 应用程序
使用 Algolia 索引数据很容易,因此我们添加了来自 electron/apps 的现有应用程序列表。
过滤结果
如果你使用过 GitHub 的 代码搜索,你可能知道它的冒号分隔的键值过滤器,例如 extension:js 或 user:defunkt。我们认为这种过滤技术非常强大,因此我们向 Electron 的搜索添加了一个 is: 关键字,它允许你只显示单一类型的结果
键盘导航
人们喜欢键盘快捷键!新的搜索功能可以在不将手指离开键盘的情况下使用。
- / 聚焦搜索输入框
- esc 聚焦搜索输入框并清除它
- down 移动到下一个结果
- up 移动到上一个结果,或搜索输入框
- enter 打开一个结果
我们还开源了 模块,该模块实现了这种键盘交互。它专为与 Algolia InstantSearch 一起使用而设计,但已通用化以实现与不同搜索实现的兼容性。
我们希望你的反馈
如果你在使用新的搜索工具时遇到任何问题,我们希望听到你的声音!
提交反馈的最佳方式是在相应的存储库中向 GitHub 提交 issue。
- electron/electronjs.org 是 Electron 网站。如果你不知道在哪里提交问题,这是你的最佳选择。
- electron/algolia-indices 是编译所有可搜索 Electron 数据的地方。
- electron/search-with-your-keyboard 使搜索界面可以通过键盘导航。
- algolia/instantsearch.js 是浏览器端客户端,可实现输入即搜。
- algolia/algoliasearch-client-javascript 是 Node.js 客户端,用于将数据上传到 Algolia 服务器。
感谢
特别感谢 Emily Jordan 和 Vanessa Yuen 构建这些新的搜索功能,感谢 Libraries.io 提供 SourceRank 评分,以及 Algolia 团队帮助我们入门。🍹


