初识Tauri

简述

Tauri是一个跨平台的开发框架,使用rust开发。前端用前端技术构建用户界面,后端使用rust和平台系统交互。

创建项目

可以用Bash/PowerShell/Fish/npm/deno/Cargo等工具创建项目。

下面以pnpm示例:

bash 复制代码
pnpm create tauri-app

后面的步骤和创建前端项目是一样的。根据提示选择前端的语言、框架等等。

项目目录和前端项目也是一样的,只是多了一个src-tauri目录。

src-tauri目录下就是rust代码,可以在里面编写供前端调用的方法,或者是给前端发送事件消息。

界面的开发使用前端技术,可以用react,也可以用vue,或者其他前端框架。与平台系统交互的功能,用rust编写。

对Web开发者来说,用这个技术可以快速地创建桌面应用。

发布

要打包成桌面应用的话,执行build命令就好。

继续以pnpm为例:

bash 复制代码
pnpm tauri build

提示:build之前要先安装rust环境

目前Tauri支持Linux、macOS、Windows、Android、iOS。

打包后的启动程序在src-tauri/target/release/bundle目录下。执行安装程序,安装好后,就可以打开编写的桌面应用了。

架构

Tauri的核心包含一个Tauri的运行时,tauri-runtime在tauri本身和底层的webview抽象层中充当一个胶水层。

Tauri使用WRY这个开源库做webview的抽象层。WRY是一个rust编写的webview渲染库,可以支持各种平台的桌面应用。在WRY和tauri-runtime之间,有一个tauri-runtime-wry,这一层为WRY定义了系统级的交互。

而WRY的下层依赖TAO。TAO是基于winit的一个fork。这是一个rust编写的跨平台的窗口管理类库。支持几乎所有的主流平台,Windows、Linux、Mac OS、Android、iOS......

最后简单总结:Tauri实现跨平台应用的方式是,实现一个webview的抽象,从而可以用前端技术编写GUI,webview抽象层的底层,则依赖rust的窗口管理类库,调用各个平台系统的webview库。

总结

用rust作后端,使Tauri有很高的性能。但是调用平台系统本身webview的跨平台方式,使GUI在不同平台上的表现不一致,有兼容性问题。

和electron相比,拥有更小的包体积,因为没有打包chromium,也没有源码泄露之类的风险,性能也更好,还能打包移动端,但是会有兼容性问题,而且后端用rust的话,不如electron好上手,如果不是rust熟手的话。

和flutter相比,同样有兼容性问题,dart也比rust好学。

对rust开发者来说,只需要找rust的GUI库就行,没有必要去用前端编写GUI。而对前端开发者来说,rust又增加了开发的学习成本。这个框架,感觉只适合同时会rust的前端熟手。而且只有少数对性能要求较高的场景会需要使用,其他场景electron也不差。如果要开发跨平台的应用,兼容性又是一个问题。实际的产品表现,肯定不如flutter这类框架。

在前端工具链也越来越多使用rust语言的时候,Tauri这些rust编写的框架也被一些前端开发者所使用。但如果我要开发一个跨平台的应用的话,我觉得自带绘图库的flutter的方案是最佳的。Tauri的兼容性问题,仍不能满足做商业应用的要求,能使用的场景太少了。

相关推荐
传奇开心果编程1 天前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
前端技术官2 天前
前端的技术判断力是怎么练出来的?
javascript·web前端·localstorage·debounce·弱网处理
传奇开心果编程5 天前
【Flutter踩坑排雷】第3课:const 误用坑|const 错误使用引发 UI 异常与性能损耗
flutter·移动开发·跨平台·dart·编程语言理论·编程框架·声明式ui
传奇开心果编程6 天前
Compose Multiplatform 共享边界实战:架构契约、互操作同步与可回退设计
kotlin·移动开发·跨平台·cmp·编程语言理论·编程框架·声明式ui
晓蛋6 天前
什么是C语言
c语言·跨平台·编程语言·高级语言·低级语言
传奇开心果编程6 天前
从替代到粒度:Compose Multiplatform 的决策模式重构已开启跨平台新时代
kotlin·移动开发·跨平台·cmp·编程语言理论·编程框架·声明式ui
恶猫7 天前
7-Zip - 免费开源的压缩解压王者
开源·免费·跨平台·winrar·7-zip·压缩·解压缩
紫金桥软件8 天前
紫金桥国产组态软件:安全稳定护航工业现场
数据库·自动化·跨平台·scada·组态软件
传奇开心果编程9 天前
【Compose Multiplatform跨端声明式UI实用技术】第20课:CMP跨平台经典示例深度解析
kotlin·移动开发·跨平台·编程语言理论·开发范式·编程框架·声明式ui
传奇开心果编程10 天前
【Compose Multiplatform跨端声明式UI实用技术】第17课:性能优化与基准测试
性能优化·移动开发·跨平台·编程语言理论·开发范式·编程框架·声明式ui