跳转到主要内容

5 篇标记为“网站”的文章

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 项目的功能

  • 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,它是注册表中 3400 多个专门用于 Electron 的模块的集合。

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

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

Electron 应用程序

使用 Algolia 索引数据很容易,因此我们从 electron/apps 中添加了现有的应用程序列表。

尝试搜索 musichomebrew

筛选结果

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

键盘导航

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

  • / 将焦点放在搜索输入框上
  • esc 将焦点放在搜索输入框上并清除它
  • 移动到下一个结果
  • 移动到上一个结果,或搜索输入框
  • 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 运行时可以用于各种不同的应用程序。当微软和 Slack 等公司开始使用 atom-shell 时,很明显该项目需要一个新的名称。

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

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

🐢🚀 Node.js 无处不在

之前的 Electron 网站是用 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) 来自动查找拉取请求中的错误。这减轻了人类进行代码审查的负担,并使我们对文档的准确性更有信心。

社区的努力

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。我们还会添加已添加到站点的所有版本的列表,以及我们希望整个文档集合使用的永久链接。

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 中配置列表。此外,我们还为该页面提供一个永久链接:/docs/

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

希望您喜欢这些技术细节!如果您对使用 Jekyll 构建文档网站的更多信息感兴趣,请查看 GitHub 的文档团队如何使用 Jekyll 发布 GitHub 的文档