前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不只是Electron, 跨平台桌面开发的新选择 - Tauri

不只是Electron, 跨平台桌面开发的新选择 - Tauri

作者头像
御剑
发布2024-03-25 10:19:04
1920
发布2024-03-25 10:19:04
举报
文章被收录于专栏:微言码道微言码道

如果你想做一个桌面App, 又想支持Windows, MacO以及Linux的话. Electron是当下非常流行, 也是最好的选择.

不过今天我要说的是一个和Electron非常类似, 有着其独特的优点与不足的新的选择. 就是Tauri.

想要选择一个合适的技术来开发一个跨平台桌面的App, 你就需要知道Electron与Tauri各自的优缺点.

从Electron说起

Electron的流行, 最核心的优势无非是以下两个原因:

  • Node + JavaScript技术搭配
  • 跨平台, 支持主流三大操作系统

想像一下, 仅仅是只需要知道JavaScript这门语言, 就能开发出一个跨平台的桌面App. 从性价比角度来考虑, 你能想像还有更好的吗?

Electron本质是利用Chrome V8内核, 因为Chrome V8内核a支持三大主流操作系统, 自然基于它的也就能轻松做到跨平台了. 而后JavaScript的开发人员非常多, 因此它的性价比极高.

当然, Electron的最大缺点就是性能. 每个Electron开发出来的App都自带一个V8内核, 不仅是App体积大, 更重要的是每运行一个类似的App, 就相当于开了一个Chrome浏览器.

Chrome浏览器虽然很流行, 但它占用内存及CPU的名声在外, 众人周知.

Electron其实现在非常流行, 基本上现在你发现一个软件支持主流操作系统, 体积又很大的, 8成就是Electron做的. 可能你没有意识到, 但我可以轻易的列举一些常见的基于Electron的应用:

  • Visual Studio Code
  • Mongo Compass
  • 阿里云盘桌面端
  • Slack
  • Notion
  • Microsoft Teams
  • 迅雷X
  • 腾讯文档桌面端

其实还有挺多, 这个列表可以挺长的.

Tauri, 后起之秀

跨平台的需求始终存在. 再有钱的公司或团队, 都会偏向选择跨平台的技术方案. 而不是每个操作系统各种写一套. 除非对性能有较高的需求的应用以外, 选择跨平台的技术方案是最佳的.

但是Electron的缺点前面也说了, 比较明显, 最为关键的就是性能.

那自然会出现又跨平台, 又能提高性能的技术方案了. 不错, 这就是今天我要介绍的Tauri

Tauri

Tauri是基于Rust语言而实现, 支持跨平台的桌面开发框架.

它与Electron的相同点表现在:

  • 跨平台, 开发出的App支持主流Windows, MacOS以及Linux.
  • 支持使用前端框架来实现App UI. 也就是主要都是用前端技术来开发.
  • 都有调用原生系统能力的方式. 也就是不只是个网页, 而是能与原生API打交道.

不同点表现在:

  • Electron基于V8内核渲染网页. 而Tauri是调用系统native能力渲染网页.
  • Electron基于Node提供与原生系统打交道, 而Taure基于Rust语言让你与原生打交道.

其实从相同以及不同点, 你也基本能知道Tauri的优缺点了.

优缺点

架构的本质就是选择. 而不是去评价哪个好, 哪个差. 每一个语言, 技术或框架都有它的优点与不足. 做为架构师的作用, 就权衡利弊, 做出最合适的选择.

优点

性能表现更好

基于Rust语言, 同时又调用native来渲染网页, 而不是Electron那种把整个V8内核打包进App, 自然在性能上更胜一筹.

应用体积小

基于Tauri打包的应用, 体积非常小. 基本只有你代码编译后的体积大小. 最小的600KB足以. 而一个Electron应用, 就算呈现一个空网页, 体积大小也是几十M起步.

更安全

无论是V8内核, 或是Node语言. 在语言安全, 或语言漏洞上来相比, 都会比Rust稍差一些. 自然基于Tauri开发出来的应用 , 更安全可靠.

灵活性

Tauri并不限制任何前端技术, 只要能生成在Web运行的技术 (纯HTML + JS + CSS都行), 都能和Tauri结合. Electron主要是现代一些前端技术, 主要是是基于package.json这种模式开发的.

V2开始支持移动端

Tauri的v2版本还在beta中, 但相对于V1来说, 它增加了对移动端的支持.

缺点

Tauri也不是完美无缺的. 它的缺点也非常明显

前后端技术分离

用Tauri, 意味着主要使用前端技术, 那就是JavaScript或TypeScript, 后端一些支持(比如调用原生能力)得用Rust. 这就是明显的前后端技术分离.

而Electron则不一样, 就一个语言. 不管是开发网页, 还是写Node等. 统统都是JS或TS.

学习曲线高

基于Tauri开发, 大多数情况下, 你只需要与前端技术打交道. 但这不是全部.

基于Rust的东西, 你总得有需要和Rust打交道的时候. 特别是想要调用原生的能力, Tauri提供了JS与Rust交互的机制, 这意味着你虽然不需要非常精通Rust, 但至少要能理解并写一些简单的Rust.

对大多数前端程序员来说, 学习Rust是个曲线比较高的事情.

兼容性

Chrome V8内核打包进去体积大, 但至少运行环境统一, 不用担心网页在不同的内核上运行效果不一.

那基于原生native来渲染网页的Tauri, 自然就没有这个优点了.

你得测试你的应用在不同的操作系统上的网页兼容性. 编写CSS, JS等也不得不考虑支持不同的操作系统. 再考虑到Linux内核多样化, 兼容性对Tauri来说, 可能是个头疼的工作.

生态不丰富

Node的生态非常丰富, 要啥有啥. 想用SQLite, 有的是现成的成熟的框架.

Rust呢? 当然比不上Node的生态丰富了.

这意味着如果使用Tauri, 有时候找不到好的框架

最后

不介意性能和软件体积, 对跨平台桌面开发来说, 仍然是Electron更具性价比.

但如果你想找一个更轻, 更小, 体积更小的跨平台方案. 那我今天说的Tauri应该可以纳入你的考虑.

特别是Tauri V2开始支持移动端, 这可意味着真正的一次编写, 到处运行了.

这对于那些懂前端, 又有能力学习RUST的程序员群体来说, 可能是个更好的选择了.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微言码道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从Electron说起
  • Tauri, 后起之秀
  • 优缺点
    • 优点
      • 缺点
      • 最后
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档