跳到主要内容

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-01 起,Apple 为 macOS 公证停止使用旧版 altool,此版本将其完全从 Electron Forge 中删除。
  • 最低 Node.js 版本增加到 v16.4.0: 在此版本中,我们将最低要求的 Node.js 版本设置为 16.4.0。
  • 放弃支持 electron-prebuiltelectron-prebuilt-compile: electron-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 文件。(PS:期待 Electron 28 中的 ESM 入口点支持。)
  • Makers 现在并行运行: 在 Electron Forge 6 中,Makers 由于 ✨ 旧版 ✨ 原因而按顺序运行。从那时起,我们测试了 Make 步骤的并行化,没有不良副作用,因此您在为同一平台构建多个目标时应该会看到速度提升!
谢谢!

🙇 非常感谢 mahnunchik 为 Forge 配置中的 GCS 发布者和 ESM 支持做出的贡献!

更好的静态存储自动更新

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

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

更新服务器方法传统上是 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 将继续在其 @electron-forge/ 命名空间下发布其所有 monorepo 包。
寻求星星

⭐ 在此过程中,我们还意外地将 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 使用。

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

下一步是什么?

下个月我们将进入年度 12 月静默期。在此期间,我们将思考如何在 2024 年使 Electron 开发体验更好。

您希望看到我们接下来关注哪些方面?请告诉我们!

本周项目:Jasper

·5 分钟阅读

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


你好!你是谁?

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

什么是 Jasper?

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

Jasper App Screenshot

你为什么制作它?

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

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

我花费了大量的时间和精力来防止这些问题,因此我决定为 GitHub 制作一个问题阅读器,以有效地解决这些问题,并开始开发 Jasper。

谁在使用 Jasper?

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

Jasper 是如何工作的?

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

Jasper Start Screen

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

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“涉及” catbob 的问题
team:animal/white-cat team:animal/black-doganimal/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.1附加到 cat/jump 中的 v1.0.0v1.0.1 的问题
repo:cat/jump label:bug label:blocker附加了 cat/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 的 Notifications API。但是,我注意到它不支持某些用例。之后,我考虑使用 Issues APIPull Requests API,以及 Notification API。但这从来都不是我想要的。然后在思考各种方法时,我意识到轮询 GitHub 的 Search API 可以提供最大的灵活性。我花了一个月的时间进行实验才达到这一点,然后我用两天的时间实现了具有流概念的 Jasper 原型。

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

接下来会发生什么?

我计划开发以下功能:

  • 筛选的流:一个流具有一些筛选的流,这些流筛选该流中的问题。它类似于 SQL 的视图。
  • 多个帐户:您将能够同时使用 github.com 和 GHE。
  • 提升性能:目前,WebView 中的加载速度比普通浏览器慢。

在 Twitter 上关注 @jasperappio 以获取最新信息。

本周项目:WebTorrent

·9 分钟阅读

本周,我们采访了 @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 网络的“混合客户端”

如果我已经在 Web 浏览器中下载 torrent,为什么还需要桌面应用程序?

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

webtorrent desktop logo

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

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

一些 torrent 应用程序(如 Vuze)已经支持 Web 对等体,但我们不想等待其他应用程序添加支持。因此,基本上,WebTorrent Desktop 是我们加快 WebTorrent 协议采用的方法。通过创建一个人们真正想使用的超棒 torrent 应用程序,我们增加了网络中可以与 Web 对等体(即网站上的用户)共享 torrent 的对等体数量。

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

WebTorrent 最令人兴奋的用途之一是点对点辅助交付。像 维基百科互联网档案馆 这样的非营利项目可以通过让访问者参与进来,从而减少带宽和托管成本。热门内容可以通过浏览器到浏览器快速、廉价地提供。不常访问的内容可以从源服务器通过 HTTP 可靠地提供。

互联网档案馆实际上已经更新了他们的 torrent 文件,使其可以很好地与 WebTorrent 配合使用。因此,如果您想在您的网站上嵌入互联网档案馆的内容,您可以以一种方式进行,从而减少互联网档案馆的托管成本,使他们可以将更多的资金投入到实际的网络存档中!

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

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

gaia app screenshot

到目前为止,用 WebTorrent 构建的最酷的东西可能是 Gaia 3D 星图。这是一个流畅的银河系 3D 交互式模拟。数据直接从浏览器中的 torrent 加载。飞过我们的星系,意识到我们人类与浩瀚的宇宙相比是多么渺小,这令人惊叹。

您可以在 Torrenting The Galaxy 中阅读有关如何制作此星图的信息,这是一篇博客文章,作者 Charlie Hoey 解释了他如何使用 WebGL 和 WebTorrent 构建星图。

brave logo

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

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

Brave 的联合创始人之一实际上是 JavaScript 的创建者 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 上发表了题为“真实世界的 Electron:使用 JavaScript 构建跨平台桌面应用程序”的演讲,其中包含有关发布完善的 Electron 应用程序的有用技巧。如果您正处于拥有基本工作应用程序并且正试图将其提升到更高的润色和专业水平的阶段,则该演讲特别有用。

在此观看:

幻灯片在此:

DC,另一位 WebTorrent 贡献者,撰写了 一份你可以做的清单,使你的应用程序感觉精美和原生。它带有代码示例,涵盖了 macOS dock 集成、拖放、桌面通知以及确保应用程序快速加载等内容。

本周项目:Voltra

·6 分钟阅读

本周我们与 Aprile ElcichPaolo Fragomeni 会面,讨论了 Voltra,一款基于 Electron 的音乐播放器。


什么是 Voltra?

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

voltra-artistview

Voltra 适用于哪些人?

任何听音乐的人。

是什么促使您创建 Voltra?

广播一直拥有大量的听众。它正在从无线电波转移到互联网上。现在你可以按需租借音乐——这是广播的复兴!因此出现了很多新产品和服务,但是流媒体广播仍然让别人控制你的音乐以及你体验它的方式。

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

有免费版本吗?

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

由于该应用程序是免费的,我们可能会在稍后开源它。现在我们没有足够的带宽来管理它。我们对功能和我们想要采取的方向也有非常具体的想法。我们有一个活跃的 Beta 社区,我们会认真对待我们的反馈。

你们如何赚钱?

我们有高级功能!

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

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

是什么让 Voltra 与众不同?

设计和可用性对我们来说非常重要。我们希望给听众一个无干扰的聆听体验!那里有一些有趣的音乐播放器和商店。但是他们中的许多人比他们的创作者意识到的更高级且更难使用。我们希望尽可能多的人可以使用 Voltra。

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

你们做出了一些什么样的设计和技术决策?

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

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

voltra-albumview

我们还确保不干扰人们的文件。我们使用文件监视,因此你可以将文件放在你想要的任何位置,我们不会重命名它们或为你移动它们。我们有一个嵌入式数据库来跟踪受监视目录的状态,以便我们可以跟踪新内容,即使该进程未运行也是如此。

在构建 Voltra 时,您面临过哪些挑战?

我们花了很多时间专注于性能。我们从框架开始,但转而使用原生 Javascript。根据我们的经验,它们提供的通用抽象胜过它们引入的性能损失和仪式。

目前,我们处理非常大的集合效果很好。大的集合意味着可能有成千上万张图像!从渲染器进程直接使用 Node.js 的文件系统模块可以轻松地基于 DOM 事件快速懒加载和卸载大量图像。

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

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

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

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

此外,最重要的是,使用 Electron,您可以开发一次,它应该可以在所有主要平台上正常工作™。这不能保证,但是为每个平台进行原生编码的成本绝对超过了 Electron 引入的任何其他成本。

您最喜欢 Electron 的哪些方面?

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

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

社区:这里有一个组织性很强,并且非常善于沟通的社区!我们对在这种支持下进行开发感到非常棒。

Electron 在哪些方面可以改进?

我们希望看到 Electron 认可一个单一的打包器。打包器对于 Electron 来说,就像包管理器对于 Node 一样重要。用户领域存在多个打包器,每个都有有趣的特性,但也都有各自的 bug。社区的共识将有助于引导贡献者投入精力。

接下来会发生什么?

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

本周项目:WordPress 桌面

·4 分钟阅读

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


WordPress Apps

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

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

为什么要构建用于管理 WordPress 站点的桌面应用程序?它不应该是完全基于 Web 的吗?

它实际上使用的是您在浏览器中访问 WordPress.com 时所获得的完全相同的技术。然而,它都是本地托管的,因此加载时间最短。凭借诸如停靠栏、通知等原生功能的好处,您真的可以专注于您的 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 上找到。

我们还有一个即将推出的使用 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

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

现在我们知道什么是 Dat。Dat Desktop 如何适应?

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

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

DataRefuge + 斯瓦尔巴项目

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

加州公民数据联盟

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

Electron 更新

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

谁应该使用 Dat Desktop?

任何想通过 p2p 网络分享和更新数据的人。包括数据科学家、开放数据黑客、研究人员、开发者。如果任何人有我们尚未想到的酷炫用例,我们非常乐意接收反馈。欢迎加入我们的 Gitter 聊天室,随时提问!

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 转换(这有点奇怪,因为即使我们有原生的 require,我们仍然会进行捆绑——但这是因为我们需要这些转换)。为了更好地管理我们的 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 发布平台提供的 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?

今年,我们非常高兴地将我们整个 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 浏览器

·4 分钟阅读

本周我们采访了 Paul FrazeeBeaker Browser 的创建者。Beaker 是一款实验性的点对点 Web 浏览器,它使用 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 在哪些方面应该改进?

如果我能将 devtools 停靠在 webview 中,那就太棒了。

Beaker 的下一步是什么?

Dat 站点的安全 DNS 名称。一个可社交配置的 URL 方案,称为 “app scheme”。更多 Dat API。

对于可能对参与该项目感兴趣的人来说,Beaker 在哪些方面需要帮助?

我们有很多未解决的问题。不要害怕 ping 我。freenode 上的 #beakerbrowser。我们保留一个 贡献者页面,我们会把你添加到其中。如果你来奥斯汀,我会请你喝一杯啤酒。

是否有任何对其他开发人员可能有用的 Electron 提示?

  1. 使用现有的构建工具。相信我,你不想和你自己的解决方案搏斗。使用 electron-builder。使用样板库。
  2. 如果你需要在 Electron 存储库中打开一个问题,请多走一步,使其易于重现。你将更快地得到回复,并且团队会感激不尽。更好的是,尝试自己修复它。看看内部结构实际上很有趣。
  3. 至少通读一遍所有的指南和高级文档。
  4. 不要构建浏览器,这是一个饱和的市场。

本周项目:Kap

·7 分钟阅读

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


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

Kap Screencast

什么是 Kap?

Kap 是一款开源屏幕录像机,主要为设计师和开发人员构建,以便轻松捕获他们的工作。人们使用它来共享动画原型、记录错误、创建有趣的 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 应用可能会占用大量 RAM,但这实际上是 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一个简单、干净且跨平台的音乐播放器
SeaPig从 markdown 到 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 的桌面客户端
Translation Editor用于 INTL ICU 消息(请参阅 formatjsio)的翻译文件编辑器
5EClient5EPlay CSGO 客户端
Theme Juice使本地 WordPress 开发变得简单