electron 桌面程序_我们如何使用Electron构建Linux桌面应用程序

electron 桌面程序

Tutanota是一种安全的开源电子邮件服务,已作为浏览器,iOS和Android的应用程序提供。 客户端代码在GPLv3下发布, F-Droid上提供了Android应用程序,使每个人都可以使用完全不依赖Google的版本。

由于Tutanota专注于开源并在Linux客户端上进行开发,因此我们希望发布适用于Linux和其他平台的桌面应用。 作为一个小团队,我们很快就排除了为Linux,Windows和MacOS构建本机应用程序的决定,并决定使用Electron来适应我们的应用程序。

Tutanota基于SystemJS和Mithril ,旨在为所有人提供简单,安全的电子邮件通信。 因此,它必须提供用户期望从任何电子邮件客户端获得的许多标准功能。

由于现代的API和标准,这些功能中的一些功能(例如基本的推送通知,搜索文本和联系人以及对两因素身份验证的支持)很容易在浏览器中提供。 其他功能(例如不涉及我们的服务器的自动备份或IMAP支持)需要对系统资源的访问限制较少,这正是Electron框架提供的功能。

尽管有些人批评Electron“只是一个基本的包装器”,但它具有明显的好处:

  • Electron使您可以快速将Web应用程序适应Linux,Windows和MacOS桌面。 实际上,大多数Linux桌面应用程序都是用Electron构建的。
  • 通过Electron,您可以轻松地使桌面客户端与Web应用实现同等功能。
  • 发布桌面应用程序后,您可以使用免费的开发功能来添加特定于桌面的功能,以增强可用性和安全性。
  • 最后但并非最不重要的一点是,这是一种使应用程序感觉本机并集成到用户系统中同时保持其身份的好方法。

满足用户需求

在图塔诺塔(Tutanota),我们不依赖大笔资金,而是一个社区驱动的项目。 随着越来越多的用户升级到我们的免费增值服务的付费计划,我们有机地扩展了我们的团队。 倾听用户的需求不仅对我们很重要,而且对我们的成功至关重要。

在Tutanota中,提供桌面客户端是用户最想要的功能 ,我们为现在可以向所有用户提供免费的Beta桌面客户端而感到自豪。 (我们还实现了另一个高度要求的功能- 搜索加密数据 -但这是另一个话题。)

我们喜欢为用户提供带签名的Tutanota版本并启用浏览器中无法实现的功能(例如通过后台进程进行推送通知)的想法。 现在,我们计划添加更多特定于桌面的功能,例如IMAP支持,而不依赖我们的服务器充当代理,自动备份和脱机可用性。

我们之所以选择Electron,是因为它的Chromium和Node.js的组合有望最适合我们的小型开发团队,因为它只需要对Web应用程序进行最少的更改。 在开始使用所有内容时都使用浏览器API尤其有用,随着我们的进步,将这些组件慢慢替换为更多的本机版本。 这种方法在附件下载和通知时特别方便。

调整安全性

我们知道有人提到了Electron的安全性问题,但是我们发现Electron在Web应用程序中用于微调访问的选项相当令人满意。 您可以使用Electron的安全性文档和Luca Carettoni的Electron的安全性清单等资源来帮助防止Web应用程序中不可信任内容的灾难性事故。

实现功能均等

Tutanota Web客户端从一开始就使用可靠的协议进行进程间通信而构建。 我们利用网络工作者在加密和请求数据时使用户界面(UI)呈现响应。 当我们开始实现我们的移动应用程序时,这非常方便,该应用程序使用相同的协议在本机部分和Web视图之间进行通信。

这就是为什么当我们开始构建桌面客户端时,已经存在许多绑定,例如本地推送通知,打开邮箱以及使用文件系统,因此只需要实现本地(节点)端。

另一个便利是我们使用Babel transpiler进行构建的过程,该过程使我们能够在现代ES6 JavaScript中编写整个代码库,并在不同环境之间使用混合匹配实用程序模块。 这使我们能够为基于Electron的桌面应用程序快速修改代码。 但是,我们遇到了一些挑战。

克服挑战

虽然Electron允许我们轻松地与不同平台的桌面环境集成,但是您不能低估了使事情变得正确的时间投入! 最终,这些小事情花费了比我们预期更多的时间,但对于完成桌面客户端项目也至关重要。

需要平台特定代码的地方造成了大多数摩擦:

  • 例如,在三个平台上,窗口管理和托盘仍然以不同的方式处理。
  • 将Tutanota注册为默认邮件程序并设置自动启动要求深入Windows注册表,同时确保以UAC兼容方式提示用户进行管理员访问。
  • 我们需要将Electron的API用于快捷方式和菜单,以提供甚至标准功能,例如复制,粘贴,撤消和重做。

用户对某些应用程序在不同平台上某些(有时不是直接兼容)行为的期望使该过程变得有些复杂。 要使这三个版本看起来很自然,就需要对Web应用程序进行一些迭代甚至是适度的添加,以提供类似于浏览器中的文本搜索。

结语

我们在Electron的经验非常积极,我们在不到四个月的时间内完成了该项目。 尽管有一些相当耗时的功能,但我们对发布Linux版Tutanota桌面客户端的beta版本的便捷性感到惊讶 。 如果您有兴趣,可以在GitHub上深入了解源代码。

翻译自: https://opensource.com/article/19/4/linux-desktop-electron

electron 桌面程序

你可能感兴趣的:(electron 桌面程序_我们如何使用Electron构建Linux桌面应用程序)