跳到主要内容

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

重点介绍 Electron 的精选应用案例

查看所有标签

2023年生态系统回顾

·阅读时长:5 分钟

回顾 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 停止支持用于 macOS 公证的旧版 altool,此版本已将其从 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.jsElectron Forge 现在支持 ESM 格式的 forge.config.js 文件。(附注:敬请期待 Electron 28 中对 ESM 入口点的支持。)
  • Makers 现在并行运行在 Electron Forge 6 中,Makers 基于 ✨ 旧有 ✨ 原因按顺序运行。从那时起,我们测试了 Make 步骤的并行化,没有产生不利副作用,因此当为同一平台构建多个目标时,您应该会看到速度提升!
感谢!

🙇 特别感谢 mahnunchik 为 Forge 配置中的 GCS Publisher 和 ESM 支持所做的贡献!

更好的静态存储自动更新

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

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

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

另一方面,静态存储方法一直可行,但在 Electron 内部没有文档记录,并且在 Electron 工具包中的支持很差。

通过 @MarshallOfSound 出色的工作,无服务器自动应用更新的更新流程得到了极大的简化:

  • Electron Forge 的 Zip 和 Squirrel.Windows makers 现在可以配置为输出与 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 将继续将其所有 monorepo 包发布在 @electron-forge/ 命名空间下。
寻求 Star

⭐ 在此过程中,我们还意外地将 electron/packager 仓库设为私有,这不幸地导致我们的 GitHub Star 计数被清零(清零前超过 9000)。如果您是 Packager 的活跃用户,我们将不胜感激您的 ⭐ Star ⭐!

介绍 @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 方式使用。

请试用并向我们在 该仓库的 issues 跟踪器 中提供反馈!

下一步计划?

下个月我们将进入一年一度的十二月静默期。在此期间,我们将思考如何在 2024 年让 Electron 开发体验更上一层楼。

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

本周项目:Jasper

·阅读时长:5 分钟

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


你好!你是谁?

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

什么是 Jasper?

Jasper 是一个灵活强大的 GitHub issue 阅读器。它支持 github.com 和 GitHub Enterprise 上的 issue 和 pull request。

Jasper App Screenshot

你为什么创建它?

当人们在工作或 OSS(开源软件)活动中使用 GitHub 时,他们每天往往会收到许多通知。作为订阅通知的一种方式,GitHub 提供了电子邮件和网页通知。我使用这些方法几年了,但我遇到了以下问题:

  • 我很容易忽略那些提到我、我评论过或我正在关注的 issue。
  • 我把一些 issue 放在脑海中,想着稍后查看,但有时会忘记它们。
  • 为了不忘记 issue,我在浏览器中打开了许多标签页。
  • 很难查看所有与我相关的 issue。
  • 很难掌握我团队的所有活动。

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

谁在使用 Jasper?

正在使用 GitHub 的几家公司的开发者、设计师和管理者都在使用 Jasper。当然,一些 OSS 开发者也在使用它。GitHub 的一些人也在使用它!

Jasper 如何工作?

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

Jasper Start Screen

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

repo:electron/electron assignee:zeke is:issue

Jasper Start Screen 2

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

Jasper Start Screen 3

我们可以用流做什么?

我将介绍流可以使用哪些条件。

用户和团队

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

involves 意味着 mentionauthorassigneecommenter

仓库和组织

Issue
repo:cat/jump repo:dog/runcat/jumpdog/run 仓库中的 Issue
org:electron user:cat user:dogelectroncatdog 中的 Issue

orguser 相同

属性

Issue
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1cat/jump 中关联到 v1.0.0v1.0.1 的 Issue
repo:cat/jump label:bug label:blockercat/jump 中同时带有 bug blocker 标签的 Issue
electron OR atomshell包含 electronatomshell 的 Issue

审查状态

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

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

Jasper 还具有未读 issue 管理、未读评论管理、标记星标、通知更新、过滤 issue、键盘快捷键等功能。

Jasper 是付费产品吗?价格是多少?

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

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

我喜欢 Electron 的以下方面:

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

这些特性使得桌面应用的开发快速而简单。太棒了!如果您有任何产品想法,务必考虑使用 Electron。

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

我花了很长时间才弄清楚“流”的概念。起初我考虑使用 GitHub 的通知 API。然而,我注意到它不支持某些用例。之后我考虑在通知 API 的基础上,使用Issue APIPull Request API。但这仍然未能达到我想要的效果。然后,在考虑了各种方法后,我意识到轮询 GitHub 的搜索 API 将提供最大的灵活性。达到这一步花了大约一个月的实验,然后我在两天内实现了带有流概念的 Jasper 原型。

注意:轮询最多限制为每 10 秒一次。这对于 GitHub API 的限制来说是完全可以接受的。

接下来有什么计划?

我计划开发以下功能:

  • 过滤流:一个流包含一些过滤流,用于过滤流中的 issue。这类似于 SQL 中的视图。
  • 多账户支持:您将能够同时使用 github.com 和 GHE
  • 性能改进:目前在 WebView 中加载 issue 的速度比普通浏览器慢。

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

本周项目:WebTorrent

·阅读时长:9 分钟

本周,我们采访了 @feross@dcposch,与他们聊了聊 WebTorrent,这是一个由网络驱动的 torrent 客户端,它将用户连接在一起,形成一个分布式、去中心化的浏览器到浏览器网络。


什么是 WebTorrent?

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

使用开放网络标准,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 peers”(在网络浏览器中运行的 torrent peer)通过添加数百万新 peer,并将其传播到数十种新用例,从而增强了 BitTorrent 网络。WebTorrent 尽可能紧密地遵循 BitTorrent 规范,以便现有 BitTorrent 客户端轻松添加对 WebTorrent 的支持。

一些 torrent 应用,如 Vuze,已经支持 web peers,但我们不想等待其他应用也添加支持。所以基本上,WebTorrent Desktop 是我们加速 WebTorrent 协议普及的方式。通过制作一个人们真正喜欢使用的优秀 torrent 应用,我们增加了网络中可以与 web peers(即网站上的用户)共享 torrent 文件的 peer 数量。

除了人们已经知道的用途之外,torrents 还有哪些有趣的用例?

WebTorrent 最激动人心的用途之一是 peer 辅助交付。像维基百科互联网档案库这样的非营利项目可以通过让访问者贡献力量来降低带宽和托管成本。流行内容可以快速、廉价地通过浏览器到浏览器的方式提供。不常访问的内容可以从源服务器通过 HTTP 可靠地提供。

互联网档案库实际上已经更新了他们的 torrent 文件,以便它们能很好地与 WebTorrent 配合工作。因此,如果您想在您的网站上嵌入互联网档案库的内容,您可以通过一种方式来降低档案库的托管成本,从而让他们能将更多的资金投入到实际的网络存档工作中!

还有令人兴奋的商业用例,从 CDN 到通过 P2P 分发应用。

你最喜欢哪些使用 WebTorrent 的项目?

gaia app screenshot

毫无疑问,用 WebTorrent 构建的最酷的东西可能是盖亚 3D 星图。这是一个流畅的银河系 3D 交互式模拟。数据直接从 torrent 加载到您的浏览器中。飞越我们的星系,意识到人类与浩瀚宇宙相比是多么渺小,这令人敬畏。

您可以在《Torrenting The Galaxy》这篇文章中了解它的制作过程,作者 Charlie Hoey 在其中解释了他是如何使用 WebGL 和 WebTorrent 构建这个星图的。

brave logo

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

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

Brave 的联合创始人之一实际上是 Brendan Eich,他是 JavaScript 的创建者,也就是我们编写 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,特别是 require('net')require('dgram') 用于支持 TCP 和 UDP 套接字。

基本上,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 做了一个题为 "Real world Electron: Building Cross-platform desktop apps with JavaScript" 的演讲,其中包含发布一款精良 Electron 应用的有用技巧。这个演讲对于您已经拥有一个基本可用的应用并正在尝试将其提升到更高水平的精细度和专业性阶段特别有用。

观看这里:

幻灯片这里:

DC,另一位 WebTorrent 贡献者,写了一份您可以做的事情清单,让您的应用感觉更精致、更原生。它附带代码示例,涵盖了 macOS dock 集成、拖放、桌面通知以及确保您的应用快速加载等方面。

本周项目:Voltra

·6分钟阅读

本周我们采访了Aprile ElcichPaolo Fragomeni,聊了聊由 Electron 驱动的音乐播放器 Voltra。


什么是 Voltra?

Voltra 是一款为想要拥有自己音乐的人打造的音乐播放器。它也是一个商店,您可以根据您已有的音乐发现和购买新音乐。它无广告,支持跨平台桌面和移动设备。它也不会监视您。

voltra-artistview

Voltra 是为谁设计的?

任何听音乐的人。

是什么促使您创建 Voltra?

广播一直占有很大的听众份额。它正在从电波转移到互联网。现在您可以按需租用音乐——这是一场广播复兴!因此涌现出许多新产品和服务,但流媒体广播仍然让别人控制着您的音乐以及您体验音乐的方式。

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

有免费版本吗?

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

由于该应用是免费的,我们可能会稍后将其开源。目前我们没有足够的精力来管理它。我们对于功能和我们想要发展的方向也有非常具体的想法。我们有一个活跃的 Beta 社区,我们非常重视他们的反馈。

你们如何盈利?

我们有高级功能!

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

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

Voltra 有何不同?

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

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

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

在设计 Voltra 时,我们考虑了原生应用和 Web 的 UI 规范,我们也花了很多时间思考可以移除什么。我们有一个活跃的私有 Beta 小组,他们在过去几个月里给了我们关键的反馈。

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

voltra-albumview

我们还确保不干扰用户的文件。我们使用文件监视,这样您就可以把文件放在任何您想放的地方,我们不会替您重命名或移动文件。我们使用嵌入式数据库来跟踪被监视目录的状态,这样即使进程没有运行,我们也能跟踪新增的内容。

构建 Voltra 时遇到过哪些挑战?

我们花了很多时间专注于性能。我们最初使用了框架,但后来转向了纯 JavaScript。根据我们的经验,它们提供的通用抽象带来的性能损失和额外的开销大于其好处。

我们目前能很好地处理非常大的音乐收藏。大收藏意味着可能有数万张图片!直接从渲染进程访问 Node.js 的文件系统模块使得根据 DOM 事件非常快速地延迟加载和卸载大量图片变得非常容易。

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

您为什么选择基于 Electron 构建 Voltra?

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

我们实际上是先用 Swift 构建了一个原生应用。我们发现的主要问题是我们正在重复发明很多东西。Web 拥有世界上最大的开源生态系统。所以我们很快就转向了 Electron。

此外,最重要的是,使用 Electron 您只需开发一次,它就能在所有主要平台 Just Work™。这并非绝对保证,但为每个平台原生编码的成本肯定超过 Electron 引入的任何其他成本。

您最喜欢 Electron 的哪些方面?

事半功倍(GTD!):将 Node.js 的网络堆栈和 Chromium 的展示层打包在一起是完成工作的秘诀。

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

社区:有一个组织严密的社区,他们非常擅长沟通!我们很高兴能得到这样的支持来进行开发。

Electron 在哪些方面可以改进?

我们希望看到 Electron 推荐一个单一的打包工具。打包工具对 Electron 的重要性就像包管理器对 Node 一样。用户领域有多个打包工具,每个都有有趣的功能,但每个都有 bug。社区的共识将有助于引导贡献者们投入的精力。

接下来有什么计划?

我们目前正在开发一个移动应用,并与艺术家和唱片公司合作,将他们的音乐添加到 Voltra 商店。嘿!如果您是艺术家或唱片公司,立即注册!我们计划在歌曲数量达到 1000 万首时开放商店。

本周项目:WordPress Desktop

·4分钟阅读

本周我们采访了 Automattic 的同事,聊了聊 WordPress Desktop,一个用于管理 WordPress 内容的开源桌面客户端。


WordPress Apps

大家都知道 WordPress,但 WordPress Desktop 是什么?

WordPress.com 桌面应用提供无缝的跨平台体验,让您能够专注于您的内容和设计,而不会受到浏览器标签页的干扰——或让您的站点被搁置但仍可访问。结合我们的浏览器支持和移动应用,您可以在任何地方、以任何有助于完成工作的方式构建您的站点。

为什么构建一个用于管理 WordPress 站点的桌面应用?它不能完全基于 Web 吗?

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

您为什么选择基于 Electron 构建 WordPress Desktop?

在 2015 年底,我们以 Calypso 的形式重建了 WordPress.com 的大部分内容,Calypso 是一个使用 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 上找到。

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

如果这些听起来让您感兴趣,我们很欢迎您的加入

有哪些可能对其他开发者有用的 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

这会创建一个链接,你可以用它将该文件夹发送给其他人——没有中心服务器或第三方可以访问你的数据。与 BitTorrent 不同的是,也无法窥探是谁在分享什么(更多详情请参阅 Dat Paper 草稿)。

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

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

您能分享一些很棒的使用案例吗?

DataRefuge + Project Svalbard

我们正在研究一个代号为Project Svalbard 的项目,它与DataRefuge 有关,DataRefuge 是一个致力于备份面临消失风险的政府气候数据的小组。Svalbard 以北极的斯瓦尔巴全球种子库命名,该种子库拥有一个大型地下植物 DNA 备份库。我们的版本是一个大型版本控制的公共科学数据集集合。一旦我们了解并信任了元数据,我们就可以构建其他很棒的项目,例如去中心化志愿者数据存储网络

California Civic Data Coalition

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

Electron 更新

这一个还没有具体实现,但我们认为一个有趣的使用案例是将编译好的 Electron 应用放入 Dat 存储库中,然后在 Electron 中使用 Dat 客户端拉取构建好的应用二进制文件的最新增量,以节省下载时间,同时也减少服务器的带宽成本。

谁应该使用 Dat Desktop?

任何想要通过点对点网络共享和更新数据的人。数据科学家、开放数据黑客、研究人员、开发者。如果任何人有我们尚未想到的很棒的使用案例,我们非常乐于接受反馈。您可以在我们的Gitter 聊天室提问!

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

用户账户和元数据发布。我们正在开发一个将在datproject.org 部署的 Dat 注册中心 Web 应用,它基本上将是“数据集的 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 在哪些方面需要改进?

我们认为最大的痛点是原生模块。必须使用 npm 为 Electron 重建模块增加了工作流程的复杂性。我们的团队开发了一个名为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 Desktop 是基于 Electron 的 Ghost 发布平台的客户端。


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?

今年我们非常兴奋地将我们的整个 10 人全职 Ghost 团队用于帮助三个独立出版物发展,并为其努力提供 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 构建应用程序只比构建一个 Web 应用程序稍微难一些,这是一个了不起的壮举。

Ghost 完成了吗?如果还没,接下来有什么计划?

Ghost Desktop 也是一个持续进行中的项目——我们离完成还很远。我们一直在讨论为用户带来完整的离线模式,而且我们已经相当接近了。其他重要的工作领域包括扩展并与其他文本编辑应用程序(如 Word 或 Atom)集成,最终允许人们使用他们喜欢的工具撰写文章。总的来说,一旦我们推出了离线模式功能,我们就会寻求与操作系统的更深度集成。如果这听起来让你感兴趣,加入我们吧

你最喜欢的 Electron 应用有哪些?

我是 KapFelonyVisual Studio Code 的忠实粉丝。

👻

本周项目:Beaker Browser

·4分钟阅读

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


什么是 Beaker,你为什么创建它?

Beaker 是一个参与式浏览器。它是一个为独立黑客(indie hackers)设计的浏览器。

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

通过 Beaker,我们拥有了一个新的 Web 协议:去中心化存档传输(Decentralized Archive Transport),简称“Dat”。它可以按需免费创建网站,然后从设备分享出去。不需要服务器。这就是我们的创新。

Beakers Protocols

当你访问 Beaker 中的 Dat 网站时,你会下载文件。该网站永远属于你。你可以保存、分叉、修改,并免费分享你的新版本。一切都是开源的。

所以这就是 Beaker 的意义所在:我们正在为开源网站构建一个浏览器。我们希望它成为一个用于社会黑客行为(social hacking)的工具包。

谁应该使用 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;你在点对点网络中分享网站。

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

为什么选择在 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 > auto-layout (macOS/iOS)。

构建 Kap 时遇到过哪些挑战?

使用 Electron 提供的资源进行屏幕录制是最大的挑战。它们的性能不足以满足我们的要求,在我们看来会导致项目失败。虽然这并非 Electron 本身的过错,但在原生开发和使用 Web 技术构建桌面应用程序之间仍然存在差距。

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

我在仓库里看到了一些 Swift 代码。这是怎么回事?

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

Electron 在哪些方面需要改进?

我们都知道 Electron 应用程序可能会比较占用内存,但再次强调,这实际上是 Chromium 的问题。这是它的工作方式的一部分,而且很大程度上取决于你运行什么,例如 Kap 和 Hyper 通常使用的内存不到 100MB。

我们认为最大的改进领域之一是有效载荷(payload),特别是 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。

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

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用于发送和接收传真的跨平台应用
BlankUp清晰度 +1 的 Markdown 编辑器
Rambox免费开源的消息和邮件应用,将常用的网络应用整合在一起
Gordie管理你的卡牌收藏的最佳应用
Ionic Creator更快构建出色的移动应用
TwitchAlerts用精美的提醒和通知让你的观众满意
Museeks一款简单、干净的跨平台音乐播放器
SeaPigMarkdown 转 HTML 转换器
GroupMe非官方 GroupMe 应用
Moeditor你的全能 Markdown 编辑器
SoundnodeSoundnode 应用是桌面的 Soundcloud
QMUI WebQMUI Web Desktop 是一个基于 QMUI Web 框架管理项目的应用程序
Svgsus整理、清理和转换你的 SVG
Ramme非官方 Instagram 桌面应用
InsomniaREST API 客户端
Correo适用于 Windows、macOS 和 Linux 的 Gmail 菜单栏/任务栏应用
KongDashKong Admin API 桌面客户端
翻译编辑器INTL ICU 消息翻译文件编辑器 (参阅 formatjsio)
5EClient5EPlay CSGO 客户端
Theme Juice让本地 WordPress 开发更简单