搜索
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 注册表中现在有超过 700,000 个包,但找到你需要的包并非易事。为了更轻松地发现这些模块,我们创建了electron-npm-packages
,它是注册表中 3400 多个专门用于 Electron 的模块的集合。
Libraries.io 的工作人员创建了 SourceRank,这是一个基于代码、社区、文档和使用情况等指标的组合对软件项目进行评分的系统。我们创建了一个 sourceranks
模块,其中包括 npm 注册表中每个模块的分数,我们使用这些分数来对软件包结果进行排序。
想要替代 Electron 内置 IPC 模块的方案?搜索 is:package ipc
。
Electron 应用程序
使用 Algolia 索引数据很容易,因此我们从 electron/apps 中添加了现有的应用程序列表。
筛选结果
如果你以前使用过 GitHub 的代码搜索,你可能知道它的冒号分隔的键值筛选器,例如 extension:js
或 user:defunkt
。我们认为这种筛选技术非常强大,因此我们向 Electron 的搜索中添加了一个 is:
关键字,该关键字允许你筛选结果以仅显示一种类型
键盘导航
人们喜欢键盘快捷键!新的搜索功能可以在不将手指从键盘上移开的情况下使用
- / 将焦点放在搜索输入框上
- esc 将焦点放在搜索输入框上并清除它
- 下 移动到下一个结果
- 上 移动到上一个结果,或搜索输入框
- Enter 打开一个结果
我们还开源了模块,该模块实现了键盘交互功能。它被设计为与 Algolia InstantSearch 一起使用,但也进行了通用化,以支持不同的搜索实现。
我们需要您的反馈
如果您在使用新的搜索工具时遇到任何问题,我们希望听到您的反馈!
提交反馈的最佳方式是在 GitHub 上相应仓库中提交 issue。
- electron/electronjs.org 是 Electron 网站。如果您不知道在哪里提交 issue,这里是您的最佳选择。
- 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 团队帮助我们入门。🍹