【Tauri】(1):使用Tauri1.5版本,进行桌面应用开发,在windows,linux进行桌面GUI应用程序开发,可以打包成功,使用 vite 最方便

1,视频地址:

https://www.bilibili.com/video/BV1Pz421d7s4/

【Tauri】(1):使用Tauri1.5版本,进行桌面应用开发,在windows,linux进行桌面GUI应用程序开发,可以打包成功,使用 vite 最方便

2,官网网站

https://tauri.app/zh-cn/

3,在windows 和 linux 上安装

https://tauri.app/zh-cn/v1/guides/getting-started/prerequisites

在windows 上需要安装 cpp 工具。

在linux 上,需要安装 webkit2

bash 复制代码
sudo apt update
sudo apt install libwebkit2gtk-4.0-dev \
    build-essential \
    curl \
    wget \
    libssl-dev \
    libgtk-3-dev \
    libayatana-appindicator3-dev \
    librsvg2-dev

然后安装rust 软件:

bash 复制代码
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

$ rustc --version
rustc 1.74.1 (a28077b28 2023-12-04)

4,先从 vite demo 开始

html 的demo 启动有问题:

https://tauri.app/zh-cn/v1/guides/getting-started/setup/vite

bash 复制代码
npm create tauri-app@latest

Need to install the following packages:
  create-tauri-app@3.13.3
Ok to proceed? (y) y
✔ Project name · demo
✔ Choose which language to use for your frontend · TypeScript / JavaScript - (pnpm, yarn, npm, bun)
✔ Choose your package manager · npm
✔ Choose your UI template · Vue - (https://vuejs.org/)
✔ Choose your UI flavor · TypeScript

Template created! To get started run:
  cd demo
  npm install
  npm run tauri dev

然后就可以执行:

bash 复制代码
  cd demo
  npm install
  npm run tauri dev

5,通过 tauri::command 标记函数

https://tauri.app/v1/guides/features/command/

rust 复制代码
// Prevents additional console window on Windows in release, DO NOT REMOVE!!
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]

// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
fn greet(name: &str) -> String {
    format!("Hello, {}! You've been greeted from Rust!", name)
}

fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![greet])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

然后前端直接使用函数调用:

html 复制代码
<script setup lang="ts">
import { ref } from "vue";
import { invoke } from "@tauri-apps/api/tauri";

const greetMsg = ref("");
const name = ref("");

async function greet() {
  // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
  greetMsg.value = await invoke("greet", { name: name.value });
}
</script>

<template>
  <form class="row" @submit.prevent="greet">
    <input id="greet-input" v-model="name" placeholder="Enter a name..." />
    <button type="submit">Greet</button>
  </form>

  <p>{{ greetMsg }}</p>
</template>

说明这个并不是 ajax 调用,而是直接调用 rust 的 函数。

类似java 的 jni 方式调用 c 函数。

6,运行结果

这个函数使用的 rust 处理的,但是前端 vue 项目进行调用的。

7,测试打包

bash 复制代码
npm run tauri build

> demo@0.0.0 tauri
> tauri build

       Error You must change the bundle identifier in `tauri.conf.json > tauri > bundle > identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.

修改配置文件:把 com.tauri.dev 修改成其他的就行。

bash 复制代码
...

    "bundle": {
      "active": true,
      "targets": "all",
      "identifier": "com.tauri.my.demo",

然后就是一顿构建,编译:

bash 复制代码
  Compiling serialize-to-javascript v0.1.1
   Compiling tauri-codegen v1.4.2
   Compiling tauri-build v1.5.1
   Compiling glib v0.15.12
   Compiling gdkwayland-sys v0.15.3
   Compiling tauri-macros v1.4.3
   Compiling demo v0.0.0 (/data/home/test/tauriWorkspace/demo/src-tauri)
   Compiling pango v0.15.10
   Compiling cairo-rs v0.15.12
   Compiling atk v0.15.1
   Compiling javascriptcore-rs v0.16.0
   Compiling gdk-pixbuf v0.15.11
   Compiling soup2 v0.2.1
   Compiling gdk v0.15.4
   Compiling webkit2gtk v0.18.2
    Building [=======================> ] 449/453: webkit2gtk, gtk, tauri         

最后在文件夹:

demo/src-tauri/target/release

里面有二进制文件:

bash 复制代码
> tauri build

     Running beforeBuildCommand `npm run build`

> demo@0.0.0 build
> vue-tsc --noEmit && vite build

vite v5.1.1 building for production...
✓ 19 modules transformed.
dist/index.html                  0.46 kB │ gzip:  0.30 kB
dist/assets/index-BNZBj5Gh.css   1.40 kB │ gzip:  0.66 kB
dist/assets/index-CaOzi2KF.js   57.66 kB │ gzip: 23.27 kB
✓ built in 764ms
   Compiling demo v0.0.0 (/data/home/test/tauriWorkspace/demo/src-tauri)
    Finished release [optimized] target(s) in 6.30s
    Bundling demo_0.0.0_amd64.deb (/data/home/test/tauriWorkspace/demo/src-tauri/target/release/bundle/deb/demo_0.0.0_amd64.deb)
    Bundling demo_0.0.0_amd64.AppImage (/data/home/test/tauriWorkspace/demo/src-tauri/target/release/bundle/appimage/demo_0.0.0_amd64.AppImage)
       Error failed to bundle project: error running appimage.sh

虽然也有构建失败,但是已经生成了 二进制文件。 demo

只是没有打包成 AppImage 文件。

因为访问 github 网络不好:

https://blog.csdn.net/w13664606186/article/details/132858180

bash 复制代码
-rwxrwxr-x  1 test test  12M  2月 10 22:57 demo

最后就是12 mb的 文件,包括了htm 。 和 二进制文件。确实特别的小,运行速度快。

相关推荐
我就是不信7 分钟前
Java8 lambda 表达式 forEach 如何提前终止?
开发语言·windows·python
陈工大模型1 小时前
2026 Windows 免费压缩软件横向评测:7-Zip、WinRAR、Bandizip、NanaZip 与 Win 解压缩
windows·电脑·winrar·7-zip·web app·软件·win解压缩
燃烧的枫1 小时前
Windows 下 YOLO26 的 TensorRT C++ 部署
人工智能·pytorch·windows·计算机视觉·tensorrt·cuda·yolo26
钱栈up1 小时前
从 macOS 切回 Windows,我用 5 个免费工具把 80% 操作习惯搬了回来
windows·macos·策略模式
水饺编程1 小时前
第2章:Linux 基础,rm 命令
linux·c语言·汇编
雪落漂泊1 小时前
Linux基础开发工具(三)gcc/g++与make/makefile篇
linux·运维·服务器
爱吃辣椒的小豆豆2 小时前
Linux-sshd-实战-白名单与跳板机
linux·运维·服务器
气质、小青年!2 小时前
进程1学习
linux·学习
百事牛科技2 小时前
从局部到整体:Excel限制功能的几种实用设置
windows·excel
blueSatchel2 小时前
framebuffer注册源码解读
linux·嵌入式