掘金 人工智能 07月18日 10:53
Hello, Tauri!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了作者因Python打包软件体积过大、占用空间多的痛点,转而学习Rust+Tauri技术栈的经历。Rust+Tauri因其语言安全、运行快速、打包体积小、跨平台部署等优势,成为Electron的有力替代者。文章详细阐述了Tauri的核心优势,包括提供可靠的基础、使用系统原生webview实现小体积打包,以及支持多种前端技术和语言绑定的灵活性。同时,提供了详细的环境安装步骤、第一个应用的创建流程,并展示了项目结构,最终打包出的应用体积仅为8.34MB,极大地解决了作者此前遇到的问题。

📦 **Rust+Tauri的优势显著**:相较于Python打包应用体积普遍较大(数百MB)且依赖解释器的问题,Rust+Tauri技术栈能够构建出体积小、运行快的桌面应用。Rust语言层面的安全性和高性能,加上Tauri利用系统原生webview的特性,使得打包后的应用体积大幅减小,作者的示例应用仅为8.34MB,同时还支持跨平台部署,为开发者提供了更优的选择。

🚀 **Tauri的灵活性与易用性**:Tauri框架允许开发者集成任何编译为HTML、JavaScript和CSS的前端框架,如React、Vue、Svelte等,这意味着用户可以根据自己的技术栈和项目需求自由选择前端技术,实现高度的样式自由度和丰富的用户体验。同时,后端逻辑还可以利用Rust等语言实现,提供了强大的灵活性。

🔧 **简便的开发与打包流程**:文章详细介绍了Rust和Tauri CLI的环境安装步骤,包括检查WebView2、安装Rust、安装Tauri CLI及项目初始化工具。通过`cargo create-tauri-app`命令即可创建新项目,并可选择不同的前端框架。开发过程中使用`cargo tauri dev`进行调试,打包则通过`cargo tauri build`完成,并且能直接生成msi和exe安装包,相较于Python的PyInstaller,流程更为简化和便捷。

📂 **清晰的项目结构**:Tauri生成的项目结构清晰地划分了前端资源(`src/`)和Tauri后端相关目录(`src-tauri/`),使得项目的组织和管理更加有条理。前端部分包含静态资源、主页面、JS逻辑和样式表;后端部分则包含了Rust的构建脚本、依赖文件、权限配置、应用图标以及核心Rust源码等,前后端分离明确,便于维护和开发。

前言

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

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

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

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

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

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

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

Tauri 是什么?

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

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

Tauri 有三个主要优势:

官方文档: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 进行安装:

cargo install tauri-cli --locked

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

cargo install create-tauri-app --locked

启动第一个应用

使用 cargo 创建应用:

cargo create-tauri-app

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

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

编译启动应用:

cargo tauri dev

打包应用:

cargo tauri build

应用体积 8.34MB。

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

项目结构

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

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,感觉上手起来难度不高,兼容各种前端框架意味着样式的自由度会很高。后面计划采用这套技术栈开发一些有意思的小工具。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Rust Tauri 桌面应用 打包 性能优化
相关文章