跳到主要内容

搜索

·阅读 5 分钟

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

[Libraries.io](https://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 团队帮助我们入门。🍹