跳转到主要内容

5 个帖子标记为“Website”

electronjs.org 网站和文档的更新

查看所有标签

搜索

·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,这是一个为 Electron 构建的 3400 多个模块的集合。

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 开发体验对非英语世界的开发者来说更加容易访问。

因此,我们带来了令人兴奋的国际化更新!


🌐 语言切换

您知道吗?许多阅读翻译文档的人经常会将其与原始英文文档进行交叉参考。他们这样做是为了熟悉英文文档,并避免翻译过时或不准确的情况,这也是国际化文档的一个注意事项。

Language toggle on Electron documentation

为了方便与英文文档进行交叉参考,我们最近发布了一项功能,允许您在 Electron 文档的某个部分之间无缝切换英文和您正在浏览网站的语言。只要您在网站上选择了非英语区域设置,语言切换器就会显示出来。

⚡️ 快速访问翻译页面

New Electron documentation footer in Japanese

在阅读文档时发现错别字或不准确的翻译?您不再需要登录 Crowdin,选择您的区域设置,找到您想修改的文件,等等。取而代之的是,您只需滚动到相关文档的底部,然后点击“翻译此文档”(或您语言中的相应词语)。搞定!您将被直接带到 Crowdin 翻译页面。现在就开始您的翻译吧!

📈 一些统计数据

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

Translation Forecast provided by Crowdin

这是一张有趣的图表,显示了以当前(截至撰写时过去 14 天的项目活动量)的翻译速度,将项目翻译成每种语言所需的近似时间。

📃 翻译者调查

我们要向所有贡献时间帮助改进 Electron 的人致以巨大的❤️感谢❤️!为了妥善表彰我们翻译社区的辛勤工作,我们创建了一份调查问卷,以收集有关我们翻译者的信息(即他们的 Crowdin 和 Github 用户名之间的映射)。

如果您是我们的优秀翻译者之一,请花几分钟时间填写此表单: https://goo.gl/forms/b46sjdcHmlpV0GKT2

🙌 Node.js 的国际化工作

由于 Electron 的 i18n 计划取得了成功,Node.js 决定以我们使用的模式为模型 他们改进的 i18n 工作! 🎉 Node.js i18n 计划现已启动并获得了巨大的动力,但您仍然可以阅读早期提案和背后的原因 这里

🔦 贡献指南

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

Electron 的新国际化网站

·7分钟阅读

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,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 文档作为结构化数据

·阅读时长 4 分钟

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


Schema 概述

每个 API 都是一个对象,具有 name、description、type 等属性。像 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 文件并 上传到 GitHub 作为 Electron 版本的一部分。

标准 Javascript 和标准 Markdown

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

采用标准风格意味着将代码清晰度和社区约定放在比个人风格更重要的位置。这可能不适用于 100% 的项目和开发文化,然而开源对新手来说可能是一个不友好的地方。建立清晰、自动化的贡献者期望可以使项目更健康。

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

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

社区努力

Electron 的文档在不断改进,这都要归功于我们出色的开源社区。截至本文撰写之时,已有近 300 人为文档做出了贡献。

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

Electron 文档

·阅读时长 5 分钟

本周,我们为 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 和 Redirects

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

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 }}
---

Layouts

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 文件中的配置列表。此外,我们为该页面设置了永久链接:/docs/

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

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