tauri桌面應用開發入門

簡介

tauri是一款基于web的桌面應用前端框架

因為使用webviews渲染,而不是像electron自帶一個瀏覽器內核,所以打包之后的空間更小,十幾mb

前端界面使用web,可以采取流行的框架,入react,vue等

前端后臺采用rust,彌補前端無法直接訪問操作系統,常用于訪問本地文件系統

官方中文文檔

運行環境

MSVC

作用 : 在 Windows 平臺上為 Rust 和 Tauri 提供編譯、鏈接支持。

安裝 : 下載cpp構建工具,安裝工作負荷->左面應用與移動應用->使用c++的桌面開發

webview2

作用 : 渲染前端

安裝 : 在win10及以上默認安裝

rust

作用 : 作為前端的后臺,為web前端提供與操作系統交互能力

安裝 : 下載64位,然后直接回車

如果下載太慢,在安裝包目錄打開ps,輸入下面指令,使用中科大的源

$ENV:RUSTUP_DIST_SERVER='https://mirrors.ustc.edu.cn/rust-static'
$ENV:RUSTUP_UPDATE_ROOT='https://mirrors.ustc.edu.cn/rust-static/rustup'
.\rustup-init.exe

cargo

rust的包管理工具,換中科大源,windows目錄%USERPROFILE%\.cargo,新建文件config.toml,輸入以下內容

[source.crates-io]
replace-with = 'ustc'[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index/"

nodejs

前端運行環境

安裝 : 官方下載鏈接

第一個工程

vscode里面終端使用的ps,輸入下面命令初始化工程

irm https://create.tauri.app/ps | iex
cd .\tauri-app\

按提示選擇自己需要的配置,生成完成后

其中src就是前端代碼,src-tauri是rust后端代碼

輸入下面,根據package.json安裝依賴

npm install

運行下面執行,可以得到一個應用界面

如果下載過慢,請換cargo源

npm run tauri dev

開發階段可以

npm run dev

打包

npm run tauri build

然后就可以在src-tauri/target/release里面得到打包的程序,大約10mb

壓縮之后大約3mb

前臺

src/目錄,可以選自自己常用的前端框架

前端的修改可以實時渲染

調試

應用運行時,可以按f12進行調試,跟瀏覽器一樣

文件操作

使用系統封裝好的函數接口

先安裝官方插件

npm run tauri add fs

然后前端調用

import { writeFile, BaseDirectory } from '@tauri-apps/plugin-fs';async function greet() {setGreetMsg(await invoke("greet", { name }));let encoder = new TextEncoder();let data = encoder.encode("Hello, world!");await writeFile("hello.txt", data, { baseDir: BaseDirectory.Desktop })}

在src-tauri/capabilities/defaut.json的permissions中為文件操作的插件添加權限

"fs:default",
"fs:scope-desktop",
"fs:write-all"

后臺

src-tauri/目錄,即rust后臺,為前端提供訪問操作系統資源的能力

一般操作官方都有封裝好的插件供前端直接調用,入前面的文件操作

自定義函數

可以看到lib.rs

如下,提供了一個前端可調用的命令greet

封裝一個自定義函數需要兩步

  1. 使用#[tauri::command]暴露接口
  2. invoke_handler中注冊函數
#[tauri::command]//宏定義,暴露greet,可通過前端invoke調用
fn greet(name: &str) -> String {format!("Hello, {}! You've been greeted from Rust!", name)
}#[cfg_attr(mobile, tauri::mobile_entry_point)]//配置移動應用入口點,桌面應用可忽略
pub fn run() {//程序入口點tauri::Builder::default().plugin(tauri_plugin_opener::init()).invoke_handler(tauri::generate_handler![greet])//注冊可以被前端調用的函數.run(tauri::generate_context!()).expect("error while running tauri application");
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63792.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63792.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63792.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

selenium 報錯 invalid argument: invalid locator

環境: Python3.12.2 selenium4.0 報錯信息: invalid argument: invalid locator 錯誤分析: selenium語法錯誤,find_element方法少寫By.XPATH參數 錯誤語法如下: driver.find_element(//div[id"myid"]) 解決辦…

ESP8266 WiFi模塊入門:搭建網絡與測試實踐

在物聯網(IoT)應用中,設備聯網是核心功能之一。而ESP8266串口WiFi ESP-01模塊是一款低成本、功能強大的UART-WiFi透傳模塊,廣泛應用于智能家居、工業控制等領域。本篇文章將從基礎出發,講解如何使用ESP8266模塊進行WiF…

框架問題學習

1、gin 1.1、gin框架路由是怎么處理的 在 Gin 中,路由是通過 gin.Default() 或 gin.New() 創建的 *gin.Engine 對象來管理的。gin.Default() 是 gin.New() 的一個封裝,它在創建路由對象時會自動添加一個默認的中間件(如日志記錄、恢復中間件…

Java模擬Mqtt客戶端連接Mqtt Broker

Java模擬Mqtt客戶端基本流程 引入Paho MQTT客戶端庫 <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.mqttv5.client</artifactId><version>1.2.5</version> </dependency>設置mqtt配置數據 …

電子電氣架構 --- 隊列刷寫場景及刷寫上位機淺析

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 所謂雞湯,要么蠱惑你認命,要么慫恿你拼命,但都是回避問題的根源,以現象替代邏輯,以情緒代替思考,把消極接受現實的懦弱,偽裝成樂觀面對不幸的…

springboot根據租戶id動態指定數據源

代碼地址 碼云地址springboot根據租戶id動態指定數據源: springboot根據租戶id指定動態數據源,結合mybatismysql多數源下的事務管理 創建3個數據庫和對應的表 sql腳本在下圖位置 代碼的執行順序 先設置主數據庫的數據源配置目標數據源和默認數據源有了主庫的數據源&#xff…

C++簡明教程(文章要求學過一點C語言)(3)

一、編程工具大揭秘——IDE 當我們準備踏入 C 編程的奇妙世界時&#xff0c;首先要認識一個重要的“魔法盒子”——集成開發環境&#xff08;IDE&#xff09;。IDE 就像是一個全能的編程工作室&#xff0c;它把我們寫代碼所需要的各種工具都整合到了一起&#xff0c;讓編程這件…

達夢官方工具 SQLark數據遷移(oracle->達夢數據庫)

應國產化需求需要,需將系統中涉及的各中間件替換成國產中間件,此文介紹了從Oracle遷移數據至達夢dm8的步驟,該文在windos環境下已驗證測試過 1 SQLark介紹 SQLark是一款專為信創應用開發者設計的數據庫開發和管理工具。它支持快速查詢、創建和管理多種類型的數據庫系統&#xf…

【JAVA】JAVA接口公共返回體ResponseData封裝

一、JAVA接口公共返回體ResponseData封裝&#xff0c;使用泛型的經典 例子 public class ResponseData<T> implements Serializable { /** * */ private static final long serialVersionUID 7098362967623367826L; /** * 響應狀態碼 */ …

AlipayHK支付寶HK接入-商戶收款(PHP)

一打開支付寶國際版 二、點開商戶服務 三、下載源碼

【Prompt Engineering】6 文本擴展

一、引言 文本擴展&#xff1a;將短文本輸入到大型語言模型中&#xff0c;生成更長的文本。應用場景&#xff1a;頭腦風暴、生成電子郵件或論文等。風險&#xff1a;可能被用于生成垃圾郵件。使用原則&#xff1a;負責任地使用&#xff0c;確保有益于人們。技術準備&#xff1…

nginx學習總結(不包含安裝過程)

1. nginx常見配置 http服務上支持【若干虛擬主機】。每個虛擬主機對應一個server配置項&#xff0c;配置項里面包含該虛擬主機相關的配置。 server{listen 80 default;server_name www.yonqin.com;index index.html index.htm index.php;root /data/www;location ~ .*\.(gif|…

CSS系列(29)-- Scroll Snap詳解

前端技術探索系列&#xff1a;CSS Scroll Snap詳解 &#x1f4dc; 致讀者&#xff1a;探索流暢滾動體驗 &#x1f44b; 前端開發者們&#xff0c; 今天我們將深入探討 CSS Scroll Snap&#xff0c;這個強大的滾動優化特性。 基礎特性 &#x1f680; 容器設置 /* 基礎滾動…

如何設計高效的商品系統并提升擴展性:從架構到實踐的全方位探索

在現代電商、零售及企業資源管理系統中&#xff0c;商品管理無疑是核心模塊之一。隨著市場的變化與企業規模的擴展&#xff0c;商品系統需要具備強大的功能支持以及高效的擴展能力&#xff0c;以應對日益復雜的業務需求。一個設計良好的商品系統不僅僅是一個商品信息的容器&…

RFdiffusion get_torsions函數解讀

函數功能 get_torsions 函數根據輸入的原子坐標(xyz_in)和氨基酸序列(seq),計算一組主鏈和側鏈的扭轉角(torsions)。同時生成備用扭轉角(torsions_alt),用于表示可以鏡像翻轉的幾何結構,并返回掩碼(tors_mask)和是否平面化(tors_planar)的信息。 輸入參數 xyz…

docker springboot 運維部署詳細實例

環境安裝 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b鏡像構建 Dockerfile 文件內容 FROM openjdk:8 # Author Info 創建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…

貪心算法在背包問題上的運用(Python)

背包問題 有n個物品,它們有各自的體積和價值,現有給定容量的背包,如何讓背包里裝入的物品具有最大的價值總和? 這就是典型的背包問題(又稱為0-1背包問題),也是具體的、沒有經過任何延伸的背包問題模型。 背包問題的傳統求解方法較為復雜,現定義有一個可以載重為8kg的背…

【ArcGIS Pro微課1000例】0063:處理無人機數據(空三、生成DOM、DSM、DTM)

使用ArcGIS Pro 正射拼接處理無人機數據流程化工具,不需要額外產品許可的支持,只需要桌面是高級版許可即可支持。ArcGIS Pro處理無人機攝影測量數據主要內容有:空三、生成DOM、DSM、DTM。 文章目錄 一、創建映射項目二、提交自由空三三、添加控制點優化四、提交產品生產一、…

解鎖 Jenkins 搭建全攻略

一、Jenkins 簡介 &#xff08;一&#xff09;簡述 Jenkins 的作用與價值 Jenkins 是一款在軟件開發領域備受矚目的開源軟件項目&#xff0c;它基于 Java 開發&#xff0c;是極為重要的持續集成工具。在軟件開發的整個流程中&#xff0c;Jenkins 發揮著關鍵作用&#xff0c;能…

人工智能ACA(四)--機器學習基礎

零、參考資料 一篇文章完全搞懂正則化&#xff08;Regularization&#xff09;-CSDN博客 一、 機器學習概述 0. 機器學習的層次結構 學習范式&#xff08;最高層&#xff09; 怎么學 監督學習 無監督學習 半監督學習 強化學習 學習任務&#xff08;中間層&#xff0…