跳到主要内容

5 篇帖子已标记 “Website”

electronjs.org 网站和文档的更新

查看所有标签

搜索

·5 分钟阅读

Electron 网站有一个新的搜索引擎,可为 API 文档、教程、Electron 相关的 npm 包等提供即时结果。

Electron Search Screenshot


学习像 Electron 这样的新技术或框架可能会让人感到畏惧。一旦你度过 快速入门 阶段,就可能难以学习最佳实践、找到正确的 API 或发现可以帮助你构建梦想应用的工具。我们希望 Electron 网站成为一个更好的工具,帮助你找到构建应用所需的资源,从而更快、更轻松地构建应用。

访问 electronjs.org 上的任何页面,你都会在页面顶部找到新的搜索输入框。

搜索引擎

当我们最初着手为网站添加搜索功能时,我们使用 GraphQL 作为后端,推出了我们自己的搜索引擎。GraphQL 使用起来很有趣,搜索引擎性能也很好,但我们很快意识到构建搜索引擎并非易事。诸如多词搜索和错别字检测之类的事情需要大量工作才能做好。我们决定使用现有的搜索解决方案:Algolia,而不是重新发明轮子。

Algolia 是一种托管搜索服务,已迅速成为 React、Vue、Bootstrap、Yarn 和 许多其他 流行的开源项目首选的搜索引擎。

以下是一些使 Algolia 非常适合 Electron 项目的功能

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 添加了现有的应用列表。

尝试搜索 musichomebrew

过滤结果

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

键盘导航

人们喜欢键盘快捷键!新的搜索可以在不将手指从键盘上移开的情况下使用

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

我们还开源了 模块,该模块启用了这种键盘交互。它专为与 Algolia InstantSearch 一起使用而设计,但也通用化以实现与不同搜索实现的兼容性。

我们需要你的反馈

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

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

感谢

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

国际化更新

·3 分钟阅读

自从新的国际化 Electron 网站 发布 以来,我们一直努力使英语世界以外的开发人员更容易获得 Electron 开发体验。

所以我们在这里提供一些令人兴奋的 i18n 更新!


🌐 语言切换

你知道吗,许多阅读翻译文档的人经常与原始英文文档交叉引用?他们这样做是为了熟悉英文文档,并避免过时或不准确的翻译,这是国际化文档的一个缺点。

Language toggle on Electron documentation

为了使交叉引用英文文档更容易,我们最近发布了一个功能,允许你在英文文档和你正在网站上查看的任何语言之间无缝切换 Electron 文档的某个部分。只要你在网站上选择了非英语语言环境,语言切换就会显示出来。

⚡️ 快速访问翻译页面

New Electron documentation footer in Japanese

在阅读文档时发现错别字或不正确的翻译?你不再需要登录 Crowdin、选择你的语言环境、找到你想修复的文件等等。相反,你只需滚动到所述文档的底部,然后单击“翻译此文档”(或你语言中的等效项)。瞧!你将被直接带到 Crowdin 翻译页面。现在应用你的翻译魔法吧!

📈 一些统计数据

自从我们公开 Electron 文档 i18n 工作以来,我们看到了来自世界各地 Electron 社区成员的翻译贡献的巨大增长。到目前为止,我们已经翻译了 1,719,029 个字符串,来自 1,066 位社区翻译人员,共 25 种语言

Translation Forecast provided by Crowdin

这是一个有趣的图表,显示了如果保持现有速度(基于撰写本文时过去 14 天的项目活动),将项目翻译成每种语言所需的大致时间。

📃 翻译人员调查

我们想对每一位为改进 Electron 贡献时间的人表示衷心的 ❤️ 感谢 ❤️!为了正确感谢我们翻译人员社区的辛勤工作,我们创建了一份调查,以收集我们翻译人员的一些信息(即他们的 Crowdin 和 Github 用户名之间的映射)。

如果你是我们出色的翻译人员之一,请花几分钟填写此表格:https://goo.gl/forms/b46sjdcHmlpV0GKT2

🙌 Node 的国际化工作

由于 Electron 的 i18n 倡议取得成功,Node.js 决定效仿我们使用的模式,改进他们的 i18n 工作!🎉 Node.js i18n 倡议 现已启动并获得了巨大的发展势头,但你仍然可以阅读有关早期提案及其背后原因的 此处

🔦 贡献指南

如果你有兴趣加入我们,使 Electron 更加国际友好,我们有一个方便的 贡献指南 来帮助你入门。祝你国际化愉快!📚

Electron 的新国际化网站

·6 分钟阅读

Electron 在 electronjs.org 上有一个新网站!我们用 Node.js Web 服务器替换了我们的静态 Jekyll 站点,这使我们能够灵活地将站点国际化,并为更多令人兴奋的新功能铺平道路。


🌍 翻译

我们已开始网站国际化进程,目标是使全球开发人员都能访问 Electron 应用开发。我们正在使用一个名为 Crowdin 的本地化平台,该平台与 GitHub 集成,并在内容被翻译成不同语言时自动打开和更新拉取请求。

Electron Nav in Simplified Chinese

尽管到目前为止我们一直在悄悄地进行这项工作,但已有 75 多名 Electron 社区成员自然地发现了该项目,并加入了网站国际化和将 Electron 文档翻译成 20 多种语言的工作。我们看到了来自世界各地人们的 每日贡献,其中法语、越南语、印度尼西亚语和中文等语言的翻译处于领先地位。

要选择你的语言并查看翻译进度,请访问 electronjs.org/languages

Translations in progress on Crowdin

如果你会多种语言并且有兴趣帮助翻译 Electron 的文档和网站,请访问 electron/electron-i18n 存储库,或直接跳转到 Crowdin 上进行翻译,你可以在那里使用你的 GitHub 帐户登录。

目前 Crowdin 上为 Electron 项目启用了 21 种语言。添加对更多语言的支持很容易,因此如果你有兴趣帮助翻译但没有看到你的语言列出,请告诉我们,我们将启用它。

原始翻译文档

如果你喜欢阅读原始 Markdown 文件中的文档,你现在可以用任何语言做到这一点

git clone https://github.com/electron/electron-i18n
ls electron-i18n/content

应用页面

从今天开始,任何 Electron 应用都可以轻松地在 Electron 网站上拥有自己的页面。有关一些示例,请查看 Etcher1ClipboardGraphQL Playground,此处以网站的日语版本为例

GraphQL Playground

有很多令人难以置信的 Electron 应用,但它们并不总是容易找到,而且并非每个开发人员都有时间和资源来构建合适的网站来营销和分发他们的应用。

仅使用 PNG 图标文件和少量应用元数据,我们就可以收集有关给定应用的许多信息。使用从 GitHub 收集的数据,应用页面现在可以显示每个具有公共存储库的应用的屏幕截图、下载链接、版本、发行说明和 README。使用从每个应用的图标中提取的调色板,我们可以生成 醒目且易于访问的颜色,使每个应用页面都有一些视觉差异。

应用索引页面 现在还具有类别和关键字过滤器,以查找有趣的应用程序,例如 GraphQL GUIp2p 工具

如果你有一个希望在网站上展示的 Electron 应用,请在 electron/electron-apps 存储库上打开一个拉取请求。

使用 Homebrew 一行安装

macOS 的 Homebrew 包管理器有一个名为 cask 的子命令,它可以让你使用终端中的单个命令轻松安装桌面应用程序,例如 brew cask install atom

我们已经开始收集流行的 Electron 应用的 Homebrew cask 名称,现在在每个具有 cask 的应用页面上显示安装命令(对于 macOS 访问者)

Installation options tailored for your platform: macOS, Windows, Linux

要查看所有具有 homebrew cask 名称的应用,请访问 electronjs.org/apps?q=homebrew。如果你知道我们尚未索引的其他具有 cask 的应用,请添加它们!

🌐 新域名

我们将网站从 electron.atom.io 迁移到了新域名:electronjs.org

Electron 项目诞生于 Atom 内部,Atom 是 GitHub 基于 Web 技术构建的开源文本编辑器。Electron 最初名为 atom-shell。Atom 是第一个使用它的应用程序,但人们很快意识到这种神奇的 Chromium + Node 运行时可以用于各种不同的应用程序。当 Microsoft 和 Slack 等公司开始使用 atom-shell 时,很明显该项目需要一个新名称。

因此,“Electron”诞生了。在 2016 年初,GitHub 组建了一个新的团队,专门专注于 Electron 开发和维护,与 Atom 分开。从那时起,Electron 已被数千名应用程序开发人员采用,现在许多大公司都依赖它,其中许多公司都有自己的 Electron 团队。

支持 GitHub 的 Electron 项目(如 Atom 和 GitHub Desktop)仍然是我们团队的优先事项,但通过迁移到新域名,我们希望帮助澄清 Atom 和 Electron 之间的技术区别。

🐢🚀 Node.js 无处不在

之前的 Electron 网站是使用 Jekyll 构建的,Jekyll 是流行的基于 Ruby 的静态站点生成器。Jekyll 是构建静态网站的绝佳工具,但该网站已经开始超越它。我们想要更多动态功能,如正确的重定向和动态内容渲染,因此 Node.js 服务器是显而易见的选择。

Electron 生态系统包括用许多不同的编程语言(从 Python 到 C++ 再到 Bash)编写的组件的项目。但是 JavaScript 是 Electron 的基础,并且是我们社区中使用最多的语言。

通过将网站从 Ruby 迁移到 Node.js,我们旨在降低希望为网站做出贡献的人们的入门门槛。

⚡️ 更轻松的开源参与

如果你的系统上安装了 Node.js (8 或更高版本) 和 git,你可以轻松地在本地运行该网站

git clone https://github.com/electron/electronjs.org
cd electronjs.org
npm install
npm run dev

新网站托管在 Heroku 上。我们使用部署管道和 Review Apps 功能,该功能为每个拉取请求自动创建一个正在运行的应用副本。这使得审阅者可以轻松地查看拉取请求对网站实时副本的实际效果。

🙏 感谢贡献者

我们要特别感谢世界各地所有为帮助改进 Electron 而贡献了自己的时间和精力的人们。开源社区的热情为 Electron 的成功做出了不可估量的贡献。谢谢!

Thumbs up!

Electron 的 API 文档作为结构化数据

·3 分钟阅读

今天,我们宣布对 Electron 的文档进行一些改进。每个新版本现在都包含一个 JSON 文件,其中详细描述了 Electron 的所有公共 API。我们创建此文件是为了使开发人员能够以有趣的新方式使用 Electron 的 API 文档。


架构概述

每个 API 都是一个对象,具有诸如名称、描述、类型等属性。诸如 BrowserWindowMenu 之类的类具有描述其实例方法、实例属性、实例事件等的其他属性。

以下是描述 BrowserWindow 类的模式摘录

{
name: 'BrowserWindow',
description: 'Create and control browser windows.',
process: {
main: true,
renderer: false
},
type: 'Class',
instanceName: 'win',
slug: 'browser-window',
websiteUrl: 'https://electron.js.cn/docs/api/browser-window',
repoUrl: 'https://github.com/electron/electron/blob/v1.4.0/docs/api/browser-window.md',
staticMethods: [...],
instanceMethods: [...],
instanceProperties: [...],
instanceEvents: [...]
}

以下是一个方法描述的示例,在本例中是 apis.BrowserWindow.instanceMethods.setMaximumSize 实例方法

{
name: 'setMaximumSize',
signature: '(width, height)',
description: 'Sets the maximum size of window to width and height.',
parameters: [{
name: 'width',
type: 'Integer'
}, {
name: 'height',
type: 'Integer'
}]
}

使用新数据

为了方便开发者在项目中使用这种结构化数据,我们创建了 electron-docs-api,这是一个小型 npm 包,每当有新的 Electron 版本发布时,它都会自动发布。

npm install electron-api-docs --save

为了立即获得满足感,请在您的 Node.js REPL 中试用该模块

npm i -g trymodule && trymodule electron-api-docs=apis

数据是如何收集的

Electron 的 API 文档遵循 Electron 编码风格Electron 风格指南,因此其内容可以进行程序化解析。

electron-docs-linterelectron/electron 仓库的一个新的开发依赖项。它是一个命令行工具,用于检查所有 markdown 文件并强制执行风格指南的规则。如果发现错误,它们将被列出,并且发布过程将被暂停。如果 API 文档有效,则会创建 electron-json.api 文件,并作为 Electron 发布的一部分上传到 GitHub

标准 Javascript 和标准 Markdown

今年早些时候,Electron 的代码库已更新为对所有 JavaScript 使用 standard linter。Standard 的 README 总结了此选择背后的原因

采用标准风格意味着将代码清晰度和社区约定置于个人风格之上。 这可能不适用于 100% 的项目和开发文化,但是,开源对于新手来说可能是一个充满敌意的地方。 建立清晰、自动化的贡献者期望使项目更健康。

我们最近还创建了 standard-markdown,以验证我们文档中的所有 JavaScript 代码片段是否有效并与代码库本身的风格一致。

这些工具共同帮助我们使用持续集成 (CI) 自动查找 pull 请求中的错误。 这减轻了人工代码审查的负担,并使我们对文档的准确性更有信心。

社区努力

Electron 的文档在不断改进,我们感谢我们出色的开源社区为此做出的贡献。 截至撰写本文时,已有近 300 人为文档做出了贡献。

我们很高兴看到人们如何使用这种新的结构化数据。 可能的用途包括

Electron 文档

·4 分钟阅读

本周,我们已将 Electron 的文档放在 electronjs.org 上。 您可以访问 /docs/latest 获取最新的文档集。 我们也会保留旧版本文档,因此您可以访问 /docs/vX.XX.X 获取与您正在使用的版本相关的文档。


您可以访问 /docs 查看有哪些版本可用,或访问 /docs/all 在一个页面上查看所有最新版本的文档(方便使用 cmd + f 搜索)。

如果您想为文档内容做出贡献,可以在 Electron 仓库 中进行,文档就是从这里获取的。 我们为每个次要版本获取文档,并将其添加到 Electron 网站仓库,该仓库是用 Jekyll 构建的。

如果您有兴趣了解更多关于我们如何将文档从一个仓库拉取到另一个仓库的信息,请继续阅读下文。 否则,请尽情享用 文档

技术细节

我们正在 Electron 核心仓库中按原样保留文档。 这意味着 electron/electron 将始终拥有最新版本的文档。 当发布新版本的 Electron 时,我们会将它们复制到 Electron 网站仓库 electron/electronjs.org

script/docs

为了获取文档,我们运行一个 脚本,其命令行界面为 script/docs vX.XX.X,带有或不带有 --latest 选项(取决于您导入的版本是否为最新版本)。 我们的 用于获取文档的脚本 使用了一些有趣的 Node 模块

测试 帮助我们了解所有位和片段都按预期落地。

Jekyll

Electron 网站是一个 Jekyll 站点,我们利用 Collections 功能来实现文档,其结构如下

electron.atom.io
└── _docs
├── latest
├── v0.27.0
├── v0.26.0
├── so on
└── so forth

Front matter

为了让 Jekyll 渲染每个页面,它至少需要空的 front matter。 我们将在所有页面上使用 front matter,因此,当我们流式传输 /docs 目录时,我们会检查文件是否为 README.md 文件(在这种情况下,它会收到一个 front matter 配置),或者是否为任何其他带有 markdown 扩展名的文件(在这种情况下,它会收到略有不同的 front matter)。

每个页面都会收到这组 front matter 变量

---
version: v0.27.0
category: Tutorial
title: 'Quick Start'
source_url: 'https://github.com/electron/electron/blob/master/docs/tutorial/quick-start.md'
---

README.md 获得了一个额外的 permalink,因此其 URL 具有常见的根目录 index.html,而不是笨拙的 /readme/

permalink: /docs/v0.27.0/index.html

配置和重定向

在站点的 _config.yml 文件中,每次在使用 --latest 标志获取文档时,都会设置变量 latest_version。 我们还添加了已添加到站点的所有版本的列表,以及我们希望整个文档集合使用的 permalink。

latest_version: v0.27.0
available_versions:
- v0.27.0
collections:
docs: { output: true, permalink: '/docs/:path/' }

我们站点根目录中的文件 latest.md 是空的,但此 front matter 除外,它允许用户通过访问此 URL electron.atom.io/docs/latest 来查看最新版本文档的索引(即 README),而不是专门使用最新的版本号(尽管您也可以这样做)。

---
permalink: /docs/latest/
redirect_to: /docs/{{ site.data.releases[0].version }}
---

布局

docs.html 布局模板中,我们使用条件来显示或隐藏标题和面包屑中的信息。

{% raw %} {% if page.category != 'ignore' %}
<h6 class="docs-breadcrumb">
{{ page.version }} / {{ page.category }} {% if page.title != 'README' %} / {{
page.title }} {% endif %}
</h6>
{% endif %} {% endraw %}

为了创建一个显示可用版本的页面,我们只需在站点根目录中的文件 versions.md 上循环遍历配置中的列表。 此外,我们还为此页面提供了一个 permalink:/docs/

{% raw %} {% for version in site.available_versions %} - [{{ version
}}](/docs/{{ version }}) {% endfor %} {% endraw %}

希望您喜欢这些技术细节! 如果您有兴趣了解更多关于使用 Jekyll 构建文档站点的信息,请查看 GitHub 的文档团队如何发布 GitHub 在 Jekyll 上的文档