跳转到主要内容

搜索

·6 分钟阅读

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

Electron Search Screenshot


学习像 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,这是一个包含注册表中 3400 多个专门为 Electron 构建的模块的集合。

Libraries.io 的工作人员创建了SourceRank,这是一个基于代码、社区、文档和使用量等一系列指标对软件项目进行评分的系统。我们创建了一个sourceranks模块,其中包含 npm 注册表中每个模块的分数,我们使用这些分数来对包结果进行排序。

想要 Electron 内置 IPC 模块的替代品?搜索 is:package ipc

Electron 应用

使用 Algolia索引数据非常容易,所以我们添加了来自electron/apps的现有应用列表。

试试搜索 musichomebrew

过滤结果

如果你之前使用过 GitHub 的代码搜索,你可能知道它使用冒号分隔的键值过滤器,如 extension:jsuser:defunkt。我们认为这种过滤技术非常强大,所以我们在 Electron 的搜索中添加了一个 is: 关键字,让你能够将结果限制为只显示一种类型。

键盘导航

人们喜欢键盘快捷键!新的搜索功能可以在不将手指离开键盘的情况下使用。

  • / 聚焦搜索输入框
  • esc 聚焦搜索输入框并清除它
  • down 移动到下一个结果
  • up 移动到上一个结果,或搜索输入框
  • enter 打开一个结果

我们还开源了实现这种键盘交互的模块。它设计用于 Algolia InstantSearch,但已通用化,以实现与不同搜索实现的兼容性。

我们想要你的反馈

如果你在使用新的搜索工具时遇到任何问题,我们希望听到你的声音!

提交反馈的最佳方式是在相应的存储库中向 GitHub 提交 issue。

致谢

特别感谢Emily JordanVanessa Yuen构建了这些新的搜索功能,感谢Libraries.io提供SourceRank分数,以及感谢 Algolia 团队帮助我们入门。🍹