跳转到主要内容

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-01 起,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.js 支持Electron Forge 现在支持 ESM forge.config.js 文件。(顺便说一句,敬请期待 Electron 28 中的 ESM 入口点支持。)
  • 构建器现在并行运行在 Electron Forge 6 中,构建器是顺序运行的,这是出于 ✨ 历史 ✨ 原因。此后,我们测试了并行化构建步骤,没有发现不良副作用,因此在为同一平台构建多个目标时,您应该会看到速度的提升!
谢谢!

🙇 非常感谢 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 maker 现在可以配置为输出与 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/ 命名空间下。
星标关注

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

介绍 @electron/windows-sign

从 2023-06-01 开始,行业标准开始要求将 Windows 代码签名证书的密钥存储在符合 FIPS 标准的硬件上。

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

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

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

请试用它,并在仓库的问题跟踪器中给我们反馈!

下一步是什么?

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

你希望我们接下来做些什么吗?告诉我们吧!

本周项目:Jasper

·6 分钟阅读

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


你好!你是谁?

我是 Ryo Maruyama,一名在日本工作的软件开发人员。我开发 JasperESDoc

Jasper 是什么?

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

Jasper App Screenshot

你为什么要做这个?

当人们在工作或 OSS 活动中使用 GitHub 时,他们倾向于每天收到大量通知。作为订阅通知的一种方式,GitHub 提供电子邮件和网页通知。我使用了几年,但遇到了以下问题

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

我花了大量时间和精力来防止这些问题,所以我决定创建一个 GitHub issue 阅读器来高效地解决这些问题,并开始开发 Jasper。

谁在使用 Jasper?

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

Jasper 如何工作?

一旦 Jasper 配置完成,就会出现以下屏幕。从左到右,你可以看到“流列表”、“issues 列表”和“issue 正文”。

Jasper Start Screen

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

repo:electron/electron assignee:zeke is:issue

Jasper Start Screen 2

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

Jasper Start Screen 3

我们可以用流做什么?

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

用户和团队

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

involves 意味着 mentionauthorassigneecommenter

仓库和组织

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

orguser 相同

属性

Issues
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1附加到 cat/jump 中的 v1.0.0v1.0.1 的 Issues
repo:cat/jump label:bug label:blocker附加了 cat/jump 中的 bug **和** blocker 的 Issues
electron OR atomshell包含 electronatomshell 的 Issues

审查状态

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

正如你可能注意到的,流可以使用 GitHub 的搜索查询。有关如何使用流和搜索查询的更多信息,请参阅以下 URL:

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

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

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

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

我喜欢 Electron 的以下方面:

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

这些功能使得桌面应用程序的开发快速而简单。这太棒了!如果你有任何产品想法,都应该考虑使用 Electron。

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

我花了很长时间才理解“流”这个概念。起初,我考虑使用 GitHub 的通知 API。然而,我注意到它并不支持某些用例。在那之后,我考虑了使用 Issues API Pull Requests API,以及通知 API。但这从未成为我想要的。然后,在思考各种方法时,我意识到轮询 GitHub 的搜索 API 将提供最大的灵活性。花了大约一个月的时间进行实验,我才达到这一点,然后我两天就用流的概念实现了 Jasper 的原型。

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

下一步是什么?

我计划开发以下功能:

  • 过滤后的流:一个流有一些过滤后的流,用于过滤流中的 issues。它就像 SQL 中的视图。
  • 多账户:你可以同时使用 github.com 和 GHE。
  • 提高性能:目前在 WebView 中加载 issue 的速度比普通浏览器慢。

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

本周项目:WebTorrent

·阅读时间 10 分钟

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


什么是 WebTorrent?

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

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

您可以在此处观看 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 peers)通过添加数百万个新 peer 来增强 BitTorrent 网络,并将 BitTorrent 扩展到数十个新的用例。WebTorrent 尽可能遵循 BitTorrent 规范,以便现有 BitTorrent 客户端可以轻松添加对 WebTorrent 的支持。

Vuze 这样的某些 torrent 应用已经支持 Web peers,但我们不想等待其他人添加支持。所以基本上,WebTorrent Desktop 是我们加快 WebTorrent 协议采用速度的方法。通过创建一个人们真正想使用的很棒的 torrent 应用,我们增加了网络中能够与 Web peers(即网站上的用户)共享 torrent 的 peers 数量。

除了人们已经知道可以做什么之外,torrent 还有哪些有趣的用例?

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

Internet Archive 实际上已经更新了他们的 torrent 文件,因此它们与 WebTorrent 配合得很好。所以,如果您想在您的网站上嵌入 Internet Archive 内容,您可以以一种降低 Archive 托管成本的方式来做,让他们可以将更多资金用于实际归档网络!

从 CDN 到 P2P 应用交付,还有令人兴奋的商业用例。

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

gaia app screenshot

迄今为止,用 WebTorrent 构建的最酷的东西可能是 Gaia 3D Star Map。它是一个光滑的 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 的创建者,而 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 引擎(例如验证从 peer 收到的 torrent 片段)进行密集 CPU 活动时,应用程序变慢,这是可以预料的。

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

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

Electron 应该在哪些方面进行改进?

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

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

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

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

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

WebTorrent Desktop 的贡献者之一 Feross 在 NodeConf Argentina 上发表了题为“真实世界的 Electron:使用 JavaScript 构建跨平台桌面应用”的演讲,其中包含有关发布高质量 Electron 应用的有用技巧。如果您正处于拥有一个基本可用的应用程序并试图将其提升到一个新的水平的阶段,这次演讲尤其有用。

在此处观看:

在此处查看幻灯片:

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

本周项目:Voltra

·6 分钟阅读

本周,我们采访了 Aprile ElcichPaolo Fragomeni,讨论了 Voltra,一个 Electron 驱动的音乐播放器。


Voltra 是什么?

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

voltra-artistview

Voltra 是为谁准备的?

任何听音乐的人。

是什么促使您创建 Voltra?

广播一直拥有大量的听众。它正在离开无线电波,转向互联网。现在您可以按需租用音乐——这是广播的复兴!这催生了许多新产品和服务,但流媒体广播仍然让别人控制您的音乐和您的体验。

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

有免费版本吗?

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

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

你们如何盈利?

我们有高级功能!

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

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

Voltra 有何不同?

设计和可用性对我们来说极其重要。我们希望为听众提供无干扰的听觉体验!市面上有一些有趣的音乐播放器和商店。但许多产品比它们的创建者想象的要复杂且难用。我们希望让 Voltra 尽可能多的人能够使用。

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

您在设计和技术方面做出了哪些决定?

在设计 Voltra 时,我们考虑了原生应用程序和 Web 的 UI 约定,并且还仔细考虑了我们可以去除的内容。我们有一个活跃的私人 beta 小组,他们在过去几个月里给了我们重要的反馈。

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

voltra-albumview

我们还确保不干扰人们的文件。我们使用文件监视,所以您可以将文件放在任何您想放的地方,我们不会重命名或移动它们。我们有一个嵌入式数据库来跟踪已监视目录的状态,以便在进程未运行时也能跟踪新内容。

在构建 Voltra 的过程中,您遇到了哪些挑战?

我们花费了大量时间专注于性能。我们从框架开始,然后转向 vanilla Javascript。根据我们的经验,它们提供的通用抽象 outweighs 了它们引入的性能损失和仪式感。

到目前为止,我们能够很好地处理非常大的收藏。大型收藏意味着可能有多达数万张图片!Node.js 的文件系统模块直接可从渲染器进程访问,这使得根据 DOM 事件轻松地延迟加载和卸载大量图像变得非常容易。

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

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

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

我们实际上是从使用 Swift 构建原生应用程序开始的。我们发现的主要问题是我们一直在重复造轮子。Web 拥有世界上最大的开源生态系统。所以我们很快就切换到了 Electron。

另外,最重要的是,使用 Electron,您只需开发一次,它就应该能在所有主要平台上正常工作™。这并非总能保证,但为每个平台原生编码的成本肯定 outweighs 了 Electron 带来的任何其他成本。

您最喜欢 Electron 的哪些方面?

高效!:将 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 Desktop 应用提供无缝的跨平台体验,让您可以专注于您的内容和设计,而无需浏览器标签的干扰——或者让您的网站保持在旁边但可访问。结合我们的浏览器支持和移动应用,您可以在任何地方构建您的网站,以任何有助于您完成工作的方式。

为什么要为管理 WordPress 网站构建桌面应用程序?难道不能全部基于 Web 吗?

它实际上使用的是与您在浏览器中访问 WordPress.com 时完全相同的技术。但是,所有内容都本地托管,因此加载时间很短。凭借 Dock 中的应用程序、通知等原生功能,您可以真正专注于您的 WordPress 网站和博客。

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

2015 年底,我们以 Calypso(一个使用 React 的开源现代 JavaScript 应用)的形式重建了 WordPress.com 的大部分内容。我们开始关注 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 桌面版接下来有什么计划?

我们的模式的好处是,桌面应用程序可以从任何新的 Calypso 功能中受益——它在不断改进。我们希望能够为该应用程序添加更多功能,例如离线支持,这将真正将应用程序带入原生领域,以及更好的系统通知。

Automattic 的其他团队是否在开发其他 Electron 应用?

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

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

如果这一切听起来很有趣,我们很想听到您的声音

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

发布签名桌面软件的过程对我们来说相对较新,尤其是对于 Windows。我们为Code Signing a Windows App 撰写了一篇文章,其中包含该过程以及我们为了正确完成它而经历的一些障碍。

本周项目: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 Paper 草稿)。

现在我们知道 Dat 是什么了。Dat Desktop 在其中扮演什么角色?

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

可以分享一些很酷的用例吗?

DataRefuge + Project Svalbard

我们正在开发一个代号为 Project Svalbard 的项目,该项目与DataRefuge 相关,DataRefuge 是一个致力于备份可能消失的政府气候数据的组织。Svalbard 以北极的斯瓦尔巴全球种子库命名,该种子库拥有一个大型地下植物 DNA 备份图书馆。我们的版本是一个大型的、受控的公共科学数据集集合。一旦我们知道并信任元数据,我们就可以构建其他很酷的项目,例如分布式志愿者数据存储网络

加州公民数据联盟

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

Electron 更新

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

谁应该使用 Dat Desktop?

任何想要通过 P2P 网络共享和更新数据的人。数据科学家、开放数据黑客、研究人员、开发人员。如果我们还没有想到的有趣用例,我们对反馈非常 receptive。您可以访问我们的Gitter Chat 并随时提问!

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

用户账户和元数据发布。我们正在开发一个 Dat 注册表 Web 应用,将在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 分钟

本周,我们采访了 Slack 的桌面工程师和 Ghost 发布平台的 Electron 客户端 Ghost Desktop 的维护者 Felix Rieseberg


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 将操作系统的原生拼写检查功能引入其应用程序。我们梦想着一个输入字段可以获得与 NSTextView 相同服务的世界,但我们也深知这有多么困难。

您最喜欢 Electron 的哪些方面?

JavaScript 以其庞大的生态系统而闻名,涉及无数的工具和框架——但它提供的便利性不容小觑。使用 Electron 构建应用程序仅比构建 Web 应用程序略微困难,这是一个了不起的壮举。

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

Ghost Desktop 也是一个持续的项目——我们离完成还有很长的路要走。我们一直在谈论为用户带来完整的离线模式,并且我们已经相当接近了。其他值得关注的工作领域是扩展和与其他文本编辑应用程序(如 Word 或 Atom)的集成,最终允许人们使用他们喜欢的工具编写帖子。总的来说,一旦我们发布了离线模式功能,我们将寻求更深入地与操作系统集成。如果这听起来很有趣,请加入我们

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

我非常喜欢 KapFelonyVisual Studio Code

👻

本周项目:Beaker Browser

·阅读时长 4 分钟

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


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

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

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

有了 Beaker,我们有了一个新的 Web 协议:Decentralized Archive Transport。“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 方案,称为 “app scheme”。更多 Dat API。

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

我们有很多开放的问题。不要害怕 ping 我。#beakerbrowser 在 freenode 上。我们维护了一个贡献者页面,我们会将您添加到其中。如果您访问奥斯汀,我将请您喝一杯啤酒。

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

  1. 使用现有的构建工具。你不想纠结于自己的解决方案,相信我。使用 electron-builder。使用样板仓库。
  2. 如果您需要为 Electron 仓库打开一个问题,请付出额外的努力使其易于重现。您将更快地得到答复,团队也会感谢您。更好的是,尝试自己修复它。看看它的内部实际上相当有趣。
  3. 至少阅读一遍所有的指南和高级文档。
  4. 不要构建浏览器,这是一个饱和的市场。

本周项目:Kap

·7分钟阅读

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


这篇博文是该系列的第一篇,介绍了由全球分布式自由职业设计师和开发者团队 Wulkano 构建的开源屏幕录制应用程序 Kap

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 本身没有错,但原生开发与使用 Web 技术构建桌面应用程序之间仍然存在差距。

我们花了大量时间试图解决 getUserMedia API 性能不佳的问题,这是一个源自 Chromium 的问题。我们最初的目标之一是使用 Web 技术构建整个应用程序。在尝试了我们能做到的一切以使其正常工作后(最低要求是在 Retina 屏幕上实现 30 FPS),我们最终不得不寻找另一个解决方案。

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

在被迫寻找 getUserMedia 的替代方案时,我们开始尝试 ffmpeg。除了它是最好的音频和视频转换工具之一外,它还具有在几乎任何操作系统上录制屏幕的功能,我们能够录制出令人满意的视频,满足我们在 Retina 屏幕上 30 FPS 的最低要求。问题是?性能是“😩”,CPU 使用率失控了。所以我们又回到了原点,讨论了我们的选择,并意识到我们不得不做出妥协。这导致了我们自己的 macOS 屏幕录制库 Aperture,它用 Swift 编写。

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 分钟阅读

以下是8月份添加到网站上的新 Electron 应用。


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

如果您制作了Electron应用程序或举办了会议,请提交拉取请求将其添加到网站,它将包含在下一个汇总中。

新应用

Code RPGifyRPG风格编码应用程序
PamFax用于发送和接收传真的跨平台应用程序
BlankUpMarkdown 编辑器,清晰度+1
Rambox免费开源的消息和电子邮件应用程序,将常见的Web应用程序集成到一个应用中
Gordie您的卡牌收藏的最佳应用程序
Ionic Creator更快地构建出色的移动应用程序
TwitchAlerts通过漂亮的警报和通知让您的观众保持满意
Museeks一款简单、干净且跨平台的音乐播放器
SeaPigMarkdown 到 HTML 的转换器
GroupMe非官方 GroupMe 应用
Moeditor您的全能 Markdown 编辑器
SoundnodeSoundnode 应用是桌面版的 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 开发