Vue + JS + tauri 开发一个简单的PC端桌面应用程序

Vue + JS + tauri 开发一个简单的PC端桌面应用程序

文章目录

  • [Vue + JS + tauri 开发一个简单的PC端桌面应用程序](#Vue + JS + tauri 开发一个简单的PC端桌面应用程序)
  • [1. 环境准备](#1. 环境准备)
    • [1.1 安装 Microsoft Visual Studio C++ 生成工具\^2](#1.1 安装 Microsoft Visual Studio C++ 生成工具[^2])
    • [1.2 安装 Rust\^3](#1.2 安装 Rust[^3])
  • [2. 使用 vite 打包工具创建一个 vue 应用](#2. 使用 vite 打包工具创建一个 vue 应用)
    • [2.1 使用Vite创建前端Vue项目](#2.1 使用Vite创建前端Vue项目)
    • [2.2 更改Vite打包配置项](#2.2 更改Vite打包配置项)
    • [2.3 创建 Rust 项目开管理项目](#2.3 创建 Rust 项目开管理项目)
  • 3.打包应用程序
  • [4. 实例分享](#4. 实例分享)

Tauri [1](#1)是一款应用构建工具包,让您能够为使用 Web 技术的所有主流桌面操作系统构建软件。tauri 框架与 electron 非常相似。

tauri electron
体积 10MB 100MB
打包速度 2s 17s

1. 环境准备

1.1 安装 Microsoft Visual Studio C++ 生成工具^[2](#1.1 安装 Microsoft Visual Studio C++ 生成工具2)^

1.2 安装 Rust^[3](#1.2 安装 Rust3)^

shell 复制代码
# PowerShell
PS C:\> winget install --id Rustlang.Rustup

2. 使用 vite 打包工具创建一个 vue 应用

Tauri 由一个可搭配任何前端来构建桌面应用的框架和 Rust 核心构成。

  1. 创建窗口并向其提供原生功能支持的 Rust 二进制文件
  2. 由您选择的前端框架,用于编写窗口内的用户界面

预览以下效果:

2.1 使用Vite创建前端Vue项目

bash 复制代码
# npm
$ npm create vite@latest

2.2 更改Vite打包配置项

js 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  clearScreen: false,
  server: {
    strictPort: true
  },
  envPrefix: ['VITE_', 'TAURI_PLATFORM', 'TAURI_ARCH', 'TAURI_FAMILY', 'TAURI_PLATFORM_VERSION', 'TAURI_PLATFORM_TYPE', 'TAURI_DEBUG'],
  build: {
    target: process.env.TAURI_PLATFORM == 'windows' ? 'chrome105' : 'safari13',
    minify: !process.env.TAURI_DEBUG ? 'esbuild' : false,
    sourcemap: !!process.env.TAURI_DEBUG,
  },
  plugins: [vue()],
})

每款 Tauri 应用的核心都是由一个管理窗口的 Rust 二进制文件、WebView 和进行系统调用的 tauri Rust 包构成。

2.3 创建 Rust 项目开管理项目

bash 复制代码
$ npm install --save-dev @tauri-apps/cli

安装完脚手架工具,就可以开始创建 Rust 项目了。

bash 复制代码
$ npm run tauri init

它会向您询问几个问题:

  1. 您应用的名字是什么?

    这将会是您打包后和操作系统会调用的应用名称。 您可以在此处填写任何您想要的名称。如 vite-project

  2. 窗口标题叫什么?

    这将会是您主窗口的默认标题。 您可以在此处填写任何您想要的名称。如 vite-project

  3. 前端页面资源 (HTML/CSS/JS ) 相对于 <current dir>/src-tauri/tauri.conf.json 文件将被创建的位置?

    这是 production环境时tauri加载web前端资源的目录.

    Use ../dist for this value.

  4. 开发环境时的加载路径?

    可以是一个网络地址也可以是一个文件路径 development .

    Use http://localhost:5173 for this value.

  5. 你将使用什么命令来开发前端页面?

    这是启动前端开发服务器的命令。

    Use npm run dev (make sure to adapt this to use the package manager of your choice).

  6. 你将使用什么命令来构建前端页面?

    这是构建前端文件的命令。

安装完成后,会在项目根目录生成一个文件夹 src-tauri,在这个文件下中放置着 tauri 的配置以及以后打包的应用程序,结构如下:

bash 复制代码
- src-tauri
-- icons # 应用图标
--- 32x32.png
--- icon.icns
--- icon.ico
--- icon.png
-- src
--- main.rs # Rust 程序的入口,也是启动 Tauri 的地方
-- target
--- debug
--- release # 打包后的应用程序 - 可以发布的版本
--- .rustc_info.json
--- CACHEDIR.TAG

在 package.json 文件中添加 脚本命令

json 复制代码
{
	"scripts": {
		"tauri": "tauri"
	}
}

此时还不能运行 npm run rauri dev 来启动应用程序,还需要更改一个 tauri.conf.json 的默认配置项 identifier, 否则就报如下错误: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.

json 复制代码
{
	"tauri": {
		"bundle": {
			"identifier": "com.tauri-app.dev"
		}
	}
}

注意:vite运行的port端口必须要与tauri配置的port保持一致,否则访问启动应用程序。

配置完成后就可以 npm run tauri dev 开启动应用程序了,第一次启动应用程序比较慢,会自动下载若干依赖和插件。

打包后的应用程序就在 src-tauri/target/release/文件夹中,其中 vite-project.exe 就是应用程序,仅为3M左右。双击 vite-project.exe就可以启动的应用程序。也可以把文件复制到其他地方启动,是一样的效果。

3.打包应用程序

bash 复制代码
# build
$ npm run tauri build

打包之后的应用程序

4. 实例分享

DEMO:tauri-app桌面应用程序下载


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

  2. https://visualstudio.microsoft.com/visual-cpp-build-tools/ ↩︎

  3. https://www.rust-lang.org/tools/install ↩︎

相关推荐
烬羽几秒前
给 Agent 一个检索式记忆:把对话历史存进 Milvus,该记的都记得
javascript·数据库·agent
磐链科技10 分钟前
区块链开发入门实战:用 Hardhat 与 Ethers.js 搭建你的第一个 DApp
开发语言·javascript·区块链
码艺-Alimjan24 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
可乐鸡翅yeah_25 分钟前
hls.js 多实例并发踩坑,多视频页面播放器内存与冲突问题解决
开发语言·前端·javascript·音视频·hls·m3u8·m3u8在线播放
涛涛ing33 分钟前
你的页面为什么总是卡成PPT?2026年,90%的前端都忽略了主线程
前端
SoaringHeart34 分钟前
Flutter 进阶 | 组件封装:用 CustomPainter 实现光环动画组件AnimatedHalo
前端·flutter
IT_陈寒39 分钟前
JavaScript的隐式转换太坑了,我的==比较怎么就炸了?
前端·人工智能·后端
雪芽蓝域zzs1 小时前
第十四节:后端返回权限动态路由
前端·javascript·vue.js
小磊哥er1 小时前
Wonder Claude Code - 一个可运行的、教学级的 Claude Code 精简复刻
javascript·ai编程
Rain5091 小时前
谁动了我的 URL?——记一次微前端“灵异 Bug“的排查实录
前端·vue.js·人工智能·前端框架·bug·ai编程