W#5 LogRocket 聊 Tauri v2:模块化架构与树摇优化

#5 LogRocket 聊 Tauri v2:模块化架构与树摇优化

Web 爱听·2026 年 1 月 20 日·38 分钟
创作者写的节目说明

📌 节目信息

  • 节目名称: LogRocket Podcast – Podro Aet
  • 期数: #5
  • 嘉宾: Daniel Thompson (Tauri 核心开发者,CrabNebula 创始人兼 CEO)
  • 主持人: Paige Niedringhaus
  • 时长: 49:58
  • 发布日期: 2026年1月
  • 主题: Tauri 2.0 架构重构、模块化设计、跨平台开发

📋 节目简介

本期节目深入探讨了 Tauri 2.0 如何通过模块化架构和树摇优化,实现比 Electron 更小的应用体积和更高的安全性。Tauri 核心开发者 Daniel 分享了从开源项目到成立公司的历程,详细解释了为什么 Tauri v2 的核心反而比 v1 更小,以及如何通过插件系统实现按需加载。此外,Daniel 还讨论了 CEF(Chromium 嵌入框架)、Servo 浏览器引擎、移动端开发挑战,以及 Tauri 社区的扁平化治理模式。


💬 核心话题讨论

1️⃣ 为什么要进行 Tauri 2.0 重构?

主持人: Tauri 1.0 于 2022 年发布,引起了广泛关注。是什么促使团队投入资源进行这次重大的架构重构?

Daniel:

“部分原因在于,作为一个开源项目,你迟早会面对人们需要资金来补偿投入时间的现实问题。Tauri 发展到如今的规模,可能已经有数百万行代码,形成了一个庞大的社区。”

团队成立了公司,从优秀的风险投资天使那里筹集了资金,包括 Bob Young、Garry Tan 等业界巨头,以及 OSS Capital 的支持。有了这些资金,团队投入了约一年半的时间,集中解决早期的架构难题。

架构痛点:

  • 早期决定某些功能必须内置(如通知功能),但并非所有人都需要
  • 缺乏真正的可扩展性
  • 需要支持移动端(iOS 和 Android)

重构成果:

  • ✅ 核心更小 – Tauri v2 的核心体积比 v1 更小
  • ✅ 更安全 – 获得了一个更加安全的平台
  • ✅ 插件系统 – 按需添加功能,形成均衡的架构体系
  • ✅ 树摇优化 – 只引入需要的模块

2️⃣ 树摇优化与模块化设计

Daniel:

“树摇优化机制,即通过 JavaScript 的模块导入阶段,只引入你需要的部分,而不必导入整个模块的其余内容。”

对网页应用的价值:

  • 减少最终下载的代码包体积
  • 加快首次绘制时间

对本地应用的价值:

  • 减小打包体积,更容易加载到内存
  • 缩小攻击面 – 如果攻击者无法窃取数据,他们就无从下手

与 Electron 的对比:

Daniel 指出,Electron 使用 Node.js,这本身没有问题,但现实中存在大量根本不需要联网的应用程序。

“如果并不需要网络功能,又何必引入同构 fetch 或 fetch 功能呢?通过移除功能或从一开始就避免包含某些功能,可以减小打包体积。”

安全优先哲学:

“只要在每个机会点上都缩小攻击面,我们就能真正接近安全优先的设计理念与哲学。”


3️⃣ Tauri 社区的扁平化治理

主持人: 社区合作伙伴以及治理委员会,例如工作组和 CrabNebula 等合作伙伴,是否对项目方向产生了积极影响?

Daniel:

“我们在疫情期间做出了一项选择,核心团队的参与权限对所有人开放。只要您贡献一行代码,提交一个议题,或者有感兴趣的话题,并加入我们的 GitHub 或 Discord 社区,我们便随时欢迎您加入工作小组。”

扁平化层级结构:

  • 约两年后解散了理事会
  • 保留名义上的董事会(满足法律实体要求)
  • 真正相信实践者决定一切

社区健康度指标:

  • 📊 GitHub 星标数超过 10 万
  • 💰 六年累计获得约 9 万美元捐赠
  • 🔧 人们持续提出想法和缺陷修复建议
  • 🌍 已在英国和欧盟提交商标注册

CrabNebula 的角色:

Daniel 作为 CrabNebula 的 CEO 和创始人,强调公司投入了数千小时的开发者协作支持,并非为了将人们引导回企业项目,而是作为帮助人们初次使用 Tauri 的手段。

“轻量管理机制才是正确的方向,并非没有领导者,而是当人们有时间、有能力时会主动站出来。”


4️⃣ Create Tauri App – 降低开发门槛

主持人: Create Tauri App 看起来像是对入门工具的一次重大投入。新开发者在使用过程中遇到的主要痛点有哪些?

Daniel:

“Node、Yarn、NPM、Bun… 在 Windows、Mac、Linux 上从哪里开始?当你初次接触一种方法论时,很难知道从何处入手。”

配置矩阵的复杂度:

  • 操作系统选择(Windows / Mac / Linux / Android)
  • 包管理器(Node / Yarn / NPM / Bun)
  • 前端框架(React / Vue / Angular / Solid)
  • 后端语言(Python / Go / PHP)
  • 语言类型(TypeScript / JavaScript)

痛点:

“如果配置系统需要花费三个小时,你可能会感到迷茫并选择放弃。”

Create Tauri App 的解决方案:

这是一个社区驱动的高强度项目,由 Amr Bashir 提出,旨在提供更好的开发体验。

中立立场:

“我们保持中立立场,如果你想要使用 Python 并接入 Tauri 来构建你的 Python 应用,那再好不过。又或者你想要用 Go 来开发,或者想搭建一个 PHP 后端,同样非常棒。”

类比 Create React App:

主持人分享了自己的体验:

“当 React 刚推出时,要将所有东西配置妥当让它们协同工作非常痛苦,而 Create React App 之后,这一切都消失了。只需要运行一条命令,就能立即投入使用,简直像魔法一样。”

Daniel 表示,自从四年前手动配置过 Tauri 以来,他一直使用 Create Tauri App。


5️⃣ WebView 的挑战与 CEF 方案

主持人: 在实现桌面端与移动端真正统一的体验方面,目前进展如何?

Daniel:

“通常情况下,每个平台都使用不同的 WebView。”

不同平台的 WebView:

  • 桌面端: 在应用程序的上下文中创建窗口,提供对专属存储的访问权限,然后注入 WebView 环境
  • macOS/iOS: WKWebKit
  • Windows: WebView2 (基于 Edge)
  • Linux: WebKit GTK
  • Android: 系统视图各有差异

性能问题:

Daniel 指出,这导致了性能问题。例如在 Linux 上,WebKit GTK 的维护团队规模远不及 WebView2 所拥有的庞大维护资源,仅靠少数几位开发者支撑。

CEF (Chromium 嵌入框架) 方案:

“我们目前正开始尝试 Chromium 嵌入框架(CEF),效果非常出色。”

CEF 的优势:

  • ✅ 所有平台上外观完全一致,功能集也完全相同
  • ✅ 每秒 60 帧的流畅表现
  • ✅ 支持浏览器扩展(如 1Password)
  • ✅ 用户可以在应用中直接使用他们习惯的工具

CEF 的挑战:

  • ❌ 尚未达到正式上线的标准
  • ❌ Linux 构建存在一些问题
  • ❌ macOS 运行器上构建耗时长达 10 小时

技术权衡:

Daniel 强调,Tauri 是一个无偏向的框架,尊重每一位开发者的选择:

“有人对我说,’Daniel,对我而言最重要的就是我们的应用在 Mac、Windows 和 Linux 上外观完全一致,功能集也完全相同,其他都不重要’,那么我必须认真倾听。”

同样,也有人喜欢小型二进制文件,不想使用 Google 的产品。

“我们或许是一个无偏向的框架,我们希望每个人都能感到满意,这可能是少数几个让 React 开发者、Vue 开发者、Angular 开发者以及 Solid 开发者共同聚集并一起解决问题的社区之一。”


6️⃣ Servo 浏览器引擎探索

主持人: 能否谈谈 Servo 解决了什么问题,或者它带来了哪些价值?

Servo 的历史:

Daniel 回顾了 Servo 项目的坎坷历程:

  • 2019 年: Tauri 刚开始时,曾设想能够将 Servo 的 WebView 交付给所有人
  • 2021 年: Mozilla 失去资金,参与 Servo 项目的所有开发团队成员被解散
  • Servo 的本质: 一个以 Rust 为基础的实验性项目,主要目标是重新定义浏览器在内存安全环境下的构建方式

重生与资助:

“大约两三年前,我们获得了荷兰基金会的资助,该资金来自欧洲委员会资助的未来互联网计划(NGI 0),虽然金额并不算多,大约 5 万欧元,但我们用这笔钱开发了一个原型。”

当前状态:

  • ✅ 可以构建出一个可交互的 WebView
  • ❌ 界面不够流畅,缺少大量 CSS 支持
  • 📊 Servo 成为 Linux 基金会成员
  • 👥 建立了技术指导委员会
  • ⏳ 仍会落后主流浏览器数年

Verso 衍生项目:

Daniel 提到了 Verso 项目,这是 Servo 的一个方向延续:

“当项目能够对将使用的 CSS、JavaScript 或安全上下文做出预设时,这个工具包就能真正帮助你为特定用途构建自己的 WebView。”

技术潜力:

  • 🔧 Rust 与 JavaScript 之间共享内存
  • ⚠️ 伴随着安全风险,必须在操作系统层面加以防范
  • 🤝 受几家公司委托开发相关功能(保密协议下)

未来展望:

“如果未来某一天,Servo 能借助 AI 实现重大突破,突然追上主流浏览器的水平,我们将会立即采用并确保它再次成为可供所有人使用的 WebView 替代方案。”


7️⃣ 平台差异化设计

主持人: 你有没有考虑过让 Tauri 支持其平台的 WebView 覆盖功能,例如在 Linux 系统上使用 Servo 作为 WebView?

Daniel:

“实际上 Rust 做到这一点非常简单,因为它提供了条件编译路径,允许你为特定平台定义不同的行为。”

Linux 平台的特殊性:

“我认为最需要这种能力的平台就是 Linux,仅仅因为 WebKit GTK 可能正在被淘汰。”

重要建议:

“即使你的应用在 Mac、Windows 和 Linux 上看起来完全相同,用户群体也是不同的。Linux 用户与 Mac 用户的使用画像并不相同,这实际上由操作系统对用户操作方式的预期所决定。”

⚠️ 务必确保有专家负责 Linux 平台的设计工作,不要将 macOS 的设计方法简单套用于 Linux 用户,否则将会产生问题。

主持人的例子:

“我所在的公司允许每个人自行选择工作用的笔记本电脑,所以我用的是 Mac,有同事用 Windows,也有同事用 Linux。甚至在 Zoom 会议中,我们的操作控制也各不相同。”


8️⃣ 用户界面的未来:从设计师主导到用户主导

Daniel:

“我认为用户界面对于用户来说非常重要,随着我们开始自主定义用户界面,这一点愈发关键。如今用户可以自行选择亮色和暗色模式,但几年后,用户将能够自定义用户界面的方方面面。”

范式转变:

  • 📉 设计师的角色将退居次要
  • 📈 用户偏好将成为主导
  • 🗄️ 数据结构保持一致性比完美 UI 更重要

数据库迁移的类比:

“相较于打造完美的用户界面,更重要的是确保数据结构保持一致。这正是我们称其为数据库迁移的原因,因为所有人都需要进行迁移。”

AI 时代的人性化视角:

“我希望我们在软件开发中建立的系统性方法能持续保有人性化视角,即便随着越来越多使用 AI 工具,也依然如此。”


9️⃣ 移动开发的挑战与经验

主持人: 从最初开始,移动开发就是 Tauri 一直被广泛期待的功能。那么在为期两年的 Alpha 项目中,你对移动架构有哪些收获?

借鉴开源社区:

“非常坦率地说,当我思考开源如何帮助我们持续推进移动开发使命时,我们大量借鉴了 Capacitor 社区以及 Ionic 和 Cordova 的工作成果。”

Daniel 提到了移动开发的演变历程:PhoneGap → Cordova → Ionic → Capacitor。

应用商店的痛点:

“让我感到有趣的是,谷歌和苹果的应用商店平台依然让开发变得如此困难。”

苹果平台:

  • ✅ 可以通过编程方式创建新应用
  • ❌ 需要经过数天甚至数周的尝试和调试

谷歌应用商店:

  • ❌ 必须手动前往应用商店进行创建
  • ❌ 整个过程显得异常繁琐,仿佛刻意设置障碍

“这种做法在我看来,已经属于一个早已过时的时代,可我们却依然被困在其中。”

移动开发最佳实践:

💡 重要建议: 实际上应该包含桌面端目标

“大多数工作内容都涉及连接远程服务和优化用户界面,而这些完全可以在桌面端完成。即使你从未计划发布桌面应用,也可以使用 Tauri 的桌面版本,它具备出色的调试功能。”

开发流程:

  1. 在桌面端进行日常开发
  2. 将界面缩小至接近目标设备的尺寸
  3. 模拟出最终设备的形态
  4. 过渡到真实设备上进行测试

开源鸿蒙 (OpenHarmony / Oniro) 探索:

Daniel 提到了华为的开源鸿蒙系统:

“一旦生态系统趋于稳定,就有可能实现生态成长。”

Oniro 是开源鸿蒙在欧洲的名称,由华为与 Eclipse 基金会以及中国开源团体三方共同打造。

新移动操作系统的挑战:

“由于市面上存在众多系统,除非该操作系统或设备的制造商愿意投入改善开发者体验,否则很难针对它们进行开发。”


🔟 多平台支持策略

主持人: 当智能电视、可穿戴设备以及其他屏幕设备被纳入考虑范围时,情况肯定会变得更加复杂。

Daniel:

“我认为这再次回归到产品团队所做的决策。我始终建议人们在设计应用时,基于平台进行决策。”

平台支持的现实:

“你可以为所有平台构建应用,虽然表面上如此,但实际经验表明,每个你所开发的平台至少需要有专人负责,以确保能够进行充分的品质保证(QA)。”

资源权衡:

  • 📱 移动平台比桌面端对平台差异更敏感
  • 👥 每个平台需要专人负责 QA
  • 💰 需要权衡资源投入

🎯 精彩观点

关于架构设计

“Tauri v2 的核心反而比版本一更小,通过插件系统实现按需加载。”

“只要在每个机会点上都缩小攻击面,我们就能真正接近安全优先的设计理念与哲学。”

关于社区治理

“我们真正相信实践者决定一切,那些参与工作小组的人中,有些人来自产业界。”

“轻量管理机制才是正确的方向,并非没有领导者,而是当人们有时间、有能力时会主动站出来。”

关于开发体验

“如果配置系统需要花费三个小时,你可能会感到迷茫并选择放弃。”

“只需要运行一条命令,就能立即投入使用,简直像魔法一样。”

关于技术中立

“我们或许是一个无偏向的框架,我们希望每个人都能感到满意,这可能是少数几个让 React 开发者、Vue 开发者、Angular 开发者以及 Solid 开发者共同聚集并一起解决问题的社区之一。”

关于平台差异

“即使你的应用在 Mac、Windows 和 Linux 上看起来完全相同,用户群体也是不同的。Linux 用户与 Mac 用户的使用画像并不相同。”

关于未来趋势

“如今用户可以自行选择亮色和暗色模式,但几年后,用户将能够自定义用户界面的方方面面。届时设计师的角色将退居次要,因为用户偏好将成为主导。”


📚 技术术语解释

术语解释
树摇优化 (Tree Shaking)通过静态分析,移除未使用的代码,减小最终打包体积
WebView在原生应用中嵌入的网页视图组件,用于渲染 HTML/CSS/JS
CEF (Chromium Embedded Framework)Chromium 嵌入框架,允许在应用中嵌入 Chromium 浏览器
Servo基于 Rust 的实验性浏览器引擎,重点关注内存安全和并行性
WKWebKitApple 开发的浏览器引擎,用于 Safari 和 macOS/iOS 上的 WebView
WebView2Microsoft 基于 Edge (Chromium) 的 Windows WebView 组件
WebKit GTKLinux 平台上的 WebKit 实现,使用 GTK 工具包
条件编译 (Conditional Compilation)Rust 特性,允许根据编译目标(如平台)包含或排除代码
LUFS (Loudness Units Full Scale)音频响度单位,-14 LUFS 是播客行业标准
NGI 0 (Next Generation Internet Zero)欧洲委员会资助的未来互联网计划

💬 金句摘录

  1. 关于安全性:

“如果攻击者无法窃取数据,他们就无从下手。”

  1. 关于社区:

“GitHub 星标数超过 10 万,这是一个非常有力的证明。”

  1. 关于开发体验:

“创建 React 应用程序之后,这一切都消失了,简直像魔法一样。”

  1. 关于技术选择:

“我们保持中立立场,如果你想要使用 Python 并接入 Tauri 来构建你的 Python 应用,那再好不过。”

  1. 关于平台统一:

“使用 CEF 的体验令人惊叹,能在所有平台上实现每秒 60 帧的流畅表现,同时还能支持浏览器扩展。”

  1. 关于用户体验:

“当用户能够在应用中与他们所使用的工具进行交互时,突然之间感觉整个闭环就完成了。”

  1. 关于未来:

“相较于打造完美的用户界面,更重要的是确保数据结构保持一致。”


🤔 思考与启发

1. 模块化架构的价值

Tauri 2.0 的核心洞察是:核心更小,功能更强。通过插件系统和树摇优化,让开发者只引入需要的功能,这不仅减少了体积,还提升了安全性。这种设计哲学值得所有框架开发者学习。

2. 社区治理的新模式

Tauri 的扁平化治理模式打破了传统的层级结构,让”实践者决定一切”。这种轻量管理机制在开源社区中非常罕见,但 GitHub 星标数超过 10 万证明了其成功。

3. 开发者体验的重要性

从 Create Tauri App 的诞生可以看出,降低开发门槛对于框架的普及至关重要。配置复杂度过高会导致开发者流失,而”一键初始化”的魔法体验能极大提升采用率。

4. 技术中立的智慧

Tauri 不强制开发者使用特定技术栈,而是支持 React、Vue、Angular、Solid、Python、Go、PHP 等多种选择。这种包容性让不同背景的开发者能够聚集在同一个社区,共同解决问题。

5. 平台差异的尊重

即使应用在所有平台上看起来完全相同,用户群体和使用习惯也是不同的。设计时需要尊重平台特性,不能简单地将一个平台的设计套用到另一个平台。

6. 安全性的优先级

Tauri 的”缩小攻击面”哲学值得所有应用开发者借鉴。通过移除不必要的功能,不仅减少了体积,还提升了安全性。在安全威胁日益严重的今天,这种设计理念尤为重要。

7. AI 时代的人性化

Daniel 强调,即使在 AI 工具越来越多的时代,软件开发也应该保持人性化视角。未来用户将能够自定义 UI 的方方面面,设计师的角色将退居次要,用户偏好将成为主导。


🎯 适合听众

  • 🖥️ 桌面应用开发者 – 特别是考虑从 Electron 迁移的开发者
  • 📱 跨平台应用开发者 – 需要支持桌面和移动端
  • 🦀 Rust 爱好者 – 对 Rust 生态感兴趣
  • 🌐 WebView 技术研究者 – 关注浏览器引擎和 WebView 技术
  • 👥 开源社区管理者 – 对开源社区治理模式感兴趣
  • 🏗️ 架构师 – 关注模块化设计和安全性

🔗 相关资源

  • Tauri 官网: https://tauri.app
  • GitHub 仓库: https://github.com/tauri-apps/tauri (⭐ 100k+)
  • CrabNebula: https://crabnebula.dev
  • Servo 项目: https://servo.org
  • Create Tauri App: https://github.com/tauri-apps/create-tauri-app
  • LogRocket: https://logrocket.com

📝 整理者注: 本文字稿基于 AI 辅助整理,保留了核心对话内容和观点,并进行了结构化处理,便于快速阅读和理解。完整音频请访问 LogRocket 播客。

Web 爱听 · 更多单集

看全部 37 期 →

Web 爱听

W#5 LogRocket 聊 Tauri v2:模块化架构与树摇优化

Web 爱听 · 1 月 20 日 · 38 分钟

#5 LogRocket 聊 Tauri v2:模块化架构与树摇优化

创作者写的节目说明

📌 节目信息

  • 节目名称: LogRocket Podcast – Podro Aet
  • 期数: #5
  • 嘉宾: Daniel Thompson (Tauri 核心开发者,CrabNebula 创始人兼 CEO)
  • 主持人: Paige Niedringhaus
  • 时长: 49:58
  • 发布日期: 2026年1月
  • 主题: Tauri 2.0 架构重构、模块化设计、跨平台开发

📋 节目简介

本期节目深入探讨了 Tauri 2.0 如何通过模块化架构和树摇优化,实现比 Electron 更小的应用体积和更高的安全性。Tauri 核心开发者 Daniel 分享了从开源项目到成立公司的历程,详细解释了为什么 Tauri v2 的核心反而比 v1 更小,以及如何通过插件系统实现按需加载。此外,Daniel 还讨论了 CEF(Chromium 嵌入框架)、Servo 浏览器引擎、移动端开发挑战,以及 Tauri 社区的扁平化治理模式。


💬 核心话题讨论

1️⃣ 为什么要进行 Tauri 2.0 重构?

主持人: Tauri 1.0 于 2022 年发布,引起了广泛关注。是什么促使团队投入资源进行这次重大的架构重构?

Daniel:

“部分原因在于,作为一个开源项目,你迟早会面对人们需要资金来补偿投入时间的现实问题。Tauri 发展到如今的规模,可能已经有数百万行代码,形成了一个庞大的社区。”

团队成立了公司,从优秀的风险投资天使那里筹集了资金,包括 Bob Young、Garry Tan 等业界巨头,以及 OSS Capital 的支持。有了这些资金,团队投入了约一年半的时间,集中解决早期的架构难题。

架构痛点:

  • 早期决定某些功能必须内置(如通知功能),但并非所有人都需要
  • 缺乏真正的可扩展性
  • 需要支持移动端(iOS 和 Android)

重构成果:

  • ✅ 核心更小 – Tauri v2 的核心体积比 v1 更小
  • ✅ 更安全 – 获得了一个更加安全的平台
  • ✅ 插件系统 – 按需添加功能,形成均衡的架构体系
  • ✅ 树摇优化 – 只引入需要的模块

2️⃣ 树摇优化与模块化设计

Daniel:

“树摇优化机制,即通过 JavaScript 的模块导入阶段,只引入你需要的部分,而不必导入整个模块的其余内容。”

对网页应用的价值:

  • 减少最终下载的代码包体积
  • 加快首次绘制时间

对本地应用的价值:

  • 减小打包体积,更容易加载到内存
  • 缩小攻击面 – 如果攻击者无法窃取数据,他们就无从下手

与 Electron 的对比:

Daniel 指出,Electron 使用 Node.js,这本身没有问题,但现实中存在大量根本不需要联网的应用程序。

“如果并不需要网络功能,又何必引入同构 fetch 或 fetch 功能呢?通过移除功能或从一开始就避免包含某些功能,可以减小打包体积。”

安全优先哲学:

“只要在每个机会点上都缩小攻击面,我们就能真正接近安全优先的设计理念与哲学。”


3️⃣ Tauri 社区的扁平化治理

主持人: 社区合作伙伴以及治理委员会,例如工作组和 CrabNebula 等合作伙伴,是否对项目方向产生了积极影响?

Daniel:

“我们在疫情期间做出了一项选择,核心团队的参与权限对所有人开放。只要您贡献一行代码,提交一个议题,或者有感兴趣的话题,并加入我们的 GitHub 或 Discord 社区,我们便随时欢迎您加入工作小组。”

扁平化层级结构:

  • 约两年后解散了理事会
  • 保留名义上的董事会(满足法律实体要求)
  • 真正相信实践者决定一切

社区健康度指标:

  • 📊 GitHub 星标数超过 10 万
  • 💰 六年累计获得约 9 万美元捐赠
  • 🔧 人们持续提出想法和缺陷修复建议
  • 🌍 已在英国和欧盟提交商标注册

CrabNebula 的角色:

Daniel 作为 CrabNebula 的 CEO 和创始人,强调公司投入了数千小时的开发者协作支持,并非为了将人们引导回企业项目,而是作为帮助人们初次使用 Tauri 的手段。

“轻量管理机制才是正确的方向,并非没有领导者,而是当人们有时间、有能力时会主动站出来。”


4️⃣ Create Tauri App – 降低开发门槛

主持人: Create Tauri App 看起来像是对入门工具的一次重大投入。新开发者在使用过程中遇到的主要痛点有哪些?

Daniel:

“Node、Yarn、NPM、Bun… 在 Windows、Mac、Linux 上从哪里开始?当你初次接触一种方法论时,很难知道从何处入手。”

配置矩阵的复杂度:

  • 操作系统选择(Windows / Mac / Linux / Android)
  • 包管理器(Node / Yarn / NPM / Bun)
  • 前端框架(React / Vue / Angular / Solid)
  • 后端语言(Python / Go / PHP)
  • 语言类型(TypeScript / JavaScript)

痛点:

“如果配置系统需要花费三个小时,你可能会感到迷茫并选择放弃。”

Create Tauri App 的解决方案:

这是一个社区驱动的高强度项目,由 Amr Bashir 提出,旨在提供更好的开发体验。

中立立场:

“我们保持中立立场,如果你想要使用 Python 并接入 Tauri 来构建你的 Python 应用,那再好不过。又或者你想要用 Go 来开发,或者想搭建一个 PHP 后端,同样非常棒。”

类比 Create React App:

主持人分享了自己的体验:

“当 React 刚推出时,要将所有东西配置妥当让它们协同工作非常痛苦,而 Create React App 之后,这一切都消失了。只需要运行一条命令,就能立即投入使用,简直像魔法一样。”

Daniel 表示,自从四年前手动配置过 Tauri 以来,他一直使用 Create Tauri App。


5️⃣ WebView 的挑战与 CEF 方案

主持人: 在实现桌面端与移动端真正统一的体验方面,目前进展如何?

Daniel:

“通常情况下,每个平台都使用不同的 WebView。”

不同平台的 WebView:

  • 桌面端: 在应用程序的上下文中创建窗口,提供对专属存储的访问权限,然后注入 WebView 环境
  • macOS/iOS: WKWebKit
  • Windows: WebView2 (基于 Edge)
  • Linux: WebKit GTK
  • Android: 系统视图各有差异

性能问题:

Daniel 指出,这导致了性能问题。例如在 Linux 上,WebKit GTK 的维护团队规模远不及 WebView2 所拥有的庞大维护资源,仅靠少数几位开发者支撑。

CEF (Chromium 嵌入框架) 方案:

“我们目前正开始尝试 Chromium 嵌入框架(CEF),效果非常出色。”

CEF 的优势:

  • ✅ 所有平台上外观完全一致,功能集也完全相同
  • ✅ 每秒 60 帧的流畅表现
  • ✅ 支持浏览器扩展(如 1Password)
  • ✅ 用户可以在应用中直接使用他们习惯的工具

CEF 的挑战:

  • ❌ 尚未达到正式上线的标准
  • ❌ Linux 构建存在一些问题
  • ❌ macOS 运行器上构建耗时长达 10 小时

技术权衡:

Daniel 强调,Tauri 是一个无偏向的框架,尊重每一位开发者的选择:

“有人对我说,’Daniel,对我而言最重要的就是我们的应用在 Mac、Windows 和 Linux 上外观完全一致,功能集也完全相同,其他都不重要’,那么我必须认真倾听。”

同样,也有人喜欢小型二进制文件,不想使用 Google 的产品。

“我们或许是一个无偏向的框架,我们希望每个人都能感到满意,这可能是少数几个让 React 开发者、Vue 开发者、Angular 开发者以及 Solid 开发者共同聚集并一起解决问题的社区之一。”


6️⃣ Servo 浏览器引擎探索

主持人: 能否谈谈 Servo 解决了什么问题,或者它带来了哪些价值?

Servo 的历史:

Daniel 回顾了 Servo 项目的坎坷历程:

  • 2019 年: Tauri 刚开始时,曾设想能够将 Servo 的 WebView 交付给所有人
  • 2021 年: Mozilla 失去资金,参与 Servo 项目的所有开发团队成员被解散
  • Servo 的本质: 一个以 Rust 为基础的实验性项目,主要目标是重新定义浏览器在内存安全环境下的构建方式

重生与资助:

“大约两三年前,我们获得了荷兰基金会的资助,该资金来自欧洲委员会资助的未来互联网计划(NGI 0),虽然金额并不算多,大约 5 万欧元,但我们用这笔钱开发了一个原型。”

当前状态:

  • ✅ 可以构建出一个可交互的 WebView
  • ❌ 界面不够流畅,缺少大量 CSS 支持
  • 📊 Servo 成为 Linux 基金会成员
  • 👥 建立了技术指导委员会
  • ⏳ 仍会落后主流浏览器数年

Verso 衍生项目:

Daniel 提到了 Verso 项目,这是 Servo 的一个方向延续:

“当项目能够对将使用的 CSS、JavaScript 或安全上下文做出预设时,这个工具包就能真正帮助你为特定用途构建自己的 WebView。”

技术潜力:

  • 🔧 Rust 与 JavaScript 之间共享内存
  • ⚠️ 伴随着安全风险,必须在操作系统层面加以防范
  • 🤝 受几家公司委托开发相关功能(保密协议下)

未来展望:

“如果未来某一天,Servo 能借助 AI 实现重大突破,突然追上主流浏览器的水平,我们将会立即采用并确保它再次成为可供所有人使用的 WebView 替代方案。”


7️⃣ 平台差异化设计

主持人: 你有没有考虑过让 Tauri 支持其平台的 WebView 覆盖功能,例如在 Linux 系统上使用 Servo 作为 WebView?

Daniel:

“实际上 Rust 做到这一点非常简单,因为它提供了条件编译路径,允许你为特定平台定义不同的行为。”

Linux 平台的特殊性:

“我认为最需要这种能力的平台就是 Linux,仅仅因为 WebKit GTK 可能正在被淘汰。”

重要建议:

“即使你的应用在 Mac、Windows 和 Linux 上看起来完全相同,用户群体也是不同的。Linux 用户与 Mac 用户的使用画像并不相同,这实际上由操作系统对用户操作方式的预期所决定。”

⚠️ 务必确保有专家负责 Linux 平台的设计工作,不要将 macOS 的设计方法简单套用于 Linux 用户,否则将会产生问题。

主持人的例子:

“我所在的公司允许每个人自行选择工作用的笔记本电脑,所以我用的是 Mac,有同事用 Windows,也有同事用 Linux。甚至在 Zoom 会议中,我们的操作控制也各不相同。”


8️⃣ 用户界面的未来:从设计师主导到用户主导

Daniel:

“我认为用户界面对于用户来说非常重要,随着我们开始自主定义用户界面,这一点愈发关键。如今用户可以自行选择亮色和暗色模式,但几年后,用户将能够自定义用户界面的方方面面。”

范式转变:

  • 📉 设计师的角色将退居次要
  • 📈 用户偏好将成为主导
  • 🗄️ 数据结构保持一致性比完美 UI 更重要

数据库迁移的类比:

“相较于打造完美的用户界面,更重要的是确保数据结构保持一致。这正是我们称其为数据库迁移的原因,因为所有人都需要进行迁移。”

AI 时代的人性化视角:

“我希望我们在软件开发中建立的系统性方法能持续保有人性化视角,即便随着越来越多使用 AI 工具,也依然如此。”


9️⃣ 移动开发的挑战与经验

主持人: 从最初开始,移动开发就是 Tauri 一直被广泛期待的功能。那么在为期两年的 Alpha 项目中,你对移动架构有哪些收获?

借鉴开源社区:

“非常坦率地说,当我思考开源如何帮助我们持续推进移动开发使命时,我们大量借鉴了 Capacitor 社区以及 Ionic 和 Cordova 的工作成果。”

Daniel 提到了移动开发的演变历程:PhoneGap → Cordova → Ionic → Capacitor。

应用商店的痛点:

“让我感到有趣的是,谷歌和苹果的应用商店平台依然让开发变得如此困难。”

苹果平台:

  • ✅ 可以通过编程方式创建新应用
  • ❌ 需要经过数天甚至数周的尝试和调试

谷歌应用商店:

  • ❌ 必须手动前往应用商店进行创建
  • ❌ 整个过程显得异常繁琐,仿佛刻意设置障碍

“这种做法在我看来,已经属于一个早已过时的时代,可我们却依然被困在其中。”

移动开发最佳实践:

💡 重要建议: 实际上应该包含桌面端目标

“大多数工作内容都涉及连接远程服务和优化用户界面,而这些完全可以在桌面端完成。即使你从未计划发布桌面应用,也可以使用 Tauri 的桌面版本,它具备出色的调试功能。”

开发流程:

  1. 在桌面端进行日常开发
  2. 将界面缩小至接近目标设备的尺寸
  3. 模拟出最终设备的形态
  4. 过渡到真实设备上进行测试

开源鸿蒙 (OpenHarmony / Oniro) 探索:

Daniel 提到了华为的开源鸿蒙系统:

“一旦生态系统趋于稳定,就有可能实现生态成长。”

Oniro 是开源鸿蒙在欧洲的名称,由华为与 Eclipse 基金会以及中国开源团体三方共同打造。

新移动操作系统的挑战:

“由于市面上存在众多系统,除非该操作系统或设备的制造商愿意投入改善开发者体验,否则很难针对它们进行开发。”


🔟 多平台支持策略

主持人: 当智能电视、可穿戴设备以及其他屏幕设备被纳入考虑范围时,情况肯定会变得更加复杂。

Daniel:

“我认为这再次回归到产品团队所做的决策。我始终建议人们在设计应用时,基于平台进行决策。”

平台支持的现实:

“你可以为所有平台构建应用,虽然表面上如此,但实际经验表明,每个你所开发的平台至少需要有专人负责,以确保能够进行充分的品质保证(QA)。”

资源权衡:

  • 📱 移动平台比桌面端对平台差异更敏感
  • 👥 每个平台需要专人负责 QA
  • 💰 需要权衡资源投入

🎯 精彩观点

关于架构设计

“Tauri v2 的核心反而比版本一更小,通过插件系统实现按需加载。”

“只要在每个机会点上都缩小攻击面,我们就能真正接近安全优先的设计理念与哲学。”

关于社区治理

“我们真正相信实践者决定一切,那些参与工作小组的人中,有些人来自产业界。”

“轻量管理机制才是正确的方向,并非没有领导者,而是当人们有时间、有能力时会主动站出来。”

关于开发体验

“如果配置系统需要花费三个小时,你可能会感到迷茫并选择放弃。”

“只需要运行一条命令,就能立即投入使用,简直像魔法一样。”

关于技术中立

“我们或许是一个无偏向的框架,我们希望每个人都能感到满意,这可能是少数几个让 React 开发者、Vue 开发者、Angular 开发者以及 Solid 开发者共同聚集并一起解决问题的社区之一。”

关于平台差异

“即使你的应用在 Mac、Windows 和 Linux 上看起来完全相同,用户群体也是不同的。Linux 用户与 Mac 用户的使用画像并不相同。”

关于未来趋势

“如今用户可以自行选择亮色和暗色模式,但几年后,用户将能够自定义用户界面的方方面面。届时设计师的角色将退居次要,因为用户偏好将成为主导。”


📚 技术术语解释

术语解释
树摇优化 (Tree Shaking)通过静态分析,移除未使用的代码,减小最终打包体积
WebView在原生应用中嵌入的网页视图组件,用于渲染 HTML/CSS/JS
CEF (Chromium Embedded Framework)Chromium 嵌入框架,允许在应用中嵌入 Chromium 浏览器
Servo基于 Rust 的实验性浏览器引擎,重点关注内存安全和并行性
WKWebKitApple 开发的浏览器引擎,用于 Safari 和 macOS/iOS 上的 WebView
WebView2Microsoft 基于 Edge (Chromium) 的 Windows WebView 组件
WebKit GTKLinux 平台上的 WebKit 实现,使用 GTK 工具包
条件编译 (Conditional Compilation)Rust 特性,允许根据编译目标(如平台)包含或排除代码
LUFS (Loudness Units Full Scale)音频响度单位,-14 LUFS 是播客行业标准
NGI 0 (Next Generation Internet Zero)欧洲委员会资助的未来互联网计划

💬 金句摘录

  1. 关于安全性:

“如果攻击者无法窃取数据,他们就无从下手。”

  1. 关于社区:

“GitHub 星标数超过 10 万,这是一个非常有力的证明。”

  1. 关于开发体验:

“创建 React 应用程序之后,这一切都消失了,简直像魔法一样。”

  1. 关于技术选择:

“我们保持中立立场,如果你想要使用 Python 并接入 Tauri 来构建你的 Python 应用,那再好不过。”

  1. 关于平台统一:

“使用 CEF 的体验令人惊叹,能在所有平台上实现每秒 60 帧的流畅表现,同时还能支持浏览器扩展。”

  1. 关于用户体验:

“当用户能够在应用中与他们所使用的工具进行交互时,突然之间感觉整个闭环就完成了。”

  1. 关于未来:

“相较于打造完美的用户界面,更重要的是确保数据结构保持一致。”


🤔 思考与启发

1. 模块化架构的价值

Tauri 2.0 的核心洞察是:核心更小,功能更强。通过插件系统和树摇优化,让开发者只引入需要的功能,这不仅减少了体积,还提升了安全性。这种设计哲学值得所有框架开发者学习。

2. 社区治理的新模式

Tauri 的扁平化治理模式打破了传统的层级结构,让”实践者决定一切”。这种轻量管理机制在开源社区中非常罕见,但 GitHub 星标数超过 10 万证明了其成功。

3. 开发者体验的重要性

从 Create Tauri App 的诞生可以看出,降低开发门槛对于框架的普及至关重要。配置复杂度过高会导致开发者流失,而”一键初始化”的魔法体验能极大提升采用率。

4. 技术中立的智慧

Tauri 不强制开发者使用特定技术栈,而是支持 React、Vue、Angular、Solid、Python、Go、PHP 等多种选择。这种包容性让不同背景的开发者能够聚集在同一个社区,共同解决问题。

5. 平台差异的尊重

即使应用在所有平台上看起来完全相同,用户群体和使用习惯也是不同的。设计时需要尊重平台特性,不能简单地将一个平台的设计套用到另一个平台。

6. 安全性的优先级

Tauri 的”缩小攻击面”哲学值得所有应用开发者借鉴。通过移除不必要的功能,不仅减少了体积,还提升了安全性。在安全威胁日益严重的今天,这种设计理念尤为重要。

7. AI 时代的人性化

Daniel 强调,即使在 AI 工具越来越多的时代,软件开发也应该保持人性化视角。未来用户将能够自定义 UI 的方方面面,设计师的角色将退居次要,用户偏好将成为主导。


🎯 适合听众

  • 🖥️ 桌面应用开发者 – 特别是考虑从 Electron 迁移的开发者
  • 📱 跨平台应用开发者 – 需要支持桌面和移动端
  • 🦀 Rust 爱好者 – 对 Rust 生态感兴趣
  • 🌐 WebView 技术研究者 – 关注浏览器引擎和 WebView 技术
  • 👥 开源社区管理者 – 对开源社区治理模式感兴趣
  • 🏗️ 架构师 – 关注模块化设计和安全性

🔗 相关资源

  • Tauri 官网: https://tauri.app
  • GitHub 仓库: https://github.com/tauri-apps/tauri (⭐ 100k+)
  • CrabNebula: https://crabnebula.dev
  • Servo 项目: https://servo.org
  • Create Tauri App: https://github.com/tauri-apps/create-tauri-app
  • LogRocket: https://logrocket.com

📝 整理者注: 本文字稿基于 AI 辅助整理,保留了核心对话内容和观点,并进行了结构化处理,便于快速阅读和理解。完整音频请访问 LogRocket 播客。

WWeb 爱听

Web 爱听

面向Web开发者的技术播客,聚焦前端开发前沿、工具链演进与AI对开发的影响,兼顾职场成长。

已收录 37 期 · 最近更新 3 月 26 日

在哪里听

https://proxy.wavpub.com/iting-webworker.xml复制

内容版权归创作者,声湃按创作者开放的 RSS 收录。了解收录与 RSS →

更多单集 全部 37 期 →