📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入
Tauri(一)——更适合 Web 开发人员的桌面应用开发解决方案 ✅

背景 #

我们最近决定开发一个开源的桌面端应用程序(先卖个关子,会尽快推出,敬请期待!关注一下不迷路!),并选择了 Tauri 作为技术方案。可能只有少部分人了解过它,感兴趣的朋友们可以一起深入探讨!

Tauri 介绍 #

image.png

官方介绍:创建小型、快速、安全、跨平台应用程序

通俗的理解 #

Tauri 是一个跨平台的桌面应用程序框架,它使程序员能够熟练的使用 Web 技术(例如:HTML、CSS、JS 以及流程的框架 Vue.jsSvelteReactSolidJSAngularPreact 等),轻松的去创建桌面应用程序。

对于我们这些希望深入桌面应用程序开发的 Web 开发人员来说,Tauri 是一个非常适合的选择,而且不需要面对陡峭的学习曲线。如今,Web 技术已经成为最强大的 UI 技术之一,能够在多个支持 Web 浏览器的平台上无缝运行。使用 Tauri,我们可以完全按照在 Web 上设想的方式来设计 UI,这意味着可以继续使用熟悉的 Web 开发技能,打造出色且用户友好的界面。

在某些情况下,桌面应用程序的性能确实优于 Web 应用程序。选择桌面应用的一个关键原因是,Web 应用通常受限于浏览器内的本机 API,无法像桌面应用那样与操作系统深入交互。(例如,使用 Web 应用时,我们无法在后台访问文件系统或读取剪贴板数据。)而桌面应用则能更好地访问本机 API,甚至可以通过比 JavaScript 更高效的语言来实现性能的提升(例如:Rust)。因此,如果一个桌面框架既能利用灵活的 UI 和庞大的 Web 生态系统,又能提供对本机 API 的全面访问(Web + Native APIs),那将是一个完美的选择。

image.png

Tauri 结合了两个主要生态系统,并提供了对本机 API 的访问,让开发体验更加完善。

Tauri 的架构由两个核心组件构成:

  1. 是基于 Web 构建的前端
  2. 是使用 Rust 编程语言开发的后端,称为 Tauri Core。

前端允许我们使用自己擅长的 Web 技术(如 React 和 Vue)创建灵活且富有视觉吸引力的 UI,而 Rust 后端通过进程间通信打开了通向本机 API 的大门。(比如,能够访问剪贴板或进行文件系统操作。)借助 Rust 的高性能,即使在处理计算密集型任务时,我们的应用程序也能高效、平稳地运行。

这就是为什么我们认为 Tauri 是在 Web 技术基础上构建跨平台桌面应用程序的理想选择(技术选型)。

VS Electron #

Electron 简介 #

image.png

在此,我们必须提到 Electron,它可能是当今最流行的跨平台框架。从其版本的迭代,Star 的数量都不难看出。Electron 已经凭借成为众多知名应用程序的基础证明了自己的价值。如上图, 进入该网址 https://www.electronjs.org/apps 可以看到广泛的案例,每一个使用的应用都证明了 Electron 的强大功能和受欢迎程度。开发社区也对 Electron 所取得的成就给予了高度认可。

不过,在讨论任何技术细节之前,我觉得有必要对比一下 Electron 和其他框架,帮助我们更好地判断哪个框架最适合我们的需求,并做出明智的选择。

image.png

State of JavaScript 用户数据对比 #

对比这个事,肯定不能听一家之言,所以还是看看更多的数据,那就先看看 State of JavaScript 调查统计结果。分别从使用度、认知度、关注度、保留度、积极性等方面做了调查统计。

统计数据地址:https://2023.stateofjs.com/zh-Hans/libraries/mobile_desktop/

  1. 使用度 image.png

  2. 认知度 image.png

  3. 关注度 image.png

  4. 保留度 image.png

  5. 积极性 image.png

技术对比 #

对于技术方向对比,我也是刚开始接触,具体也不清楚,也给不出太多的建议,但是网上依然有很多人给出了对比结果,我们一起来看看。

下面是 ElectronJSTauri 的对比表格,从多个维度展示它们的差异:

特性ElectronJSTauri
框架体积应用体积较大,通常超过 100MB应用体积小得多,通常小于 10MB
内存占用内存占用较高,通常每个应用实例需要较多的内存资源内存占用较低,使用更少的资源
技术栈基于 Chromium 和 Node.js(打包整个浏览器运行时)基于 WebView 和 Rust(无需打包整个浏览器)
性能由于打包整个 Chromium,性能会较低使用原生系统的 WebView 组件,性能更高
API 访问通过 Node.js 可以访问部分系统 API提供 Rust 后端,能轻松访问操作系统的原生 API
安全性必须小心处理 Node.js 和 Web 内容的通信,防止安全漏洞默认更安全,Tauri 采用了严格的安全模式
打包和发布需要配置 electron-builder 或 electron-forge 来打包内置应用打包工具(如 AppImage、DMG、EXE),无需外部依赖
支持的语言JavaScript、TypeScriptJavaScript、TypeScript(前端)和 Rust(后端)
生态系统丰富的社区和插件生态,许多现成的模板和工具社区正在发展,官方模板更稳定可靠
开发者体验强大的文档和社区支持,易于上手,广泛使用更轻量的解决方案,文档较完善,Rust 语言的学习曲线稍高
跨平台支持支持 Windows、macOS、Linux支持 Windows、macOS、Linux,且更容易优化体积和性能
调试工具支持 Chrome DevTools,开发和调试非常便捷支持 DevTools,前端调试体验类似,但后端需要 Rust 的调试工具
更新机制需要手动配置更新机制,如使用 electron-updater内置自动更新功能,官方支持简化更新流程
项目初始化- 需要手动创建 npm 项目,安装 Electron 库。- 提供内置 CLI 工具,快速生成项目。
- 从头开始,使用 JavaScript/HTML 手动配置项目结构。- 使用官方模板自动配置项目结构,减少手动设置。
官方模板支持- 缺少官方模板,通常依赖社区维护的 boilerplates。- 提供多种官方模板,支持 React、Vue、Svelte 等前端框架。

主要区别总结

  • 复杂性:Tauri 内置工具、官方模板、简化配置文件;Electron 需要安装更多的工具和依赖,官方模板少,需要花更多时间进行初期设置。
  • 体积与性能:Tauri 应用更轻量、性能更好,非常适合对资源占用敏感的场景;Electron 则相对较重,但生态和成熟度更高。
  • 系统 API 访问:Tauri 能够更直接访问操作系统原生 API,适合需要本机功能的应用;Electron 依赖 Node.js,需要额外配置访问系统资源。
  • 打包与发布:Tauri 的打包更简洁高效,尤其在生成轻量应用上有明显优势。

image.png

对比内容参考链接:

小结 #

随着 Web 技术的飞速发展,开发人员在构建桌面应用时不再局限于传统的本地编程语言。Tauri 作为一款轻量级、跨平台的桌面应用开发框架,完美结合了 Web 开发的灵活性与桌面应用的强大性能。它为那些熟悉前端技术的开发者打开了通往桌面开发的大门,而不需要面对陡峭的学习曲线。在这篇文章中,我们探讨了为什么 Tauri 是 Web 开发人员的理想选择,它不仅能够利用现有的 Web 技能,还能实现对本地 API 的无缝访问,让开发者更轻松地构建出色的桌面应用。

后续进行实战上手,敬请期待!

标签
Easysearch x
产品更新 x
performance x
2026 x
开源 x
赞助 x
开源生态 x
社区 x
Coco AI x
二等奖 x
兴智杯 x
人工智能 x
赛事 x
低空经济 x
商业化 x
数据分析 x
金猿奖 x
国产化 x
搜索引擎 x
技术卓越奖 x
创新产品奖 x
IT168 x
APM x
Skywalking x
Easy-Es x
Coco x
AI x
GitLab x
代码审核 x
石油石化 x
Gitee x
投票 x
Meilisearch x
Rust x
轻量级 x
搜索百科 x
Docker x
Docker Compose x
Easyserach x
Console x
DevOps x
Elasticsearch x
国产替代 x
backup x
snapshot x
CCR x
Gateway x
esdump x
source_reuse x
ignore_above x
OpenSearch x
AWS x
Lucene x
Solr x
Easyearch x
发明专利 x
数据分区 x
国际专利 x
一等奖 x
人工智能应用创新大赛 x
bulk x
embedding x
OpenAI x
IK x
TDBC x
2025 x
信通院 x
可信数据库大会 x
搜索型数据库 x
中国数据库产业图谱 x
上海开源创新菁英荟 x
开源创新新星企业 x
Workshop x
AI 搜索 x
智能助手 x
Automation x
Logstash x
MongoDB x
开源中国 x
直播 x
merge x
Elasticsearch 9 x
GitCode x
AI搜索 x
Cloud x
rollup x
Kubernetes x
Operator x
Arm64 x
Snapshot x
S3 x
Grafana x
Opensearch x
Nginx x
直播活动 x
搜索客社区 x
Meetup x
ES x
企业搜索 x
DeepSeek x
RAG x
certificate x
windows x
Rollup x
TopN x
Filebeat x
Ubuntu x
请求限速 x
INFINI Console x
指标 x
Kibana x
多集群 x
client x
Spring Boot x
ECE x
ES Bulk x
vector database x
Postgres x
可搜索快照 x
SDK x
官网 x
Web 开发 x
Next.js x
React x
Three.js x
Metrics x
Helm x
filter x
querycache x
practice x
Agent x
localStorage x
响应式 x
时间组件 x
时区组件 x
极限科技 x
三周年 x
周年庆 x
国家高新技术企业 x
校园招聘 x
湖北工业大学 x
Tauri x
Web 开发人员 x
桌面应用开发 x
桌面端 x
Electron x
Pizza x
认证培训 x
报名 x
Scrapy x
爬虫 x
Rust开发者大会 x
docsearch x
文档搜索 x
Easyseach x
有奖征文 x
黑神话悟空 x
EKS x
征文系列 x
跨集群搜索 x
科技中小企业 x
白皮书 x
Python SDK x
数据库产业图谱 x
超大规模 x
分布式集群 x
写入限流 x
2024可信数据库发展大会 x
创新型中小企业 x
搜索数据库 x
正排索引 x
免费许可证 x
K8S x
DTC2024 x
实时搜索 x
ES国产化 x
Redis x
OOM x
测试 x
内存 x
趋势 x
AI绘画 x
Stable Diffusion x
Diffusion x
Model x
GAN x
语义搜索 x
知识图 x
向量数据库 x
中国信通院 x
星河(Galaxy) x
标杆案例 x
鲲鹏 x
鲲鹏技术认证 x
客户端 x
日志平台 x
LDAP x
Loadgen x
中国一汽 x
国内数据库 x
墨天轮 x
监控系统 x
集成测试 x
ZSTD x
Helm Charts x
国产适配 x
兆芯 x
Linux x
LoongArch x
信创适配 x
二维拆分算法 x
中国移动云 x
Vault x
加密 x
安全工具 x
kNN x
向量检索 x
图片搜索 x
Alerting x
SQL x
搜索 x
Embedding x
可信数据库 x
统信 x
海光 x
龙芯 x
restore x
Arm x
大数据企业证书 x
移动云大会 x
信通院产品评测 x
国内首家 x
数据可视化 x
北京软协 x
第十届理事会会员单位 x
Apache Arrow x
宣传片 x
大会分享 x
多集群管理 x
无缝数据迁移 x
Loadrun x
INFINI Gateway x
log4j x