找回密码
 立即注册
搜索
查看: 3013|回复: 22

[软件] [泥潭CSDN化]Tauri试用和踩雷

[复制链接]
     
发表于 2022-6-7 16:12 | 显示全部楼层 |阅读模式
本帖最后由 dragrass 于 2022-6-7 16:18 编辑

最近要把一个web上的搜索引擎迁移成独立的桌面应用
一开始考虑Electron,但是electron大家都说打包太大,性能堪忧
主要是课题组的大家自用电脑参差不齐,有的还用着很老的笔记本,有的用游戏本,有的用carbon这种轻薄本
所以想弄个占用资源少一些的

泥潭大佬给推荐了Tauri,然后我就拿Tauri和Vue做了

Tauri是基于Rust和Webview2.0的类似于Electron的把web应用打包成桌面应用的框架
号称是打包体积是Electron的几十分之一

当然主要是因为tauri在windows不用打包Chromium,而是用系统自带的Webview;后台则直接是rust,不是Nodejs
单独的exe确实体积很小:
Screenshot 2022-06-07 155720.jpg
打包后的安装程序也很小:
Screenshot 2022-06-07 155800.jpg

但是对于没有预装Webview的电脑,比如win10,win7,tauri打包好的安装程序会自动下载webview
当然也可以选择把webview打包到安装包里,不过这样的话安装包就要增加大概150MB的体积,这样相对electron其实也没有明显优势

因为没有打包过electron版本,所以不好比较内存占用,我这个程序大概吃70MB-180MB的内存:
image.png

开发的话就用VS Code就行,Tauri可以和Vite或者Vue-Cli之类的结合

Tauri的易用性我觉得比Electron更好,几乎只需要前端知识就能做一个不错的桌面程序出来:

1. Tauri原生就和Vite结合得非常好,基本可以傻瓜式的生成工程文件,这一点比Electron好
2. Tauri没有主进程渲染进程的区别,其提供的API比electron简单直接很多,也可以直接在模块里导入
3. Tauri直接给了一个AJAX api,叫http.fetch,可以替代Axios
4. 理论上Tauri的后台逻辑可以用rust写,当然也可以用nodejs或者python写,一起打包然后用api交互


但是也有坑,就是上面说的,如果提交http请求,就只能用http.fetch,用Axios有跨域问题,哪怕后台服务器设置允许跨域了也不行。但是http.fetch传参没有axios方便,传多个参数好像只能写循环。不过针对https请求,Axios还是可以用的
还有就是中文互联网上tauri的文章不多
但其实英文互联网上也不多
查找问题主要是官网https://tauri.studio/,官方社区或者github issue,但是文档暂时只有英文版

这个东西感觉还是挺好用的,但是能不能超过electron就不知道了
本来这个也不是谁好用谁就一定能赢
回复

使用道具 举报

     
发表于 2022-6-7 16:19 | 显示全部楼层
刚看rustdesk他们弃用了tauri因为ipc性能不足,不过web应用要啥自行车。

还有win10现在如果装过office之类的会自动装webview2

回复

使用道具 举报

发表于 2022-6-7 16:22 | 显示全部楼层
我也比较看好Tauri替代Electron做跨平台桌面开发,解决了性能和体积的问题
最近看github trending的几个项目都用了Tauri
回复

使用道具 举报

     
发表于 2022-6-7 16:22 | 显示全部楼层
唉、桌面是不是就天生了该死
就能吃口二手屎的感觉…
回复

使用道具 举报

     
 楼主| 发表于 2022-6-7 16:26 来自手机 | 显示全部楼层
chaucerling 发表于 2022-6-7 16:22
我也比较看好Tauri替代Electron做跨平台桌面开发,解决了性能和体积的问题
最近看github trending的几个项 ...

Tauri说是要支持移动开发,如果真的另存为就能把桌面web app变成手机app,那估计会很多人用

— from OnePlus NE2210, Android 12 of S1 Next Goose v2.5.4
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-6-7 16:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-6-7 16:40 来自手机 | 显示全部楼层
董卓 发表于 2022-6-7 16:22
唉、桌面是不是就天生了该死
就能吃口二手屎的感觉…

移动也一样,用类似react/vue那一套语法思路写界面是大势所趋,Android和iOS自己都搞了类似的玩意儿。


—— 来自 Xiaomi Mi 10, Android 12上的 S1Next-鹅版 v2.4.3
回复

使用道具 举报

     
发表于 2022-6-7 16:42 来自手机 | 显示全部楼层
以前试过。windows打包还要安装,不能是简单的exe,最后没有用
回复

使用道具 举报

     
 楼主| 发表于 2022-6-7 17:28 来自手机 | 显示全部楼层
lessball 发表于 2022-6-7 16:42
以前试过。windows打包还要安装,不能是简单的exe,最后没有用

target/release文件夹里有一个exe的

安装程序只是确保安装webview

— from OnePlus NE2210, Android 12 of S1 Next Goose v2.5.4
回复

使用道具 举报

     
 楼主| 发表于 2022-6-7 17:32 来自手机 | 显示全部楼层
本帖最后由 dragrass 于 2022-6-7 17:35 编辑
omnitoken 发表于 2022-6-7 16:40
移动也一样,用类似react/vue那一套语法思路写界面是大势所趋,Android和iOS自己都搞了类似的玩意儿。

主要是web技术在界面美化和界面逻辑上积累太丰富了

原生桌面应用想要实现js+css那种美化效果成本太高,而且不同系统实现起来途径和效果也不一样

话说这么多年,web算是真正的跨平台做的最好的系统了

— from OnePlus NE2210, Android 12 of S1 Next Goose v2.5.4
回复

使用道具 举报

     
发表于 2022-6-7 17:47 | 显示全部楼层
我之前也试用了一下,纯前端不会rust。rust部分啥都不写,主要是想把自己用的工具能打包成exe的格式。
使用tauri的api,前端也可以访问特定路径下文件(比如下载文件夹),但是要不受限制还是得走rust。
打包比electron简单,不需要自己再去搞,脚手架直接就好了。
另外不需要翻墙也能装依赖,对于国内来说也挺便利。

不过说到大小,虽然最后打包出来只有几M起步,但是编译的时候会产生几个G的文件……
要说真遇到的坑只有一个,有一个拖放文件的逻辑,在网页上是通的,直接复制到tauri里面就不行了,不知道为啥。
回复

使用道具 举报

     
发表于 2022-6-7 17:49 | 显示全部楼层
之前试过这个还可以吧
https://github.com/wailsapp/wails
可是2.0太久了还是不出
回复

使用道具 举报

     
发表于 2022-6-7 17:51 | 显示全部楼层
董卓 发表于 2022-6-7 16:22
唉、桌面是不是就天生了该死
就能吃口二手屎的感觉…

没钱 至少大陆是这样
我16年之前搞wpf的 之后去画网页钱翻了三倍
16年 react vue 那套在 wpf 数据绑定 mvvm 来看实在是...
回复

使用道具 举报

     
 楼主| 发表于 2022-6-7 17:54 来自手机 | 显示全部楼层
本帖最后由 dragrass 于 2022-6-7 18:03 编辑
iou90 发表于 2022-6-7 17:51
没钱 至少大陆是这样
我16年之前搞wpf的 之后去画网页钱翻了三倍
16年 react vue 那套在 wpf 数据绑定 m ...

国外热门的消费软件很多都是网页套壳
不过国外做专业软件开发的,对性能要求高的,非网页模式还是吃香
国内做消费软件不太注重性能

— from OnePlus NE2210, Android 12 of S1 Next Goose v2.5.4
回复

使用道具 举报

     
发表于 2022-6-7 18:04 来自手机 | 显示全部楼层
一套代码全平台开发,不也挺好吗。

—— 来自 HUAWEI JAD-AL50, Android 10上的 S1Next-鹅版 v2.5.4
回复

使用道具 举报

     
发表于 2022-6-7 18:06 | 显示全部楼层
lessball 发表于 2022-6-7 16:42
以前试过。windows打包还要安装,不能是简单的exe,最后没有用

基于 tauri 的 Cl**h Verge 就有自动构建的便携版。
放链接会进小黑屋,自己去 GitHub 搜索吧。
回复

使用道具 举报

     
 楼主| 发表于 2022-6-7 21:54 来自手机 | 显示全部楼层
cxf5102 发表于 2022-6-7 17:47
我之前也试用了一下,纯前端不会rust。rust部分啥都不写,主要是想把自己用的工具能打包成exe的格式。
使用 ...

api虽然简单,但是有的地方做的还不完善

— from OnePlus NE2210, Android 12 of S1 Next Goose v2.5.4
回复

使用道具 举报

     
发表于 2022-6-7 22:12 | 显示全部楼层
不知lz考虑过PWA吗, 连打包都省了
回复

使用道具 举报

     
发表于 2022-6-7 22:37 来自手机 | 显示全部楼层
室友因为我的推荐试过,结局是从rust读文件传给webview这一段要经过额外的序列化解序列化性能过于捉鸡于是放弃。想写rust可能还是考虑egui,druid,iced这些吧,混合的话可以考虑flutter+rust

— from Sony J9110, Android 11 of S1 Next Goose v2.5.4
回复

使用道具 举报

发表于 2022-6-7 23:01 | 显示全部楼层
本帖最后由 chaucerling 于 2022-6-7 23:04 编辑
折光 发表于 2022-6-7 22:12
不知lz考虑过PWA吗, 连打包都省了

pwa的问题会被浏览器的api限制住,你访问还是一个web应用,只是缓存了在本地
回复

使用道具 举报

发表于 2022-6-7 23:12 | 显示全部楼层
前段时间也了解了下这个,不过暂时还没项目需求。先mark一下
回复

使用道具 举报

     
发表于 2022-6-7 23:16 | 显示全部楼层
chaucerling 发表于 2022-6-7 23:01
pwa的问题会被浏览器的api限制住,你访问还是一个web应用,只是缓存了在本地 ...

但是lz的应用本来就有web版, 前后端交互用的应该是http
回复

使用道具 举报

     
发表于 2022-6-8 13:03 来自手机 | 显示全部楼层
尝试了很多类似的框架,现在只用NW.js和Neutralinojs。
Neutralinojs类似于Tauri,也可以把应用打包为很小体积的EXE,前端也是用WebView2,比Tauri好的是不需要用庞大的VS2022来编译。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-22 17:25 , Processed in 0.084773 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表