tauri - 可替換 electron 的PC端 SPA 框架 (兩種把前端JS代碼生成exe文件的框架)


最近意外發現了這個框架,從這框架的說明和我的實踐來看,確實是以后 PC 端的主流框架, 大家都知道 electron 的唯二缺點: 1. 性能較差 2.包的尺寸太大.下面給出使用 tauri 的理由

tauri 介紹

以下介紹來自官方說明:

為什么使用 tauri

  • 原始Tauri應用程序的打包大小小於3 MB,比Electron的大小小140 MB。
  • 內存占用小於使用相同代碼庫構建的Electron應用程序的大小的一半。
  • 安全是Tauri的頭等大事,我們正在不斷創新。
  • 遺憾的是,底層是 Chromium 的使用者(例如Electron)無法獲得 FLOSS(自由/開源軟件) 許可。 資料來源:0 1 2

技術細節

tauri 具有五個主要組成部分:

  • 用於創建,開發和構建應用程序的Node.js CLI
  • Rust Core,用於綁定到底層WEBVIEW並提供可搖樹優化的API
  • Rust Bundler用於制造最終的二進制文件
  • Webview的Rust綁定
  • Webview低層庫,用於創建和與操作系統“本機” Webview交互

Tauri應用程序中的用戶界面目前在macOS上使用Cocoa / WebKit,在Linux上使用gtk-webkit2,在Windows上通過Edge使用MSHTML(IE10 / 11)或Webkit。 Tauri基於MIT許可的進行工作,即webview。

tauri 與 electron 的對比

  Tauri Electron
MacOS 的包大小 0.6 MB 47.7 MB
MacOS 的內存消耗 13 MB 34.1 MB
接口服務提供 Varies Chromium
后台綁定 Rust Node.js (ECMAScript)
底層引擎 C/C++ V8 (C/C++)
自由/開源軟件 Yes No
多線程 Yes No
字節碼傳遞 Yes No
可以顯示PDF Yes No
多窗口 Soon Yes
GPU 訪問 Yes Yes
自動更新 Soon Yes (1)
跨平台 Yes Yes
自定義 APP 圖標 Yes Yes
Windows 包 Yes Yes
MacOS 包 Yes Yes
Linux 包 Yes Yes
iOS 包 Soon No
Android 包 Soon No
支持本地 web 服務 Yes Yes
沒有本地服務選項 Yes No
桌面文件盒 Soon No

Notes

  1. Electron在Linux上沒有本地自動更新程序,但由electron-packager提供

環境搭建

以下為 macOS 為例子, 其他的環境可以查看原文檔 點此查看

Tauri是一個多語言系統,因此需要大量工具。

系統依賴項:

$ brew install gcc 

使用 brew 下載 gcc 依賴

node 運行環境:

此框架的運行需要 node 12 以上的環境:

nvm install 12 nvm use 12 

使用 nvm 下載 node 12

Rustc and Cargo 包管理

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 

這條命令時需要梯子才能下好的
下載的時候一路回車即可
完成后,關閉終端,打開后查看

grewer@Grewer-2 ~ % rustc --version rustc 1.42.0 (b8cedc004 2020-03-09) 

Tauri 打包工具

$ cargo install tauri-bundler --force 

此命令的下載也建議使用梯子,不然會比較慢

至此, 此框架的基礎環境都已經搭建完成

使用(無縫融合進現有的項目)

首先你需要一個 web 項目, 可以是 react-create-app 或者 vue-cli 創建的項目,也可以是任意的 web 項目

在項目中下載 tauri:

yarn add tauri # 或者 npm install tauri 

下載完成后,在當前項目的目錄下,使用命令

tauri init 

之后, 你的項目下會出現一個目錄 src-tauri:

再根據你的 web 項目啟動時的端口修改文件 src-tauri/tauri.conf.json:

 "build": { "distDir": "../build", //打包后的路徑 "devPath": "http://localhost:8080", // 此為 dev 啟動時的url "beforeDevCommand": "", "beforeBuildCommand": "" }, 

現在啟動項目:

    "dev": "tauri dev", 

第一次啟動的時候會有點慢,要加載一些東西,后面就快了很多了

這里我留下我的 demo:

https://github.com/Grewer/tauri-example

總結

從上述情況來看,這確實是一個潛力更加大的 PC 框架,但是現在(時間點:2020-04-27)的缺點也明顯,就是還不夠成熟
所以現在實驗性的 PC 項目可以使用,但是想在生產環境使用,還需要在等等

2021-5-19 更新

現在使用 tauri 需要下載的庫是 @tauri-apps/cli, 一切以官網為准https://tauri.studio/en/docs/usage/development/integration


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM