跳到主内容

11 篇带“精选”标签的文章

突出展示精选的 Electron 用例

查看所有标签

2023 生态系统回顾

·6 分钟阅读

回顾 2023 年 Electron 开发者生态系统的改进和变化。


在过去的几个月里,我们一直在 Electron 生态系统中酝酿一些变化,以提升开发 Electron 应用程序的体验!以下是来自 Electron 总部的最新功能速览。

Electron Forge 7 及更高版本

Electron Forge 7 — 我们用于打包和分发 Electron 应用程序的一体化工具的最新主要版本 — 现已可用。

虽然 Forge 6 是从 v5 完全重写,但 v7 的范围较小,但仍然包含一些破坏性变更。今后,我们将继续发布 Forge 的主要版本,以应对需要进行的破坏性变更。

更多详情,请参阅 GitHub 上的完整 Forge v7.0.0 更新日志

破坏性变更

  • 切换到 notarytool 进行 macOS 公证:自 2023 年 11 月 1 日起,Apple 停止支持旧版 altool 进行 macOS 公证,此版本将其从 Electron Forge 中完全移除。
  • 最低 Node.js 版本提升至 v16.4.0:在此版本中,我们将所需的最低 Node.js 版本设置为 16.4.0。
  • 停止支持 electron-prebuiltelectron-prebuilt-compileelectron-prebuilt 是 Electron npm 模块的原始名称,但在 v1.3.1 中被 electron 取代。electron-prebuilt-compile 是该二进制文件的一种替代方案,附带了增强的 DX 功能,但最终作为一个项目被放弃。

亮点

  • Google Cloud Storage 发布器 作为我们更好地支持静态自动更新的推动的一部分,Electron Forge 现在支持直接发布到 Google Cloud Storage!
  • ESM forge.config.js 支持 Electron Forge 现在支持 ESM forge.config.js 文件。(附注:敬请期待 Electron 28 中对 ESM 入口点的支持。)
  • Makers 现在并行运行 在 Electron Forge 6 中,Makers 出于 ✨旧版✨ 原因顺序运行。此后,我们已测试了 Make 步骤的并行化,且无不良副作用,因此在为同一平台构建多个目标时,您应该会看到速度提升!
感谢!

🙇 衷心感谢 mahnunchik 在 GCS 发布器和 Forge 配置中的 ESM 支持方面做出的贡献!

更好的静态存储自动更新

Squirrel.Windows 和 Squirrel.Mac 是支持 Electron 内置 autoUpdater 模块的特定于平台的更新技术。这两个项目都支持通过两种方法进行自动更新

  • Squirrel 兼容的更新服务器
  • 托管在静态存储提供商(例如 AWS、Google Cloud Platform、Microsoft Azure 等)上的清单 URL

更新服务器方法传统上是 Electron 应用程序的推荐方法(并提供更新逻辑的额外定制),但它有一个主要缺点——如果应用程序是闭源的,则需要它们维护自己的服务器实例。

另一方面,静态存储方法一直都是可行的,但在 Electron 内部没有文档说明,并且在 Electron 工具包中支持不佳。

得益于 @MarshallOfSound 的卓越工作,无服务器自动应用更新的更新方案已得到显著简化

  • Electron Forge 的 Zip 和 Squirrel.Windows 生成器现在可以配置为输出与 autoUpdater 兼容的更新清单。
  • update-electron-app (v2.0.0) 的一个新主要版本现在可以读取这些生成的清单,作为 update.electronjs.org 服务器的替代方案。

一旦您的 Makers 和 Publishers 配置为将更新清单上传到云文件存储,您只需几行配置即可启用自动更新

const { updateElectronApp, UpdateSourceType } = require('update-electron-app');

updateElectronApp({
updateSource: {
type: UpdateSourceType.StaticStorage,
baseUrl: `https://my-manifest.url/${process.platform}/${process.arch}`,
},
});
延伸阅读

📦 想了解更多吗?有关详细指南,请参阅 Forge 的自动更新文档

@electron/ 扩展宇宙

当 Electron 首次启动时,社区发布了许多包以增强 Electron 应用程序的开发、打包和分发体验。随着时间的推移,许多这些包被整合到 Electron 的 GitHub 组织中,由核心团队承担维护负担。

2022 年,我们开始将所有这些第一方工具统一到 npm 上的 @electron/ 命名空间下。这一变化意味着以前是 electron-foo 的包现在在 npm 上是 @electron/foo,以前名为 electron/electron-foo 的仓库现在在 GitHub 上是 electron/foo。这些变化有助于明确区分第一方项目和用户领域项目。这包括许多常用包,例如

  • @electron/asar
  • @electron/fuses
  • @electron/get
  • @electron/notarize
  • @electron/osx-sign
  • @electron/packager
  • @electron/rebuild
  • @electron/remote
  • @electron/symbolicate-mac
  • @electron/universal

今后,我们发布的所有第一方包也将位于 @electron/ 命名空间下。此规则有两个例外

  • Electron 核心将继续以 electron 包的形式发布。
  • Electron Forge 将继续以 @electron-forge/ 命名空间发布其所有 monorepo 包。
求星

⭐ 在此过程中,我们也不小心将 electron/packager 仓库设为私有,这带来了不幸的副作用,抹去了我们的 GitHub 星星数(在抹去之前超过 9000)。如果您是 Packager 的活跃用户,我们将不胜感激您的 ⭐ 点赞 ⭐!

推出 @electron/windows-sign

自 2023 年 6 月 1 日起,行业标准开始要求 Windows 代码签名证书的密钥存储在符合 FIPS 标准的硬件上。

实际上,这意味着对于在 CI 环境中构建和签名的应用程序来说,代码签名变得困难得多,因为许多 Electron 工具将证书文件和密码作为配置参数接收,并尝试使用硬编码逻辑进行签名。

这种情况一直是 Electron 开发者们的一个常见痛点,这就是为什么我们一直在努力提供一个更好的解决方案,将 Windows 代码签名隔离到其独立的步骤中,类似于 @electron/osx-sign 在 macOS 上的做法。

未来,我们计划将此包完全集成到 Electron Forge 工具链中,但目前它独立存在。该包目前可以通过 npm install --save-dev @electron/windows-sign 进行安装,并且可以通过编程方式或通过 CLI 使用。

请尝试并向我们提供反馈,可在仓库的问题跟踪器中提交!

下一步是什么?

下个月我们将进入我们每年 12 月的休整期。在此期间,我们将思考如何在 2024 年进一步提升 Electron 的开发体验。

您希望我们接下来从事哪些工作?请告诉我们!

每周项目:Jasper

·6 分钟阅读

本周我们采访了 Jasper 的创建者,这是一款基于 Electron 的工具,用于管理 GitHub 通知。


你好!你是谁?

我是 Ryo Maruyama,一名来自日本的软件开发者。我正在开发 JasperESDoc

Jasper 是什么?

Jasper 是一款灵活而强大的 GitHub 问题阅读器。它支持 github.com 和 GitHub Enterprise 上的问题和拉取请求。

Jasper App Screenshot

你为什么创建它?

当人们在工作或开源活动中使用 GitHub 时,他们每天会收到大量通知。作为订阅通知的方式,GitHub 提供电子邮件和网页通知。我使用了这些功能几年,但我面临以下问题

  • 很容易忽略我被提及、我评论过或我正在关注的问题。
  • 我把一些问题放在脑子里的某个角落,以便稍后查看,但我有时会忘记它们。
  • 为了不忘记问题,我在浏览器中打开了许多标签页。
  • 很难查看所有与我相关的问题。
  • 很难掌握我团队的所有活动。

我花费大量时间和精力试图阻止这些问题,所以我决定为 GitHub 制作一个问题阅读器来高效解决这些问题,并开始开发 Jasper。

谁在使用 Jasper?

Jasper 被使用 GitHub 的多家公司的开发者、设计师和经理所使用。当然,一些开源开发者也在使用它。GitHub 的一些人也在使用它!

Jasper 如何工作?

配置 Jasper 后,会出现以下屏幕。从左到右,您可以看到“流列表”、“问题列表”和“问题正文”。

Jasper Start Screen

这个“流”是 Jasper 的核心功能。例如,如果您想查看“分配给 @zeke 在 electron/electron 仓库中的问题”,您可以创建以下流

repo:electron/electron assignee:zeke is:issue

Jasper Start Screen 2

创建流并等待几秒钟后,您可以看到符合条件的问题。

Jasper Start Screen 3

我们可以用流做什么?

我将介绍可以用于流的条件类型。

用户和团队

问题
mentions:cat mentions:dog提及用户 catdog 的问题
author:cat author:dog由用户 catdog 创建的问题
assignee:cat assignee:dog分配给 catdog 的问题
commenter:cat commenter:dogcatdog 评论过的问题
involves:cat involves:dog涉及 “involve” catbob 的问题
team:animal/white-cat team:animal/black-dog提及 animal/white-catanimal/black-dog 的问题

involves 表示 mentionauthorassigneecommenter

仓库和组织

问题
repo:cat/jump repo:dog/runcat/jumpdog/run 中的问题
org:electron user:cat user:dogelectroncatdog 中的问题

orguser 相同

属性

问题
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1cat/jump 中附加到 v1.0.0v1.0.1 的问题
repo:cat/jump label:bug label:blockercat/jump 中附加 bug blocker 标签的问题
electron OR atomshell包含 electronatomshell 的问题

审查状态

问题
is:pr review:requiredcat/jump 中需要审查的问题
is:pr review-requested:catcat 请求审查的问题。
但这些尚未被审查。
is:pr reviewed-by:catcat 审查过的问题

正如您可能已经注意到的那样,流可以使用 GitHub 的搜索查询。有关如何使用流和搜索查询的详细信息,请参阅以下 URL。

Jasper 还具有未读问题管理、未读评论管理、标记星标、通知更新、筛选问题、键盘快捷键等功能。

Jasper 是付费产品吗?它要多少钱?

Jasper 售价 12 美元。但是,您可以免费试用 免费试用版 30 天。

你为什么选择在 Electron 上构建 Jasper?

我喜欢 Electron 的以下几个方面

  • 可以使用 JavaScript/CSS/HTML 开发应用程序。
  • 可以为 Windows、Mac 和 Linux 平台构建应用程序。
  • Electron 正在积极开发并拥有庞大的社区。

这些功能支持快速简单的桌面应用程序开发。这太棒了!如果您有任何产品创意,您务必考虑使用 Electron。

在开发 Jasper 过程中,您遇到过哪些挑战?

我很难弄清楚“流”的概念。起初我考虑使用 GitHub 的通知 API。但我注意到它不支持某些用例。之后我考虑除了通知 API 之外,还使用问题 API拉取请求 API。但它从未变成我想要的样子。然后,在思考各种方法时,我意识到轮询 GitHub 的搜索 API 将提供最大的灵活性。达到这一点大约花了我一个月的实验时间,然后我在两天内用流概念实现了 Jasper 的原型。

注意:轮询最多限制为每 10 秒一次。这对于 GitHub API 的限制来说已经足够了。

下一步是什么?

我计划开发以下功能

  • 过滤流:一个流有一些过滤流,可以过滤流中的问题。它就像 SQL 中的视图一样。
  • 多账户:您将能够同时使用 github.com 和 GHE
  • 提升性能:目前在 WebView 中加载问题的速度比普通浏览器慢。

在 Twitter 上关注 @jasperappio 获取更新。

每周项目:WebTorrent

·10 分钟阅读

本周我们与 @feross@dcposch 进行了交流,讨论了 WebTorrent,这是一款基于网络的 torrent 客户端,它将用户连接起来,形成一个分布式、去中心化的浏览器到浏览器网络。


WebTorrent 是什么?

WebTorrent 是第一个在浏览器中工作的 torrent 客户端。它完全用 JavaScript 编写,可以使用 WebRTC 进行点对点传输。无需浏览器插件、扩展程序或安装。

利用开放的 Web 标准,WebTorrent 将网站用户连接起来,形成一个分布式、去中心化的浏览器到浏览器网络,以实现高效的文件传输。

您可以在此处查看 WebTorrent 的实际演示:webtorrent.io

webtorrent homepage

这有什么酷的?

想象一个像 YouTube 这样的视频网站,但访问者可以帮助托管网站内容。使用 WebTorrent 驱动的网站的人越多,它就变得越快、越有弹性。

浏览器到浏览器通信消除了中间人,并让人们按照自己的方式进行通信。不再有客户端/服务器——只有一个由对等点组成的网络,所有对等点都是平等的。WebTorrent 是重新去中心化 Web 旅程的第一步。

Electron 在这其中扮演了什么角色?

大约一年前,我们决定构建 WebTorrent Desktop,这是 WebTorrent 的一个桌面应用程序版本。

WebTorrent Desktop player window

我们创建 WebTorrent Desktop 有三个原因

  1. 我们想要一个干净、轻量、无广告、开源的 torrent 应用程序
  2. 我们想要一个具有良好流媒体支持的 torrent 应用程序
  3. 我们需要一个连接 BitTorrent 和 WebTorrent 网络的“混合客户端”

如果我们已经可以在网页浏览器中下载 torrent,为什么还需要一个桌面应用程序?

首先,介绍一下 WebTorrent 的设计背景。

webtorrent desktop logo

早期,BitTorrent 使用 TCP 作为其传输协议。后来,uTP 出现,承诺比 TCP 更好的性能和额外的优势。每个主流 torrent 客户端最终都采用了 uTP,而今天你可以通过这两种协议使用 BitTorrent。WebRTC 协议是下一个合乎逻辑的步骤。它带来了与网络浏览器互操作的希望——一个由所有桌面 BitTorrent 客户端和数百万网络浏览器组成的巨型 P2P 网络。

“Web 对等点”(在网络浏览器中运行的 torrent 对等点)通过增加数百万新对等点,并将 BitTorrent 传播到数十种新用例,使 BitTorrent 网络更加强大。WebTorrent 尽可能地遵循 BitTorrent 规范,以便现有 BitTorrent 客户端能够轻松添加对 WebTorrent 的支持。

一些 torrent 应用程序,如 Vuze,已经支持 Web 对等点,但我们不想坐等其他应用程序添加支持。所以基本上,WebTorrent Desktop 是我们加速 WebTorrent 协议普及的方式。通过开发一个人们真正想使用的优秀 torrent 应用程序,我们增加了网络中可以与 Web 对等点(即网站上的用户)共享 torrent 的对等点数量。

除了人们已知的功能外,torrent 还有哪些有趣的用例?

WebTorrent 最令人兴奋的用途之一是点对点辅助传输。像 WikipediaInternet Archive 这样的非营利项目可以通过让访问者贡献力量来降低带宽和托管成本。热门内容可以浏览器到浏览器快速、廉价地提供。不常访问的内容可以通过 HTTP 从源服务器可靠地提供。

Internet Archive 实际上已经更新了他们的 torrent 文件,使其与 WebTorrent 完美兼容。因此,如果您想在您的网站上嵌入 Internet Archive 的内容,您可以通过一种方式实现,从而降低 Archive 的托管成本,让他们能将更多资金用于实际的网络归档工作!

还有一些令人兴奋的商业用例,从 CDN 到通过 P2P 传输应用程序。

您最喜欢的 WebTorrent 项目有哪些?

gaia app screenshot

用 WebTorrent 构建的最酷的东西,毫无疑问,可能就是 Gaia 3D 星图。它是一个流畅的银河系 3D 互动模拟。数据从 torrent 加载,直接在你的浏览器中。在我们的星系中穿梭,并意识到人类与我们宇宙的浩瀚相比是多么渺小,这令人惊叹。

您可以在博客文章《用 Torrent 传输银河系》中了解它是如何制作的,作者 Charlie Hoey 在其中解释了他是如何用 WebGL 和 WebTorrent 构建星图的。

brave logo

我们也是 Brave 的忠实粉丝。Brave 是一款浏览器,它会自动屏蔽广告和跟踪器,使网页更快、更安全。Brave 最近添加了 torrent 支持,所以你可以无需使用单独的应用程序即可查看传统 torrent。该功能由 WebTorrent 提供支持。

因此,就像大多数浏览器可以渲染 PDF 文件一样,Brave 也可以渲染磁力链接和 torrent 文件。它们只是浏览器原生支持的另一种内容类型。

Brave 的联合创始人之一实际上是 JavaScript 的创建者 Brendan Eich,WebTorrent 就是用他创建的语言编写的,所以我们认为 Brave 选择集成 WebTorrent 非常酷。

您为什么选择在 Electron 上构建 WebTorrent Desktop?

WebTorrent Desktop main window

有一种说法是 Electron 应用程序“臃肿”,因为它们在每个应用程序中都包含了整个 Chrome 内容模块。在某些情况下,这部分是真实的(一个 Electron 应用程序安装程序通常约 40MB,而一个特定于操作系统的应用程序安装程序通常约 20MB)。

然而,就 WebTorrent Desktop 而言,我们在正常操作过程中几乎使用了每一个 Electron 功能,以及数十个 Chrome 功能。如果我们要为每个平台从头开始实现这些功能,构建我们的应用程序将需要更长的时间(数月或数年),或者我们只能发布单个平台版本。

简单来说,我们使用 Electron 的 dock 集成(显示下载进度)、菜单栏集成(在后台运行)、协议处理程序注册(打开磁力链接)、电源阻止器(防止视频播放期间休眠)和 自动更新器。至于 Chrome 功能,我们使用了大量:<video> 标签(播放多种不同视频格式)、<track> 标签(支持字幕)、拖放支持和 WebRTC(在原生应用程序中使用并非易事)。

更不用说:我们的 torrent 引擎是用 JavaScript 编写的,并假定存在许多 Node API,尤其是用于 TCP 和 UDP 套接字支持的 require('net')require('dgram')

基本上,Electron 正是我们所需要的,它拥有我们所需的功能集,以便在创纪录的时间内交付一个坚实、精美的应用程序。

您最喜欢 Electron 的哪些方面?

WebTorrent 库作为一个开源副项目已经开发了两年。我们仅用四周就完成了 WebTorrent Desktop。Electron 是我们能够如此迅速地构建和发布应用程序的主要原因。

正如 Node.js 使服务器编程对使用 jQuery 的前端程序员一代来说变得易于访问一样,Electron 使原生应用程序开发对任何熟悉 Web 或 Node.js 开发的人来说都变得易于访问。Electron 极大地增强了我们的能力。

网站和桌面客户端是否共享代码?

是的,webtorrent npm 包可以在 Node.js、浏览器和 Electron 中运行。完全相同的代码可以在所有环境中运行——这就是 JavaScript 的魅力所在。它是当今的通用运行时。Java Applets 曾承诺“一次编写,随处运行”的应用程序,但由于多种原因,这一愿景从未真正实现。Electron 比任何其他平台都更接近这个理想。

在构建 WebTorrent 过程中您面临了哪些挑战?

在应用程序的早期版本中,我们努力使 UI 保持高性能。我们将 torrent 引擎放在与主应用程序窗口相同的渲染器进程中,这可想而知地导致了只要 torrent 引擎有大量 CPU 活动(例如验证从对等点接收到的 torrent 片段)时就会出现卡顿。

我们通过将 torrent 引擎移动到第二个不可见的渲染器进程来解决这个问题,我们通过 IPC 与之通信。这样,即使该进程短暂地使用了大量 CPU,UI 线程也不会受到影响。流畅的滚动和动画令人非常满意。

注意:我们必须将 torrent 引擎放在渲染器进程中,而不是“主”进程中,因为我们需要访问 WebRTC(它只在渲染器中可用)。

Electron 在哪些方面应该改进?

我们希望看到的一件事是关于如何构建和发布生产就绪应用程序的更好文档,尤其是在代码签名和自动更新等棘手主题上。我们不得不通过深入研究源代码并在 Twitter 上四处询问来了解最佳实践!

WebTorrent Desktop 完成了吗?如果没有,接下来会是什么?

我们认为当前版本的 WebTorrent Desktop 非常出色,但总有改进的空间。我们目前正在努力改进精细度、性能、字幕支持和视频编解码器支持。

如果您有兴趣参与项目,请查看我们的 GitHub 页面

有什么对其他开发者有用的 Electron 开发技巧吗?

Feross,WebTorrent Desktop 的贡献者之一,最近在 NodeConf Argentina 发表了题为“真实世界的 Electron:用 JavaScript 构建跨平台桌面应用”的演讲,其中包含了发布精美 Electron 应用的有用技巧。如果您处于拥有一个基本可用的应用程序并正在尝试将其提升到更高层次的精细度和专业性的阶段,那么这个演讲尤其有用。

在此观看:

幻灯片在此:

DC,另一位 WebTorrent 贡献者,撰写了一篇《如何让你的 Electron 应用更性感》的清单,其中包含代码示例,涵盖了 macOS dock 集成、拖放、桌面通知以及确保你的应用快速加载等方面。

每周项目:Voltra

·6 分钟阅读

本周我们与 Aprile ElcichPaolo Fragomeni 见面,讨论了 Voltra,一个由 Electron 提供支持的音乐播放器。


Voltra 是什么?

Voltra 是一款专为希望拥有自己音乐的用户设计的音乐播放器。它也是一个商店,你可以在这里根据已有的音乐发现和购买新音乐。它无广告,支持桌面和移动跨平台。它也不会监视你。

voltra-artistview

Voltra 为谁而生?

所有听音乐的人。

是什么促使您创建 Voltra?

广播一直拥有大量的听众。它正在从电波转移到互联网。现在你可以按需租赁音乐——这是一场广播复兴!因此,许多新产品和服务应运而生,但流媒体广播仍然让其他人掌控着你的音乐以及你体验音乐的方式。

我们想要一款完全专注于您拥有音乐的产品。一款能让您轻松直接从艺术家或唱片公司发现和购买新音乐的产品。

有免费版本吗?

桌面播放器完全免费。销售您的音乐也是免费的!我们不支持广告。

由于该应用程序是免费的,我们可能会在稍后开源它。目前我们没有足够的精力来管理它。我们对功能和发展方向也有非常具体的想法。我们有一个活跃的测试社区,我们会认真听取他们的反馈。

你们如何赚钱?

我们有高级功能!

我们的 Voltra 音频档案是一项专门为音乐设计的云备份服务。我们不压缩或共享数据块。您的音乐收藏会为您进行物理备份。

对于艺术家和唱片公司,我们的 专业会员提供工具,帮助他们接触更多相关受众,例如分析和专业的艺术家网页。

Voltra 有何不同?

设计和可用性对我们来说极其重要。我们希望为听众提供无干扰的聆听体验!市面上有一些有趣的音乐播放器和商店。但其中许多都比其开发者意识到的更高级、更难使用。我们希望 Voltra 能被尽可能多的人使用。

我们也不从艺术家或唱片公司抽取佣金。这是我们一个重要的区别。这非常重要,因为它降低了艺术家将音乐推向市场的门槛。

您做出了哪些设计和技术决策?

在设计 Voltra 时,我们考虑了原生应用和网络的 UI 约定,我们也深入思考了哪些内容可以移除。我们有一个活跃的私人 beta 测试组,他们在过去几个月里为我们提供了关键反馈。

我们发现专辑封面和摄影对人们来说非常重要。许多播放器只是文件列表。拥有实体专辑的酷炫之处之一就是专辑封面,我们希望在 Voltra 桌面应用中强调这一点。

voltra-albumview

我们还确保不会弄乱用户的文件。我们使用文件监控,因此您可以将文件放在任何您想要的位置,我们不会为您重命名或移动它们。我们有一个嵌入式数据库来跟踪受监控目录的状态,以便即使进程没有运行,我们也可以跟踪哪些是新的。

在构建 Voltra 过程中您面临了哪些挑战?

我们花费大量时间专注于性能。我们从框架开始,但后来转向了纯 JavaScript。根据我们的经验,框架提供的一般化抽象无法弥补它们引入的性能开销和繁琐步骤。

目前我们已经能够很好地处理非常大的收藏集。大型收藏集意味着可能有数万张图片!直接从渲染进程中获得 Node.js 的文件系统模块使得基于 DOM 事件快速地懒加载和卸载大量图片变得非常容易。

总的来说,setImmediaterequestIdleCallback 是在执行大量处理的同时保持 UI 响应性方面非常重要的工具。更具体地说,将 CPU 密集型任务分配到单独的进程中确实有助于保持用户界面的响应性。例如,我们将实际的音频上下文移动到一个单独的进程中,通过 IPC 与其通信,以避免来自繁忙 UI 的潜在中断。

您为什么选择在 Electron 上构建 Voltra?

浏览器的沙盒对我们的应用程序来说限制太多了。但我们也在开发一个网页播放器。因此,我们可以在两个实现之间共享几乎 100% 的代码,这是一个巨大的胜利。

我们最初是使用 Swift 构建了一个原生应用程序。我们发现的主要问题是我们重新发明了很多东西。网络拥有世界上最大的开源生态系统。所以我们很快就转向了 Electron。

此外,最重要的是,使用 Electron,你只需开发一次,它就能在所有主流平台上“开箱即用™”。虽然不能保证 100%,但为每个平台原生编码的成本绝对超过 Electron 引入的任何其他成本。

您最喜欢 Electron 的哪些方面?

GTD!:将 Node.js 的网络堆栈和 Chromium 的呈现层打包在一起是高效完成工作的秘诀。

能力:它只是网络技术栈,所以我们整个团队实际上都参与了产品的构建。

社区:有一个组织严密的社区,他们非常善于沟通!我们非常乐意在这样的支持下进行开发。

Electron 在哪些方面可以改进?

我们希望看到 Electron 认可一个单一的打包器。打包器对 Electron 的重要性,就像包管理器对 Node 的重要性一样。用户空间中有多个打包器,每个都有有趣的特性,但每个都有 bug。社区的共识将有助于指导贡献者投入的精力。

下一步是什么?

我们目前正在开发一款移动应用程序,并与艺术家和唱片公司合作,将他们的音乐添加到 Voltra 商店。嘿!如果你是艺术家或唱片公司,现在就注册吧!我们计划在达到 1000 万首曲目目标时开放商店。

每周项目:WordPress Desktop

·阅读时间:4分钟

本周我们与 Automattic 的同事进行了交流,讨论了 WordPress Desktop,一个用于管理 WordPress 内容的开源桌面客户端。


WordPress Apps

每个人都知道 WordPress,但 WordPress Desktop 是什么?

WordPress.com 桌面应用程序提供无缝的跨平台体验,让您专注于内容和设计,没有任何浏览器标签分散您的注意力——或者让您的网站在侧边栏中随时可用。结合我们的浏览器支持和移动应用程序,您可以随时随地构建您的网站,以任何有助于您完成工作的方式。

为什么开发一个用于管理 WordPress 网站的桌面应用程序?难道不能完全基于网页吗?

它实际上使用的是您在浏览器中访问 WordPress.com 时获得的技术完全相同。然而,它都是本地托管的,因此加载时间极短。借助原生功能,例如停靠在 Dock 中、通知等,您真的可以专注于您的 WordPress 网站和博客。

您为什么选择在 Electron 上构建 WordPress Desktop?

2015 年底,我们以 Calypso 的形式重构了大部分 WordPress.com,这是一个使用 React 的开源现代化 JavaScript 应用程序。我们开始研究 Electron,并通过对 Calypso 进行一些修改,使其能够在本地运行。这是一种引人注目的体验,我们认为进一步开发它具有很大价值。

我们有几个团队在开发 Calypso。如果使用传统的桌面技术构建一个与其匹配的完整多平台 GUI 客户端,将需要更多的工作。通过使用 Electron,我们一个由 2-4 人组成的小团队能够利用其他团队的努力,并在几个月内构建出桌面应用程序。

在构建 WordPress Desktop 过程中您面临了哪些挑战?

我们很快就实现了应用程序的初始版本,但对其进行调优以使其作为桌面应用程序表现最佳却花费了更多时间。该应用程序的一个巨大挑战是,您实际上是在自己的机器上运行 Calypso 的副本——它纯粹是一个 API 驱动的 UI。这其中涉及大量的桥接工作,并且更改会反馈到 Calypso 本身。

此外,我们还花费了大量精力为不同平台打包应用程序——我们提供了 Windows、macOS 和 Linux 版本——并且存在足够的差异使其变得棘手。

当时 Electron 相对较新,我们不断遇到问题,但这些问题很快就得到了修复(有时甚至在同一天!)。

Electron 在哪些方面应该改进?

Electron 已经为我们的桌面应用程序提供了大部分所需功能,自我们开始使用它以来,它发展迅速。即便如此,桌面应用程序中一些被认为是理所当然的功能,例如拼写检查和查找/替换,使用 Electron 原生复制起来会更困难。

我们也希望看到一些较新的 Chrome 技术也能渗透到 Electron 中。我们特别热衷于尝试 WebVR。

您最喜欢 Electron 的哪些方面?

我们选择 Electron 的主要原因,也是其最大的优势,是其极其活跃和开放的社区。Automattic 始终相信开源。这是我们的核心信条之一,而 Electron 项目和社区也遵循着许多非常开放和积极的核心信念。

WordPress Desktop 的下一步是什么?

我们模式的优点在于桌面应用受益于所有新的 Calypso 功能——持续改进。我们希望可以为应用添加额外功能,例如离线支持,这将真正使应用进入原生领域,以及更好的系统通知。

Automattic 是否有其他团队正在开发 Electron 应用程序?

是的,在我们桌面应用程序的工作之后,Simplenote 团队决定使用 Electron 来构建 Windows 和 Linux 的桌面应用程序(Mac 原生客户端已经存在)。Simplenote Electron 应用程序也是开源的,可以在 Github 上找到。

我们还有一个即将推出的 Raspberry Pi 集成,它也使用了 Electron。

如果这些听起来很有趣,我们很乐意收到您的来信

有什么对其他开发者有用的 Electron 技巧吗?

发布签名桌面软件的过程对我们来说相对较新,尤其是对于 Windows。我们撰写了一篇关于Windows 应用程序代码签名的文章,其中包含了该过程以及我们为正确完成此操作所经历的一些障碍。

每周项目:Dat

·阅读时间:7分钟

本周的特色项目是 Dat,这是一个由资助的开源、去中心化数据分发工具。Dat 由一个地理分布的团队构建和维护,其中许多人帮助撰写了这篇文章。


A screenshot of the main view of dat-desktop, showing a few rows of shared
dats

首先,Dat 是什么?

我们希望将点对点和分布式系统的最佳部分引入数据共享。我们从科学数据共享开始,然后开始扩展到研究机构、政府、公共服务和开源团队。

另一种理解方式是,它是一个类似于 Dropbox 或 BitTorrent Sync 的同步和上传应用程序,但 Dat 是开源的。我们的目标是成为一个强大、开源、非营利的数据共享软件,适用于大型、小型、中型、小批量和大批量数据。

要使用 dat CLI 工具,你只需输入

dat share path/to/my/folder

然后 dat 将创建一个链接,你可以使用该链接将该文件夹发送给其他人——没有中心服务器或第三方可以访问你的数据。与 BitTorrent 不同,它也无法嗅探谁在共享什么(更多详细信息请参阅 Dat 论文草稿)。

现在我们知道了 Dat 是什么。Dat Desktop 是如何融入的?

Dat Desktop 是一种让那些无法或不想使用命令行的人也能使用 Dat 的方式。你可以在你的机器上托管多个 dat,并通过你的网络提供数据。

你能分享一些很酷的用例吗?

数据避难所 + 斯瓦尔巴特项目

我们正在开发一个代号为 斯瓦尔巴特项目 (Project Svalbard) 的东西,它与 数据避难所 (DataRefuge) 有关,数据避难所是一个致力于备份有消失风险的政府气候数据的小组。斯瓦尔巴特以北极的斯瓦尔巴特全球种子库命名,该种子库拥有一个大型地下植物 DNA 备份库。我们的版本是一个大型版本控制的公共科学数据集集合。一旦我们了解并信任元数据,我们就可以构建其他很酷的项目,比如一个分布式志愿者数据存储网络

加州公民数据联盟

CACivicData 是一个开源存档,每天从 CAL-ACCESS(加州追踪政治资金的数据库)提供下载。他们提供每日发布,这意味着他们的 zip 文件中托管着大量重复数据。我们正在努力将他们的数据托管为 Dat 存储库,这将减少引用特定版本或更新到新版本所需的工作和带宽。

Electron 更新

这个目前还不具体,但我们认为一个有趣的用例是将编译好的 Electron 应用程序放入 Dat 存储库,然后使用 Electron 中的 Dat 客户端来拉取已构建应用程序二进制文件的最新增量,这样既能节省下载时间,也能降低服务器的带宽成本。

谁应该使用 Dat Desktop?

任何想要通过 P2P 网络共享和更新数据的人。数据科学家、开放数据黑客、研究人员、开发者。如果有人有我们尚未想到的酷炫用例,我们非常乐意接受反馈。您可以光临我们的 Gitter 聊天室,向我们提问!

Dat 和 Dat Desktop 的下一步是什么?

用户账户和元数据发布。我们正在开发一个 Dat 注册表网页应用程序,将部署在 datproject.org,它基本上将是一个“数据集的 NPM”,但需要注意的是,我们只是一个元数据目录,数据可以存在于任何在线位置(与 NPM 或 GitHub 不同,它们的所有数据都集中托管,因为源代码足够小,可以全部放入一个系统中)。由于许多数据集非常庞大,我们需要一个联邦注册表(类似于 BitTorrent 跟踪器的工作方式)。我们希望让人们能够轻松地从 Dat Desktop 查找或发布带有注册表的数据集,以使数据共享过程无缝。

另一个功能是多写入/协作文件夹。我们有宏大的计划来实现协作工作流,也许带有分支,类似于 Git,但设计围绕数据集协作。但我们目前仍在努力提高整体稳定性和标准化我们的协议!

您为什么选择在 Electron 上构建 Dat Desktop?

Dat 是使用 Node.js 构建的,因此它非常适合我们的集成。除此之外,我们的用户使用各种机器,因为科学家、研究人员和政府官员可能被迫使用其机构的某些设置——这意味着我们需要能够针对 Windows 和 Linux 以及 Mac。Dat Desktop 让我们能够轻松做到这一点。

在构建 Dat 和 Dat Desktop 过程中您面临了哪些挑战?

弄清楚人们想要什么。我们从表格数据集开始,但我们意识到这是一个有点复杂的问题,而且大多数人都不使用数据库。所以项目进行到一半时,我们从头开始重新设计了一切,改用文件系统,并且再也没有回头。

我们还遇到了一些常见的 Electron 基础设施问题,包括:

  • 遥测 - 如何捕获匿名使用统计数据
  • 更新 - 设置自动更新有点零碎和神奇
  • 发布 - XCode 签名、在 Travis 上构建发布版本、进行 Beta 构建,所有这些都是挑战。

我们还在 Dat Desktop 的“前端”代码中使用了 Browserify 和一些很酷的 Browserify Transforms(这有点奇怪,因为我们仍然打包,即使我们有原生的 require——但那是因为我们想要 Transforms)。为了更好地管理我们的 CSS,我们从 Sass 切换到使用 sheetify。这极大地帮助我们模块化了 CSS,并使我们的 UI 更容易迁移到具有共享依赖项的面向组件的架构。例如,dat-colors 包含了我们所有的颜色,并被所有项目共享。

我们一直都是标准和最小抽象的忠实粉丝。我们的整个界面都是用常规 DOM 节点和少数几个辅助库构建的。我们已经开始将其中一些组件移动到 base-elements,这是一个低级可重用组件库。与我们的大多数技术一样,我们会不断迭代直到正确为止,但作为团队,我们觉得我们正朝着正确的方向前进。

Electron 在哪些方面应该改进?

我们认为最大的痛点是原生模块。为了 Electron 用 npm 重建模块会增加工作流的复杂性。我们的团队开发了一个名为 prebuild 的模块,它处理预构建的二进制文件,在 Node 中运行良好,但 Electron 工作流在安装后仍然需要自定义步骤,通常是 npm run rebuild。这很烦人。为了解决这个问题,我们最近转向了一种策略,将所有已编译的二进制版本的所有平台都捆绑在 npm tarball 中。这意味着 tarball 会变大(尽管这可以通过 .so 文件 - 共享库进行优化),这种方法避免了运行安装后脚本,也完全避免了 npm run rebuild 模式。这意味着 npm install 第一次就能正确地为 Electron 工作。

您最喜欢 Electron 的哪些方面?

API 似乎经过深思熟虑,它相对稳定,并且在跟上游 Node 发布方面做得很好,我们还能要求什么呢!

有什么对其他开发者有用的 Electron 技巧吗?

如果您使用原生模块,请尝试一下 prebuild

了解 Dat 发展的最佳方式是什么?

在 Twitter 上关注 @dat_project,或订阅我们的电子邮件通讯

每周项目:Ghost

·阅读时间:5分钟

本周我们与 Felix Rieseberg 进行了交谈,他是 Slack 的桌面工程师,也是 Ghost Desktop 的维护者,这是一款为 Ghost 发布平台开发的 Electron 客户端。


Ghost Desktop Screenshot

Ghost 是什么?

Ghost 是一个完全开源、可定制的平台,用于构建和运行现代在线出版物。我们为从 Zappos 到 Sky News 的博客、杂志和记者提供支持。

它与其他出版平台有何不同?

Ghost 成立于 2013 年 4 月,在一次非常成功的 Kickstarter 众筹活动后,旨在创建一个专注于专业出版的新平台。我们的使命是为世界各地的独立记者和作家创建最佳的开源工具,并对在线媒体的未来产生真正的影响。它提供更简单、更专注的体验:我们的编辑器专门围绕提供最佳写作体验而设计。

与经典之作 WordPress 相比,它提供了更简单、更流畅的体验——更容易设置和维护,开箱即用所有重要功能,并且速度大大加快。与其他在线平台相比,Ghost 赋予作者对其内容的完全所有权和控制权,允许完全定制,并使作者能够围绕其出版物建立业务。

Ghost 是一家营利性公司吗?

这一点对我们很重要:Ghost 是一个独立的非营利组织。我们构建用于现代新闻和博客的出版工具,因为我们相信言论自由很重要。我们的软件根据 免费开源许可证发布,我们的商业模式完全透明,我们的法律结构意味着我们所赚取的 100% 资金都将用于改进 Ghost。

Ghost Desktop 是什么?

Ghost Desktop 允许作者同时管理多个博客——并专注于他们的写作。像常用写作快捷方式这样的简单事情在浏览器中无法实现,但在我们的桌面应用程序中是可用的。它允许其他应用程序通过深层链接直接与博客通信。

Ghost for Journalism 是什么?

今年,我们非常高兴能将 Ghost 的整个 10 人全职团队投入到帮助发展三个独立出版物上,并为此提供 45,000 美元的资源。我们称之为 Ghost for Journalism

我们已经构建 Ghost 作为网络上独立出版商的下一个伟大平台大约三年半了,我们现在已经达到了一个非常有趣的转折点。我们开始这段旅程是为了创建一个简单、设计精良的博客平台,几乎任何人都可以使用。这始终是第一步。

长期来看,我们希望 Ghost 成为世界上最好的新闻的卓越平台,这意味着我们需要构建功能来吸引那些人。今年我们正在做出一个非常自觉的决定,只专注于这一点。

您为什么选择在 Electron 上构建 Ghost Desktop?

Ghost 在后端和前端都使用 JavaScript 和 Node.js,因此能够利用相同的技术和技能集使我们的团队能够更快地行动,构建更多,并最终提供更好的体验。此外,macOS、Windows 和 Linux 版本应用程序之间能够共享 95% 以上的代码,使我们能够专注于构建出色的核心用户体验,而无需为每个平台维护一个代码库。

在构建 Ghost Desktop 过程中您面临了哪些挑战?

拼写检查可能仍然是提供的最困难的服务之一——我们可以轻松地利用众多在线服务之一,但在保护用户隐私和自主性的同时,正确地对多语言文本进行拼写检查并非易事。

Electron 在哪些方面应该改进?

我们很乐意看到 Electron 将操作系统的原生拼写检查功能带到他们的应用程序中。我们梦想着一个世界,其中 <input> 字段获得与 NSTextView 相同的服务,但我们也清楚地意识到这有多么困难。

您最喜欢 Electron 的哪些方面?

JavaScript 以其庞大的生态系统而闻名,涉及无数的工具和框架——但它给我们带来的便利性是难以言喻的。使用 Electron 构建应用程序仅比构建网络应用程序“稍微”困难一点,这是一个了不起的成就。

Ghost 完成了吗?如果没有,接下来会是什么?

Ghost Desktop 也是一个正在进行中的项目——我们离完成还很远。我们已经讨论了一段时间,要为用户带来完整的离线模式,我们正在接近这个目标。其他值得注意的工作领域是与其他文本编辑应用程序(如 Word 或 Atom)的扩展和集成,最终允许人们使用他们喜欢的工具撰写文章。总的来说,一旦我们发布了离线模式功能,我们正在寻求与操作系统的更深层次集成。如果这听起来让您感兴趣,欢迎加入我们

您最喜欢的一些 Electron 应用程序有哪些?

我是 KapFelonyVisual Studio Code 的忠实粉丝。

👻

每周项目:Beaker Browser

·阅读时间:4分钟

本周我们与 Paul Frazee 进行了交流,他是 Beaker Browser 的创建者。Beaker 是一款实验性的点对点网络浏览器,它使用 Dat 协议从用户的设备托管站点。


Beaker 是什么?您为什么要创建它?

Beaker 是一款参与式浏览器。它是一款为独立黑客打造的浏览器。

Web 是闭源的。如果你想影响社交媒体的运作方式,你必须在 Facebook 或 Twitter 工作。对于搜索,Google。控制权掌握在公司手中,而不是用户自己。

有了 Beaker,我们有了一个新的 Web 协议:去中心化档案传输协议。“Dat。”它按需免费创建网站,然后从设备共享它们。无需服务器。这就是我们的创新。

Beakers Protocols

当你在 Beaker 中访问一个 Dat 站点时,你会下载文件。这个站点永远属于你。你可以保存它,克隆它,修改它,并免费分享你的新版本。这一切都是开源的。

所以,这就是它的核心:我们正在为开源网站打造一款浏览器。我们希望它成为一个社会黑客的工具包。

谁应该使用 Beaker?

黑客。模组开发者。创意人士。喜欢修修补补的人。

如何创建一个使用 Dat 的新项目?

我们有一个名为 bkr 的命令行工具,有点像 git + npm。这是创建网站的方法

$ cd ~/my-site
$ bkr init
$ echo "Hello, world!" > index.html
$ bkr publish

这是克隆网站的方法

$ bkr fork dat://0ff7d4c7644d0aa19914247dc5dbf502d6a02ea89a5145e7b178d57db00504cd/ ~/my-fork
$ cd ~/my-fork
$ echo "My fork has no regard for the previous index.html!" > index.html
$ bkr publish

这些网站随后将从您的浏览器托管。这有点像 BitTorrent;您在 P2P 网络中共享这些网站。

如果你想要一个 GUI,我们浏览器中内置了一些基本工具,但我们正在将这些工具推向用户空间。它们都将成为可修改的用户应用程序。

您为什么选择在 Electron 上构建 Beaker?

对于这个项目来说,这是显而易见的。如果我自己分叉 Chrome,我现在就会在写 C++ 代码了!没人想那么做。我了解 Web 技术栈,而且我可以用它快速工作。这是个不用动脑筋的选择。

说实话,我不知道没有 Electron 我是否能做到这一切。它是一款很棒的软件。

在构建 Beaker 过程中您面临了哪些挑战?

其中一半是在摸索工具,弄清楚我能做到什么程度。

制作浏览器本身相当容易。Electron 几乎就是一套用于制作浏览器的工具包。……除了浏览器标签页;那花了我很长时间才弄对。我最终崩溃了,学习了如何使用 SVG。它看起来好多了,但我尝试了 3 或 4 次迭代才把它做好。

Electron 在哪些方面应该改进?

如果我能把开发者工具停靠在 webview 内部就太棒了。

Beaker 的下一步是什么?

Dat 站点的安全 DNS 名称。一个社会化可配置的 URL 方案,称为“应用方案”。更多 Dat API。

对于可能对项目贡献感兴趣的人,Beaker 在哪些方面需要帮助?

我们有很多未解决的问题。不要害怕联系我。freenode 上的 #beakerbrowser。我们有一个贡献者页面,我们会把你加进去。如果你来奥斯汀,我请你喝啤酒。

有什么对其他开发者有用的 Electron 技巧吗?

  1. 利用现有的构建工具。相信我,你不会想自己去解决这些问题。使用 electron-builder。使用样板仓库。
  2. 如果你需要在 Electron 仓库中提交问题,请多花点功夫让它容易复现。你会更快得到回复,团队也会很感激。更好的是,尝试自己修复它。实际上,看看内部结构是很有趣的。
  3. 至少通读一遍所有的指南和高级文档。
  4. 别再造浏览器了,市场已经饱和了。

每周项目:Kap

·阅读时间:7分钟

Electron 社区正在快速发展,人们以惊人的速度创建功能强大的新应用和工具。为了庆祝这种创造性势头并让社区了解这些新项目,我们决定启动一个每周博客系列,介绍值得注意的 Electron 相关项目。


这篇文章是本系列的第一篇,介绍了 Kap,一款由 Wulkano(一个由自由设计师和开发者组成的地理分布式团队)构建的开源屏幕录制应用。

Kap Screencast

Kap 是什么?

Kap 是一款开源的屏幕录制工具,主要为设计师和开发者设计,以便轻松捕捉他们的工作。人们用它来分享动画原型、记录 bug、制作有趣的 GIF 以及介于两者之间的所有内容。

我们看到各年龄段和背景的人们在教育环境、截屏视频、教程中使用它……不胜枚举。甚至用于创建生产资产!我们对我们这个小小的副项目受到如此好评感到非常惊讶。

你为什么要建造它?

这是个很好的问题,市面上又不缺屏幕录像软件!我们觉得替代品要么太复杂,要么太昂贵,要么太受限。没有什么感觉“恰到好处”能满足我们日常需求。我们也认为,当我们使用的工具是开源的时候,那真是太棒了,这样每个人都可以帮助塑造它们。构建 Kap 最终与我们没有做的事情同样重要。这一切都在细节中,是微小改进的积累,这些改进构成了我们想要使用的工具的轮廓。

然而,也许最重要的是,Kap 已经成为我们放下烦恼,只是为自己和像我们这样的人愉快地构建东西的地方。创造一个你可以尽情发泄、尝试新事物并享受你的手艺的环境是如此重要。没有要求,没有压力,没有期望。设计师和开发人员应该做副项目吗?是的,他们应该。

您为什么选择在 Electron 上构建 Kap?

原因有很多

  • Web 技术
  • 团队大部分成员是 Web 开发者
  • 我们投入了 JavaScript
  • 它为更多人贡献打开了大门
  • Electron 本身是开源的
  • node_modules 的强大和易于维护的模块化
  • 跨平台可能性

我们认为应用程序的未来在于浏览器,但我们还没有完全达到那个阶段。Electron 是迈向那个未来的重要一步。它不仅使应用程序本身更易于访问,也使其构建代码更易于访问。一个有趣的想法是,想象一下未来操作系统就是浏览器,而标签页本质上就是 Electron 应用程序。

此外,作为主要的 Web 开发者,我们非常喜欢 JavaScript 的同构性质,即你可以在客户端、服务器以及现在在桌面上运行 JS。使用 Web 技术(HTML、CSS 和 JS),许多事情比原生简单得多:更快的原型开发,更少的代码,flexbox > 自动布局(macOS/iOS)。

在构建 Kap 过程中您面临了哪些挑战?

使用 Electron 可用的资源来录制屏幕是最大的挑战。它们根本无法满足我们的性能要求,这将导致我们的项目失败。虽然这并非 Electron 本身的错,但原生开发和使用网络技术构建桌面应用程序之间仍然存在差距。

我们花费了大量时间试图解决 getUserMedia API 性能不佳的问题,这个问题源于 Chromium。我们制作 Kap 的主要目标之一是使用 Web 技术构建整个应用程序。在尝试了一切可能的方法来使其工作(最低要求是在 Retina 屏幕上达到 30 FPS)之后,我们最终不得不寻找另一种解决方案。

我在仓库里看到一些 Swift 代码。那是关于什么的?

被迫寻找 getUserMedia 的替代方案,我们开始尝试 ffmpeg。除了是音频和视频转换的最佳工具之一外,它还具有在几乎任何操作系统中录制屏幕的功能,我们能够录制清晰的视频,满足我们在 Retina 屏幕上 30 FPS 的最低要求。问题是?性能“😩”,CPU 使用率飙升。于是我们回到设计阶段,讨论了我们的选择,并意识到我们必须做出妥协。这导致了 Aperture 的诞生,这是我们自己用 Swift 为 macOS 编写的屏幕录制库。

Electron 在哪些方面应该改进?

我们都知道 Electron 应用程序可能会占用大量内存,但这同样是 Chromium 的问题。这是它工作方式的一部分,而且它确实取决于你正在运行什么,例如 Kap 和 Hyper 通常使用不到 100MB 的内存。

我们认为最大的改进领域之一是有效载荷,特别是 Electron 如何分发 Chromium。一个想法是拥有一个共享的 Electron 核心,并让应用程序安装程序检查它是否已存在于系统上。

创建跨平台 Electron 应用的体验可以更好。现在,不同平台之间存在太多不一致、平台特定的 API 和缺失功能,导致你的代码库充斥着 if-else 语句。例如,vibrancy 仅在 macOS 上支持,自动更新器在 macOS 和 Windows 上工作方式不同,并且在 Linux 上甚至不受支持。透明度在 Linux 上时好时坏,通常是坏。

调用原生系统 API 也应该更容易。Electron 附带了一套非常好的 API,但有时你需要它不提供的功能。创建原生 Node.js 插件是一种选择,但使用起来很痛苦。理想情况下,Electron 会附带一个好的 FFI API,就像 fastcall。这将使我们能够用 JavaScript 编写 Swift 部分。

您最喜欢 Electron 的哪些方面?

我们最喜欢的是,任何具有 Web 开发知识的人都可以构建和贡献多平台原生体验。更不用说在其上开发的便捷和乐趣,优秀的文档以及蓬勃发展的生态系统。

从前端的角度来看,构建 Kap 的感觉与使用浏览器 API 构建一个简单的网站没有什么不同。Electron 在使应用程序开发类似于(基本上相同)Web 开发方面做得非常出色。实际上,它非常简单,以至于我们不需要框架或类似工具来帮助我们,只需干净且模块化的 JS 和 CSS。

我们也是构建团队的忠实粉丝,他们对项目的奉献和支持,以及他们所维护的活跃友好的社区。拥抱你们所有人!

Kap 的下一步是什么?

我们的下一步是审查应用程序,为 2.0.0 版本里程碑做准备,其中包括 React 重写以及对插件的支持,允许开发者扩展 Kap 的功能!我们邀请大家关注项目并在我们的 GitHub 仓库上贡献。我们正在倾听,并希望听到尽可能多的反馈,告诉我们如何让 Kap 成为您最好的工具

Wulkano 是什么?

Wulkano 是一家设计工作室和数字集体,一支由远程技术专家组成的团队,他们喜欢在客户项目和自己的项目上共同努力。我们是一个分散但紧密联系的团队,来自不同的地方和背景,分享知识、想法、经验,但最重要的是,在我们的虚拟办公室(恰好是基于 Electron 的 Slack!)中分享有趣的 GIF 和表情包。

有什么对其他开发者有用的 Electron 技巧吗?

利用并参与到这个棒极了的社区中,查看Awesome Electron,看看示例,并充分利用优秀的文档

2016 年 8 月:新应用

·阅读时间:3分钟

以下是八月份添加到网站的新 Electron 应用程序。


该网站通过社区的 拉取请求 更新了新的应用程序聚会。您可以关注该仓库以获取新添加的通知,或者如果您对网站的所有更改不感兴趣,可以订阅博客 RSS 源

如果您创建了 Electron 应用程序或举办了聚会,请提交 拉取请求 将其添加到网站,它将出现在下一期总结中。

新应用

Code RPGifyRPG风格的编码应用程序
PamFax一款用于发送和接收传真的跨平台应用程序
BlankUpMarkdown 编辑器,清晰度 +1
Rambox免费开源的消息和邮件应用,将常见的网页应用整合到一起
Gordie您卡牌收藏的最佳应用程序
Ionic Creator更快地构建出色的移动应用程序
TwitchAlerts用精美的提醒和通知让你的观众开心
Museeks一款简洁、干净且跨平台的音乐播放器
SeaPigMarkdown 到 HTML 转换器
GroupMe非官方 GroupMe 应用
Moeditor您的通用 markdown 编辑器
SoundnodeSoundnode App 是桌面版 Soundcloud
QMUI WebQMUI Web Desktop 是一款用于管理基于 QMUI Web Framework 的项目的应用程序
Svgsus整理、清理和转换您的 SVG
Ramme非官方 Instagram 桌面应用
InsomniaREST API 客户端
Correo适用于 Windows、macOS 和 Linux 的菜单栏/任务栏 Gmail 应用
KongDashKong Admin API 桌面客户端
Translation EditorINTL ICU 消息的翻译文件编辑器(请参阅 formatjsio)
5EClient5EPlay CSGO 客户端
Theme Juice本地 WordPress 开发变得简单