Electron 与 Tauri:哪个跨平台框架更适合你?
ccwgpt 2024-11-19 02:28 30 浏览 0 评论
在跨平台应用程序开发领域,如果开发人员有一点共识,那就是使用 HTML、CSS 和 JavaScript 创建图形用户界面(GUI)比借助众多跨平台框架中的任何一个都更容易。像 Electron 这样的框架为开发者提供了一种两全其美的选择。你可以使用 JavaScript 或其他语言编写应用程序,并在网络浏览器中以 HTML 作为应用程序的 GUI。
不过,Electron 虽广为人知,但并非同类框架中的唯一选择。现在,让我们来认识一下 Tauri,一个与 Electron 类似的框架。这是一个较新的项目,相应地没那么成熟,但在底层架构上存在重大差异。在某些关键方面,Tauri 项目比 Electron 开发的项目更紧凑、更具前瞻性、更强大且更灵活。
下面,我们来对比一下这两个框架,看看它们究竟如何。
Electron 的工作原理
你很有可能正在通过 Electron 的核心技术 —— 网络浏览器阅读这篇文章。
Electron 最初由 GitHub 开发,它依赖于几个关键的网络浏览器项目:Chromium(Google Chrome 和 Microsoft Edge 的基础)以及 Node.js(和 Google V8)JavaScript 运行时。Electron 项目将相当于一个由 Chromium 驱动的便携式网络浏览器实例与应用程序代码重新打包在一起。当应用程序启动时,它会启动浏览器,进而加载与之捆绑的基于 JavaScript 的应用程序。
在网络浏览器中能实现的一切,在 Electron 应用程序中也都有可能实现。实际上,Electron 应用程序甚至可以做得更多,因为打包的浏览器部分有权以传统基于浏览器的应用程序(如渐进式网络应用程序)无法做到的方式与本地系统进行交互。
大量流行的应用程序都在使用 Electron。例如 Visual Studio Code,它是一款文本编辑器和可配置的集成开发环境(IDE)。还有 Discord 消息应用程序、Obsidian 笔记程序、Docker Desktop、GitHub Desktop、Slack 和 Basecamp 3 等,也都是 Electron 应用程序。
然而,一些 Electron 应用程序也颇受争议。比如 Microsoft Teams,它作为一个 Electron 应用程序曾被广泛诟病,尽管在最近的版本中有了大幅改进。
对基于 Electron 的应用程序的一个常见(且完全合理)的批评是它们的资源占用。Electron 应用程序配备了自己独特的、供应商提供的网络浏览器副本,并且在启动时必须启动一个完全独立的网络浏览器进程。Electron 应用程序在磁盘上可能占用数百兆字节甚至更多,其内存占用通常也非常大。虽然现代硬件通常能够处理这种负载,但一个更大的问题随之而来:难道就没有更好的方法吗?
以 Visual Studio Code 为例,这是一个流行的 Electron 应用程序。所有视觉元素和交互性都由一个独立的浏览器组件提供,该组件还负责处理与整个系统的交互。
Tauri 的工作方式
用 Rust 编写的 Tauri 项目背后的基本理念与 Electron 相似。你编写一个应用程序,其用户界面是网页,然后将该应用程序捆绑起来,使其通过一个自包含的网页浏览器运行。
Tauri 最大的不同在于它没有捆绑整个浏览器。相反,Tauri 为应用程序运行的任何操作系统使用本机系统的 webview 组件。这样,应用程序可以以小到几兆字节的捆绑包交付。Tauri 捆绑包使用 WRY 与本机 Web 视图进行交互,使用 andtao 进行窗口管理,并与系统托盘和其他资源进行接口。
你还可以使用大多数 HTML/CSS/JS 框架,Tauri 原生支持一大批流行的框架,如 Vue.js、Svelte、React、SolidJS、Angular、Preact、Yew、Leptos 和 Sycamore。你可以将现有的网络项目迁移到 Tauri 的后端。
不过,Tauri 有一个可能的缺点,那就是你至少需要一些 Rust 的经验。应用程序的后端或 “服务器端” 部分是用 Rust 编写的,整个软件包作为独立的 Rust 可执行文件进行编译和交付。
你可以将整个应用程序用客户端 JavaScript 编写,但这会严重限制其功能。除了 Rust 之外,还可以使用其他运行时或语言作为后端,例如 Python,但强烈推荐使用 Rust。
如果你对 Rust 还不太熟悉,Tauri 存储库中的示例应用程序是一个很好的起点,可以帮助你更好地了解 Rust,并查看如何实现特定概念,例如启动时带有启动屏幕的应用程序。
与 Electron 不同,目前用 Tauri 构建的主流桌面应用程序还比较少。这其中的一些原因可能是 Electron 的遗留影响,或者是 Rust 与 JavaScript 相比相对复杂。但也有相当多的应用程序,包括商业和开源的,都是用 Tauri 编写的。例如 PostgreSQL 的 pgMagic GUI 客户端、Payload 文件传输工具和 Noor 团队聊天应用程序。
以 Payload 为例,这是一个用 Tauri 编写的文件传输应用程序。在 Microsoft Windows 上,它的运行时内存占用仅为 4MB,但该应用程序可以访问与 Electron 应用程序相同的所有系统级功能。
哪个更好:Tauri 还是 Electron?
目前,Electron 仍然是跨平台用户界面框架中最突出和最被理解的。尽管存在各种批评,但它仍然是提供具有良好系统集成和丰富 GUI 的跨平台应用程序的流行默认选择。然而,关于 Electron 的内存消耗及其二进制文件大小的抱怨是合理的,而且这些问题不会很快消失。它们与 Electron 应用程序的设计密切相关,只有重新设计 Electron 或底层浏览器组件才能解决这个问题。
Tauri 应用程序的设计从一开始就不同,旨在占用更少的磁盘空间和更少的内存。但这是以它是一种严重依赖 Rust 的新技术为代价的 ——Rust 是一种相对较新的语言,其开发生态系统也相对较新。对 Tauri 的承诺需要分别对后端的 Rust 和前端的 JavaScript 做出承诺。
我的结论是:如果你已经掌握了 Rust 或计划对它做出承诺,并且如果可交付成果的大小及其内存占用很重要,那么 Tauri 是最好的选择。如果你已经非常了解 JavaScript,Electron 是最好的 —— 特别是如果你已经交付了其他基于 Electron 的应用程序,并希望利用这些知识 —— 并且 Electron 的内存消耗和二进制大小不是问题。
相关推荐
- 盲盒小程序背后的技术揭秘:如何打造个性化购物体验
-
在2025年的今天,盲盒小程序作为一种新兴的购物方式,正以其独特的魅力和个性化体验吸引着越来越多的消费者。这种将线上购物与盲盒概念相结合的应用,不仅为消费者带来了未知的惊喜,还通过一系列技术手段实现了...
- 小程序·云开发已支持单日亿级调用量,接口可用率高达99.99%
-
2019-10-1914:1210月19日,由腾讯云与微信小程序团队联合举办的“小程序·云开发”技术峰会在北京召开。会上,微信小程序团队相关负责人表示“小程序·云开发”系统架构已经支持每天亿级别的...
- 程序员副业开启模式:8个GitHub上可以赚钱的小程序
-
前言开源项目作者:JackonYang今天推荐的这个项目是「list-of-wechat-mini-program-list」,开源微信小程序列表的列表、有赚钱能力的小程序开源代码。这个项目分为两部分...
- 深度科普:盲盒小程序开发的底层逻辑
-
在当下的数字化浪潮中,盲盒小程序以其独特的趣味性和互动性,吸引着众多消费者的目光。无论是热衷于收集玩偶的年轻人,还是享受拆盒惊喜的上班族,都对盲盒小程序情有独钟。那么,这种备受欢迎的盲盒小程序,其开发...
- 微信小程序的制作步骤
-
SaaS小程序制作平台,作为数字化转型时代下的创新产物,不仅将易用性置于设计的核心位置,让非技术背景的用户也能轻松上手,快速制作出功能丰富、界面精美的小程序,更在性能和稳定性方面投入了大量精力,以确保...
- 携程开源--小程序构建工具,三分钟搞定
-
前言今天推荐的这个项目是「wean」,一个小程序构建打包工具。在wean之前,大量小程序工具使用webpack进行打包,各种loader、plugin导致整个开发链路变长。wean旨在解...
- 校园小程序的搭建以及营收模式校园外卖程序校园跑腿校园圈子系统
-
校园小程序的架构设计主要包括云端架构和本地架构两部分。云端架构方面,采用Serverless架构可以降低技术门槛,通过阿里云、腾讯云等平台提供的云服务,可以实现弹性扩容和快速部署。例如,使用云数据库、...
- 盲盒小程序开发揭秘:技术架构与实现原理全解析
-
在2025年的今天,盲盒小程序作为一种结合了线上购物与趣味性的创新应用,正受到越来越多用户的喜爱。其背后的技术架构与实现原理,对于想要了解或涉足这一领域的人来说,无疑充满了神秘与吸引力。本文将为大家科...
- 月活百万的小程序架构设计:流量暴增秘籍
-
从小程序到"大"程序的蜕变之路当你的小程序用户量从几千跃升至百万级别时,原有的架构就像一件不合身的衣服,处处紧绷。这个阶段最常遇到的噩梦就是服务器崩溃、接口超时、数据丢失。想象一下,在...
- 认知智能如何与产业结合?专家学者共探理论框架与落地实践
-
当前,以大模型为代表的生成式人工智能等前沿技术加速迭代,如何将认知智能与产业结合,成为摆在各行各业面前的一个问题。论坛现场。主办方供图7月4日,2024世界人工智能大会暨人工智能全球治理高级别会议在...
- 现代中医理论框架
-
...
- 认知行为(CBT)中的ABC情绪理论
-
情绪ABC理论是由美国心理学家阿尔伯特·艾利斯(AlbertEllis1913-2007)创建的理论,A表示诱发性事件(Activatingevent),B表示个体针对此诱发性事件产生的一些信...
- 说说卡伦霍妮的理论框架,对你调整性格和人际关系,价值很大
-
01自在今天我主要想说下霍妮的理论框架。主要说三本书,第一本是《我们时代的神经症人格》,第二本是《我们内心的冲突》,第三本是《神经症与人的成长》。根据我的经验,三本书价值巨大,但并不是每个人都能读进去...
- 供应链管理-理论框架
-
一个最佳价值的供应链,应该是一个具有敏捷性、适应性和联盟功能(3A)的供应链,其基本要素包括战略资源、物流管理、关系管理以及信息系统,目标是实现速度、质量、成本、柔性的竞争优势。篇幅有...
- 微信WeUI设计规范文件下载及使用方法
-
来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信Web开发量身设计,可以令用户的使用感知...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- bootstrap框架 (43)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- express框架 (43)
- scrapy框架 (52)
- beego框架 (42)
- java框架spring (43)
- grpc框架 (55)
- 前端框架bootstrap (42)
- orm框架有哪些 (43)
- ppt框架 (48)
- 内联框架 (52)
- winform框架 (46)
- gui框架 (44)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)