当前位置:网站首页>tauri vs electron
tauri vs electron
2022-06-26 12:38:00 【云满笔记】
1. tauri vs electron
1.1. Tauri 是什么
Tauri 是一个跨平台 GUI 框架,与 Electron 的思想基本类似。Tauri 的前端实现也是基于 Web 系列语言,Tauri 的后端使用 Rust。Tauri 可以创建体积更小、运行更快、更加安全的跨平台桌面应用。
1.2. 前端看法
tauri 这个时候火是要带这个时间点的背景来看的,其中我认为最重要的 2 点是 rust 和 webview2。
rust
- rust 多受欢迎这里不多表述,仅抛几个链接,linux 内核接纳 rust, deno 采用 rust, 微软拥抱 rust, fuchsia 的 rust 代码占比超 50%, Apple 在底层 all-in rust, 连续 6 年的 stackoverflow 最受欢迎语言。
- tauri 采用的 rust 对应了 electronjs 的 nodejs, 没有 nodejs 这个 runtime, 也就更薄。nodejs 的最大优势是异步事件驱动 libuv 和 js 语言。rust 基于 future 的 tokio 等库有得一比,(且熟悉的 async await 开箱可用)。rust 强烈拥抱 wasm 对各端语言的开发者诱惑力很大。
- rust 被很多开发者定位为系统编程,对系统 api 的集成和调用优势很大。
- rust 还有满多优势:编译期内存安全、零成本抽象、支持高并发、丰富类型系统、易用的 cargo 包管理、ffi 编译友好(和 node-gyp 比更友好)
- 缺点是学习门槛高,但对于 c/c++开发者而言包管理、标准库、编译期内存安全等诱惑力十足。
webview2
- tauri 使用的渲染库 wry 在 macos 下采用 Webkit.framework, 在 windows 下采用了 webview2。
- 微软对 webview2 runtime 的支持力度比较大。为提升 office 应用、outlook 等的体验,2021 年 4 月开始对 windows 2101 版本以上进行推送。具体覆盖率数据目前不清楚(看有没哪位大神可以透露下)。
- 不同应用可以共享 webview2。electronjs 想实现的共享运行时被 webview2 实现了。
- webview2 runtime 122MB, win11 预装了,win11 之前的版本可以内嵌到应用的安装包,可以复用非稳定版 edge 浏览器的 runtime(稳定版不复用), 也可以单独下载(推荐,这样不同 tauri 应用可以共享 runtime)。
- webview2 runtime 的常青模式甚至可以做到比 electronjs 的 chromium 更新更快。
- 微软内部桌面应用逐渐从 electron 切换到 webview2。
总而言之 tauri 是卡着时间点的框架,是桌面应用螺旋形上升发展的一个现象级框架。
1.3. 开源项目作者看法
作为 Electron 的替代方案,这类的框架越来越多,tauri 只是其中之一,他们都尝试解决 Electron 的两个比较明显的的问题:
- 包太大,因为 electron 会自动塞入 Chromium 和 nodejs, 一个什么也不做的 electron 项目压缩后也大概要 50m。
- 内存消耗过大,因为 Chromium 本身就很吃内存,再加上提供操作系统访问能力的 nodejs, 很可观的内存消耗,对小工具类的项目不友好。
tauri 看了一下,不再塞入 Chromium 和 nodejs, 前端使用操作系统的 webview, 后端和操作系统集成这块使用 rust 实现,理论上应该比 nodejs 要精简高效,类似的项目还有:
- NeutralinoJS 前端嵌入一个 webview, 后端直接实现一个 c++ 实现的 http server。
- Chromely 前端嵌入一个 CEF, 后端使用 .NET。
- electrino 和 tauri 类似,使用系统的 webview, 并实现一个后端 (windows 下似乎也是基于 .NET)。
- go-astilectron 仍然基于 Electron, 但后端换成 go 语言。
- wails webview+go 的后端
但是这类项目的问题都在于:不成熟,基本上看下文档就知道了,作为开发桌面应用的方案,操作系统访问的 api 很少,甚至不具备 ( 或者是没有写文档?), 很难用于开发正式的项目,但是值得关注,一旦成熟起来,替代 Electron 就大有希望。
边栏推荐
- 栈,后入先出
- Processing 多面体变化
- P5733 【深基6.例1】自动修正
- Power Designer - Custom Comment button
- Openlayers drawing dynamic migration lines and curves
- Tiger DAO VC产品正式上线,Seektiger生态的有力补充
- Group counting practice experiment 9 -- using cmstudio to design microprogram instructions based on segment model machine (2)
- NoSQL mongodb - 04 mongodb database and web service combination case
- Sharing ideas for a quick switch to an underlying implementation
- 别乱用 FULL_CASE 和 PARALLEL_CASE
猜你喜欢

opencv高速下载

Word文档导出(使用固定模板)

程序员必备,一款让你提高工作效率N倍的神器uTools

Redis learning - 02 common data types, operation commands and expiration time

National standard gb28181 protocol easygbs video platform TCP active mode streaming exception repair

Echart堆叠柱状图:色块之间添加白色间距效果设置

机器学习笔记 - 时间序列的季节性

Tiger Dao VC products are officially launched, a powerful supplement to seektiger ecology

快手实时数仓保障体系研发实践

软件测试测试常见分类有哪些?
随机推荐
First knowledge - Software Testing
Source code learning: atomicinteger class code internal logic
. Net Maui performance improvement
轻流完成与「DaoCloud Enterprise 云原生应用云平台」兼容性认证
Tiger Dao VC products are officially launched, a powerful supplement to seektiger ecology
[极客大挑战 2019]RCE ME 1
Guacamole installation
Splunk iowait 报警的解决
[geek challenge 2019] rce me 1
P2393 yyy loves Maths II
Redis learning - 05 node JS client operation redis and pipeline pipeline
Redis learning - 02 common data types, operation commands and expiration time
Adobe Acrobat prevents 30 security software from viewing PDF files or there are security risks
关于NaN的一些总结
微信小程序测试点总结
Word文档导出(使用固定模板)
第十章 设置结构化日志记录(二)
KVM video card transparent transmission -- the road of building a dream
C# const详解:C#常量的定义和使用
【Spark】.scala文件在IDEA中几种图标的解释