古詩詞大全網 - 藝術簽名 - 我們是如何使用 Electron 構建 Linux 桌面應用程序的

我們是如何使用 Electron 構建 Linux 桌面應用程序的

Tutanota 是壹種安全的開源電子郵件服務,它可通過瀏覽器使用,也有 iOS 和 Android 應用。其客戶端代碼在 GPLv3 下發布,Android 應用程序可在 F-Droid 上找到,以便每個人都可以使用完全與 Google 無關的版本。

由於 Tutanota 關註開源和 Linux 客戶端開發,因此我們希望為 Linux 和其他平臺發布壹個桌面應用程序。作為壹個小團隊,我們很快就排除了為 Linux、Windows 和 MacOS 構建原生應用程序的可能性,並決定使用 Electron 來構建我們的應用程序。

對於任何想要快速交付視覺壹致的跨平臺應用程序的人來說,Electron 是最適合的選擇,尤其是如果妳已經有壹個 Web 應用程序,想要從瀏覽器 API 的束縛中擺脫出來時。Tutanota 就是這樣壹個案例。

Tutanota 基於 SystemJS 和 Mithril ,旨在為每個人提供簡單、安全的電子郵件通信。 因此,它必須提供很多用戶期望從電子郵件客戶端獲得的標準功能。

由於采用了現代 API 和標準,其中壹些功能(如基本的推送通知、搜索文本和聯系人以及支持雙因素身份驗證)很容易在瀏覽器中提供。其它功能(例如自動備份或無需我們的服務器中轉的 IMAP 支持)需要對系統資源的限制性訪問,而這正是 Electron 框架提供的功能。

雖然有人批評 Electron “只是壹個基本的包裝”,但它有明顯的好處:

Tutanota 不依靠於大筆的投資資金,而是依靠社區驅動的項目。基於越來越多的用戶升級到我們的免費服務的付費計劃,我們有機地發展我們的團隊。傾聽用戶的需求不僅對我們很重要,而且對我們的成功至關重要。

提供桌面客戶端是 Tutanota 用戶 最想要的功能 ,我們感到自豪的是,我們現在可以為所有用戶提供免費的桌面客戶端測試版。(我們還實現了另壹個高度要求的功能 —— 搜索加密數據 —— 但這是另壹個主題了。)

我們喜歡為用戶提供簽名版本的 Tutanota 並支持瀏覽器中無法實現的功能,例如通過後臺進程推送通知。 現在,我們計劃添加更多特定於桌面的功能,例如 IMAP 支持(而不依賴於我們的服務器充當代理),自動備份和離線可用性。

我們選擇 Electron 是因為它的 Chromium 和 Node.js 的組合最適合我們的小型開發團隊,因為它只需要對我們的 Web 應用程序進行最小的更改。在我們開始使用時,可以將瀏覽器 API 用於所有功能特別有用,隨著我們的進展,慢慢地用更多原生版本替換這些組件。這種方法對附件下載和通知特別方便。

我們知道有些人關註 Electron 的安全問題,但我們發現 Electron 在 Web 應用程序中微調訪問的選項非常令人滿意。妳可以使用 Electron 的 安全文檔 和 Luca Carettoni 的 Electron 安全清單 等資源,來幫助防止 Web 應用程序中不受信任的內容發生災難性事故。

Tutanota Web 客戶端從壹開始就構建了壹個用於進程間通信的可靠協議。我們利用 Web 線程在加密和請求數據時保持用戶界面(UI)響應性。當我們開始實現我們的移動應用時,這就派上用場,這些應用程序使用相同的協議在原生部分和 Web 視圖之間進行通信。

這就是為什麽當我們開始構建桌面客戶端時,很多用於本機推送通知、打開郵箱和使用文件系統的部分等已經存在,因此只需要實現原生端(Node.js)。

另壹個便利是我們的構建過程使用 Babel 轉譯器 ,它允許我們以現代 ES6 JavaScript 編寫整個代碼庫,並在不同環境之間混合和匹配功能模塊。這使我們能夠快速調整基於 Electron 的桌面應用程序的代碼。但是,我們也遇到了壹些挑戰。

雖然 Electron 允許我們很容易地與不同平臺的桌面環境集成,但妳不能低估投入的時間!最後,正是這些小事情占用了比我們預期更多的時間,但對完成桌面客戶端項目也至關重要。

特定於平臺的代碼導致了大部分阻礙:

由於用戶對不同平臺上的應用程序的某些(有時不直接兼容)行為的期望,此過程有點復雜。使三個版本感覺像原生的需要壹些叠代,甚至需要對 Web 應用程序進行壹些適度的補充,以提供類似於瀏覽器中的文本搜索的功能。

我們在 Electron 方面的經驗基本上是積極的,我們在不到四個月的時間內完成了該項目。盡管有壹些相當耗時的功能,但我們感到驚訝的是,我們可以輕松地為 Linux 提供壹個測試版的 Tutanota 桌面客戶端 。如果妳有興趣,可以深入了解 GitHub 上的源代碼。

via: /article/19/4/linux-desktop-electron

作者: Nils Ganther 選題: lujun9972 譯者: wxy 校對: wxy