利用 Rust 支援的後端框架與 React 前端相結合,提供出色的無瀏覽器體驗

最初發佈於 Medium

許多開發人員都可以告訴您他們對 JavaScript GUI 框架又愛又恨的關係,該框架幫助徹底改變了許多桌面應用程式的製作方式。事實上,我們今天使用的許多應用程式,無論是與開發、社交媒體、通信……凡是有關的應用程式,都是使用 Electron 框架建置的。

如果您好奇,請從其網站查看使用 Electron 的應用程式的精選清單。


關鍵是,Electron 為具有 Web 開發經驗的開發人員提供了為多個平台建立獨立桌面應用程式的機會…所有這些都無需學習任何新的程式語言!它提供了使用我們許多人一直使用的相同 JavaScript、CSS 和 HTML 的能力,這當然是非常棒的!

簡單總結一下 Electron 是如何做到這一點的:

Electron 是一個使用 JavaScript、HTML 和 CSS 建立桌面應用程式的框架。透過將 Chromium 和 Node.js 嵌入到其二進位檔案中,Electron 允許您維護一個 JavaScript 程式碼庫並建立可在 Windows、macOS 和 Linux 上執行的跨平台應用程式 - 無需本地開發經驗。


用電子建置


使用 Electron 建立桌面應用程式的最大缺點之一,正如你們中的一些人可能在 Stack Overflow 和其他論壇中看到的那樣…生成的二進位檔案往往非常大!如此之大,即使只是一個中等大小的程式碼庫也可能產生約 60MB 的最終二進位。

在親身經歷了這種挫敗感之後,我開始想知道是否有一個神奇的解決方案可以解決這個問題……事實證明, Rust 恰好提供了一個!


巨大差距


Tauri 是一個工具包,可協助開發人員使用幾乎任何現有的前端框架為主要桌面平台開發應用程式。核心是用 Rust 建構的,CLI 利用 Node.js,使 Tauri 成為一種真正的多語言方法來建立和維護出色的應用程式。

潛入

令我興奮的是,他們的命令列鷹架工具建立了使用熟悉的前端框架啟動和執行所需的所有 Rust 檔案。不僅如此,一旦我準備好開始將自己的功能加入到後端以供 UI 使用,Tauri 就可以讓一切工作變得相當無縫!


快速開始


我決定嘗試讓 Tauri 為我計劃參與的一個社區專案建立一個新的桌面儀表板應用程式,劇透一下……它並沒有讓人失望!

正如我之前提到的,入門相當簡單:

  • 確保您的系統已安裝 Rust

  • 如果在 Windows 或 Linux 上,請確保安裝相關相依性

  • 執行一個簡單的命令來設定您的專案

之後,問題是將前端原始檔全部放在一起,同時當我需要一些有關 UI 和後端之間的進程間通訊的指導時,偶爾會參考 Tauri 的文件。


{% 嵌入 https://gist.github.com/dedSyn4ps3/5703367578339fc8c3440ea8a09fa449 %}


使用 Tauri 建立儀表板的美妙之處在於,我不再需要為了能夠正確利用進程間通訊而建立單獨的preload.js檔案。

所需要的只是在我想要從 UI 呼叫的函數上方的main.rs中進行正確的註釋,以及在我的 React jsx檔案中加入一個簡單的導入行:

import { invoke } from '@tauri-apps/api/tauri'

最終,Tauri 建置的應用程式的強大之處在於其後端使用 Rust。這使得像我這樣的開發人員能夠將他們的最終產品建置成本地執行的二進位文件,其大小只是許多 Electron 建置的應用程式的一小部分。

結論

至少對我來說,很明顯,Tauri 肯定有潛力繼續發展,直至推翻 Electron 作為主導的「前端」GUI 框架。儘管由於是基於 Rust 建置的,可能會存在一些令人生畏的因素,但了解其內部結構所需的少量時間是非常值得的!


最後結果


我鼓勵任何想要開始前端 GUI 開發之旅的人檢查 Tauri 框架,並抵制立即將 Electron 作為直接解決方案的衝動……我向你保證,你會感到驚訝!

為了完整起見,您可以在我的 Gitlab 上找到我的社群專案的完整程式碼庫。如果您正在為自己的專案尋找任何想法,請檢查一下!

{% 嵌入 https://gitlab.com/dedSyn4ps3/enviroplus-desktop %}

{% 嵌入 https://dev.to/dedsyn4ps3 %}

{% cta https://github.com/dedsyn4ps3 %} 💻 也查看我的 Github!{% endcta %}


原文出處:https://dev.to/dedsyn4ps3/goodbye-electron-hello-tauri-26d5


共有 0 則留言