搜索
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
,这是一个注册表中专门为 Electron 构建的 3400 多个模块的集合。
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 是用于将数据上传到 Algolia 服务器的 Node.js 客户端。
致谢
特别感谢 Emily Jordan 和 Vanessa Yuen 构建了这些新的搜索功能,感谢 Libraries.io 提供了 SourceRank 分数,以及 Algolia 团队帮助我们入门。🍹