Hello, Tauri!

前言

之前用 python 做了两个软件,被吐槽最多的就是软件包体较大,占用了较多的硬盘空间。

主要原因是 python 是一门解释型语言**,在打包应用时,必须把 Python 解释器打包进去。

此外,PyInstaller** 之类的打包工具又采用了保守的打包策略,打包时会默认包含所有依赖,导致包体进一步增大。

负负相乘,导致依赖一多 python 应用,没有几百MB的体积,无法运行。

尽管有 nuitka 之类的编译型打包工具,但速度极慢,稳定性也欠佳。

因此,决定拓展一下技术栈,学习一下目前主流的Rust+Tauri的开发流,它们具有如下优势:

项目 Rust Tauri
语言层面 安全、快速、无GC 用 Rust 编写核心,安全
性能 接近 C/C++ 打包体积小、运行快
安全性 编译期保障 权限隔离机制
构建工具 cargo 强大统一 与 Web 打包工具融合
跨平台 一次开发,多平台部署 多平台桌面开发
社区趋势 最受欢迎语言之一 Electron 替代者、生态快速增长

Tauri 是什么?

Tauri 是一个用于为所有主流桌面(macOS、linux、windows)和移动(iOS、Android)平台构建微小而快速的二进制文件的框架。

开发人员可以集成任何编译为 HTML、JavaScript 和 CSS 的前端框架来构建用户体验,同时在需要时利用 Rust、Swift** 和 Kotlin 等语言实现后端逻辑。

Tauri 有三个主要优势:

  • 构建应用所需的可靠基础
  • 使用系统原生 webview(网页视图)带来的更小打包体积
  • 使用任何前端技术和多种语言绑定带来的灵活性

官方文档:v2.tauri.app/zh-cn/start...

环境安装

1. 检查 WebView2 安装情况

以 windows 开发环境为例,tauri需要依赖 WebView2 进行UI渲染,该依赖自 Windows 10(从版本 1803 开始)默认安装,正常情况无需再次安装。

2. 安装 Rust

通过 Rust 官网安装 Rust:

官网地址:www.rust-lang.org/zh-CN/tools...

3. 安装 Tauri CLI

使用 Rust 自带的包管理和构建工具 cargo 进行安装:

css 复制代码
cargo install tauri-cli --locked

4. 安装 Tauri 项目初始化工具

lua 复制代码
cargo install create-tauri-app --locked

启动第一个应用

使用 cargo 创建应用:

lua 复制代码
cargo create-tauri-app

创建时,会弹出一步步提示,最后一步选择前端框架,有以下可选项:

框架 特点说明
Vanilla (无框架) 最轻量,纯 HTML/CSS/JS,适合有性能要求或自建框架的开发者
React Facebook 维护,组件化强大,生态成熟,适合大型项目
Vue 上手快,语法简洁,模板逻辑分离好,适合中小项目或快速迭代
Svelte 编译时框架,运行时更小更快,开发体验极佳
Solid 新兴高性能框架,类似 React 但无虚拟 DOM,极小体积
Next.js 基于 React 的 SSR 框架,适合你想构建网页/桌面混合项目(实验性)
Nuxt.js Vue 的 SSR 框架,同上,支持 SEO / 服务端渲染(实验性)

编译启动应用:

复制代码
cargo tauri dev

打包应用:

复制代码
cargo tauri build

应用体积 8.34MB。

而且打包完之后,它顺便生成了 msi 和 exe 两种形式的安装包,比 pyinstaller 还需要编辑 spec 文件相比,实在太解手。

项目结构

整体项目结构如下,前后端很清晰。

csharp 复制代码
Project/                        # 项目根目录
├── README.md                   # 项目说明文档
├── src/                        # 前端资源目录
│   ├── assets/                 # 静态资源(如图片、SVG等)
│   ├── index.html              # 前端主页面
│   ├── main.js                 # 前端主JS逻辑
│   └── styles.css              # 前端样式表
├── src-tauri/                  # Tauri 后端相关目录
│   ├── build.rs                # Rust 构建脚本
│   ├── capabilities/           # Tauri 权限配置
│   ├── Cargo.lock              # Rust 依赖锁定文件
│   ├── Cargo.toml              # Rust 依赖与项目信息
│   ├── gen/                    # 生成代码目录(可能为空或自动生成)
│   ├── icons/                  # 应用图标资源
│   ├── src/                    # Rust 源码目录
│   ├── target/                 # Rust 编译输出目录
│   └── tauri.conf.json         # Tauri 配置文件

总结

初步体验 Tauri,感觉上手起来难度不高,兼容各种前端框架意味着样式的自由度会很高。后面计划采用这套技术栈开发一些有意思的小工具。

相关推荐
IT_陈寒40 分钟前
Redis性能提升30%的秘密:5个被低估的高级命令实战解析
前端·人工智能·后端
da_vinci_x1 小时前
告别手动“拼图”:AI+自动化游戏UI雪碧图(Sprite Sheet)工作流
人工智能·游戏·设计模式·prompt·aigc·技术美术·游戏美术
Zhangzy@1 小时前
Overleaf编译超时,超出免费计划编译时限(已解决)
人工智能
测试者家园1 小时前
Midscene.js为什么能通过大语言模型成功定位页面元素
javascript·自动化测试·人工智能·大语言模型·智能化测试·软件开发和测试·midscene
冰糖猕猴桃1 小时前
【AI】详解BERT的输出张量pooler_output
人工智能·自然语言处理·nlp·bert·pooler_output
Hello123网站2 小时前
Whispers from the Star:Anuttacon推出的以AI智能体语音交互为核心的太空生存游戏
人工智能·游戏·交互·ai工具
ASIAZXO3 小时前
机器学习——决策树详解
人工智能·决策树·机器学习
IT古董6 小时前
【第五章:计算机视觉-项目实战之图像分割实战】1.图像分割理论-(2)图像分割衍生:语义分割、实例分割、弱监督语义分割
人工智能·计算机视觉
大明者省8 小时前
《青花》歌曲,使用3D表现出意境
人工智能