Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

玩过Tauri和Electron,最终我选择Flutter进行跨平台应用开发 - 掘金 #44

Open
zepang opened this issue Aug 13, 2023 · 0 comments

Comments

@zepang
Copy link
Owner

zepang commented Aug 13, 2023

Flutter、Tauri 和 Electron 都是现代桌面应用程序开发的流行选择,每种技术有其独特的优缺点,下面我们就来对它们进行一个全面的技术对比。

Flutter 是 Google 推出的一款开源的 UI 工具包,用于构建高性能、高保真度的移动、Web 和桌面应用程序。Flutter 使用自己的渲染引擎来绘制 UI,从而提供更快的性能和更好的用户体验。Flutter 还提供了丰富的构建工具、库和插件,使得开发者可以更快速地构建应用程序。

Flutter框架具有如下的一些特点:

  • Flutter 的渲染引擎可以提供高性能的 UI 渲染,支持 60fps 的动画效果,据说,性能比原生都强。
  • Flutter 多端体验一致性强,因为他有自己的渲染引擎,脱离原生那套UI束缚。
  • Flutter 使用 Dart 语言,具有强类型、高效和易于学习的特点,基本上,你会写JS,这个上手很快。
  • Flutter 支持快速迭代和热重载,使得开发者可以更快速地进行开发,Ctrl+S马上就看到你的变更。
  • Flutter 支持跨平台开发,可以在 Android、iOS、Web 和桌面上运行,你没看错,真正的全平台啊,可谓是一网打尽。
  • Flutter 提供了丰富的 UI 组件和插件,使得开发者可以更快速地构建应用程序。
  • Flutter 社区插件也非常丰富 ,pub.dev/,基本上你能想到的所有插件他都有,就是算没有,自己懂Android和iOS开发,封装一个也非常简单,都有套路模版。

同时,作为一个开源的跨平台方案,Flutter也获得了大量的star。

当然,Flutter也并不是没有缺点,下面就来罗列一下Flutter框架的一些缺点。

  • 初学者需要花费一定时间来学习 Dart 语言和 Flutter 框架,但好在上手难度非常低。
  • 打的包比Tauri要大,因为自身做了一套渲染引擎需要打进去的缘故,但是要比Election要小很多。
  • Flutter 的桌面应用程序开发仍处于实验阶段,可能存在一些稳定性和兼容性问题。

不过,相信随着Google的版本迭代,这些问题很快被解决,Flutter也将成为一款真正意义上横跨pc、mobild和桌面的跨平台解决方案。

Tauri 是一款用 Rust 编写的桌面应用程序开发框架,它结合了 Web 技术和本地应用程序的优点,可以使用常见的 Web 技术(如 HTML、CSS 和 JavaScript)来构建应用程序,并将其封装在一个本地应用程序中。


作为一款基于Web技术来构建的跨平台应用方案,Tauri有如下特点:

  • Tauri 提供了一种易于使用的方式来构建跨平台的桌面应用程序,可以使用常见的 Web 技术来构建应用程序,这点和election打个平手,可能略好于Flutter,。
  • Tauri 的本地应用程序提供了更好的性能和更好的用户体验,与传统的 Web 应用程序相比,具有更快的加载速度和更好的响应能力,因为本地加载资源码,但仅仅是对比web应用而已,对比Flutter这不算什么优势。
  • Tauri 的本地应用程序可以借助rust与操作系统进行交互,可以访问操作系统的原生 API,如文件系统、网络和系统通知等。
  • Tauri 后端使用 Rust 语言,具有高效和安全的特点。

目前,Tauri在github也获得了大量的star。

不过,作为一款跨平台解决方案,Tauri的缺点也是蛮明显的。

  • Tauri 的文档和社区支持相对较少,可能需要开发者花费更多的时间来熟悉开发流程,遇到问题可能花费的时间也更长。
  • Tauri 的跨平台支持可能不如 Flutter 和 Electron 那么广泛。 
  • Rust 语言上手难度还是比较大的,如果使用Tauri额外的增加了Rust语言的学习成本。
  • Tauri 在各平台上交互体验可能有较大差别,因为他基于平台自带的 WebView2 内核渲染,这就决定了不同平台可能会有较大差异。
  • 不支持移动端,虽然说提出了开发计划,但是却迟迟没有发布。

Electron 是一款基于 Chromium 和 Node.js 的桌面应用程序开发框架,可以使用 HTML、CSS 和 JavaScript 来构建跨平台的桌面应用程序。Electron 提供了丰富的构建工具、库和插件,使得开发者可以更快速地构建应用程序。

Electron有如下的一些特点:

  • Electron 提供了易于使用的方式来构建跨平台的桌面应用程序,可以使用常见的 Web 技术来构建应用程序。
  • Electron 的文档和社区支持非常丰富,可以快速解决问题。
  • Electron 的跨平台支持非常广泛,可以在 Windows、macOS 和 Linux 上运行,很遗憾也没有移动端。
  • Electron 提供了丰富的构建工具、库和插件,使得开发者可以更快速地构建应用程序。

并且,作为目前主流的桌面应用开发方案,Electron也获得了大量的star。


不过,Electron的缺点也是蛮多的,比如:

  • Electron 的性能可能不如Flutter 和 Tauri 那么好,尤其是在处理大量数据和复杂 UI 的情况下,性能会相对差一些。
  • Electron 使用 JavaScript,可能存在一些安全和性能方面的问题,就说,如果想保护商业机密,保护一些代码实现,这点上可能很难做到,不像tauri,rust实现是打包为二进制的,flutter也可以打包加加密,让别人难以窥探,而election这个不太安全的点背诟病很多。
  • Electron 打包巨大,一个Demo程序就上百M,这个受限于他的实现原理。他打包会把chrome内核一起打进去,也正因为如此,所以Election相对tauri来说,这点又算个优势,保证各个平台交互体验基本一致。
  • Electron 不支持移动端,且没有支持的计划。


 

下面是我从UI性能、是否支持移动端和桌面端、打包体积和交互一致性等几个方面来对比Flutter、Tauri、Electron,如下表。

应用场景 Flutter Tauri Electron
构建高性能和高保真度的桌面应用程序 ✔️
支持移动端和桌面端 ✔️ ✔️
交互一致性 ✔️ ✔️
使用常见的 Web 技术构建桌面应用程序 ✔️ ✔️
需要较好的性能和用户体验,打包轻量 ✔️ ✔️
快速构建跨平台的桌面应用程序,注重交互一致性,需要广泛的文档和社区支持 ✔️ ✔️
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant