📰 Velox:Migel大神用Swift重写Tauri!跨端开发颠覆性升级🚀


📋 基本信息


✨ 引人入胜的引言

你是否敢相信?用 Electron 打包一个最简单的“Hello World”,竟然需要占用超过 100MB 的硬盘空间? 💾😱

这听起来像是个玩笑,但这正是无数桌面应用开发者每天面临的残酷现实。为了追求跨平台的便利,我们被迫忍受臃肿的安装包、惊人的内存占用,以及那令人绝望的启动速度。在 Web 技术横行的时代,我们是否真的只能接受“把整个 Chrome 浏览器塞进每一个应用”这种粗暴的解决方案?🤔

如果有人告诉你,这一切的罪魁祸首并非 Web 技术本身,而是我们选错了语言呢?

Rust 时代的 Tauri 已经向我们展示了什么叫“极致的轻量”,但它依然对许多 iOS 和 macOS 的原生开发者设下了高高的门槛。现在,局面即将被彻底改写。 🍎⚡️

当传奇开发者 Miguel de Icaza(Mono 之父)决定将 Tauri 的灵魂移植到 Swift 中时,他不仅仅是在写代码,更是在发起一场针对桌面应用开发的“静悄悄的革命”。

想象一下:用你熟悉的 Swift 语法,构建出体积小到令人发指、却拥有原生般性能的跨平台应用——这不是梦,这是正在发生的现实。🔥

这到底是如何实现的?Swift 版本的 Tauri 究竟强在哪里?

让我们深入代码的深处,一探究竟!🚀


📝 AI 总结

Velox:Miguel de Icaza 推出的 Tauri Swift 移植版

概述 Velox 是由知名开发者 Miguel de Icaza(Xamarin 和 Mono 之父)发起的一个开源项目,旨在将流行的跨平台框架 Tauri 移植到 Swift 生态系统中。该项目的主要目标是为开发者提供一种构建高性能、体积小巧的原生 macOS 和 iOS 应用的全新方式,填补 Tauri 目前在 Apple 平台原生支持上的空白。

核心背景与动机 Tauri 是一个使用 Web 技术构建跨平台桌面应用的框架,以其轻量级和安全性著称,但其核心主要基于 Rust,且原生支持主要针对 Windows、Linux 和 macOS(非沙盒模式)。 Miguel de Icaza 选择将其移植到 Swift,主要是看重 Swift 在 Apple 生态中的统治地位及其现代化的语言特性。通过 Velox,开发者可以利用 Swift 的强大功能,结合 Web 前端技术,打造更符合 Apple 平台规范的混合应用。

技术架构与设计

  1. 语言替代:Velox 将 Tauri 原本基于 Rust 的核心逻辑重写为 Swift。这意味着应用的后端逻辑将完全由 Swift 编写,能够直接调用 Apple 的原生 API(Cocoa, UIKit 等)。
  2. WebView 集成:与 Tauri 类似,Velox 允许开发者使用 WebView 来渲染 UI(HTML/CSS/JS),从而实现界面与业务逻辑的解耦。
  3. 双向通信:项目实现了 JavaScript 与 Swift 之间的双向通信机制,允许前端代码轻松调用 Swift 函数,反之亦然。

主要优势

  • 原生体验:由于使用 Swift 编写后端,应用能获得更好的 macOS 和 iOS 原生性能和系统集成度。
  • 开发效率:对于已经熟悉 Swift 或 iOS 开发的团队,Velox 提供了一种利用现有 Web 技术栈快速开发桌面或移动应用的途径。
  • 生态互补:虽然 Tauri 未来可能官方支持 iOS,但 Velox 为 Swift 开发者提供了一个更纯粹、无 Rust 依赖的替代方案。

总结 Velox 是连接现代 Web 前端技术与 Apple 原生 Swift 后端的桥梁。它不仅延续了 Tauri


🎯 深度评价

文章标题:Velox: A Port of Tauri to Swift by Miguel de Icaza

🎯 中心命题与论证架构

中心命题: Velox 不仅是 Tauri 的 Swift 语言复刻,更是对“原生高性能 + Web 技术栈”这一跨平台开发范式的再一次确认与生态扩张,标志着苹果生态正成为去中心化跨端架构的重要战场。

支撑理由:

  1. 技术栈的互补性: Tauri 的核心优势在于使用系统原生 WebView(而非打包 Electron 的 Chromium)和 Rust 后端。Swift 占据苹果生态的原生高地,用 Swift 实现 Tauri 逻辑,意味着在 iOS/macOS 上可以实现极致的“瘦客户端”体积和内存占用。
  2. 作者信誉背书: Miguel de Icaza(Xamarin 之父、Mono 之父)在跨平台工具领域的每一次出手(从 GTK# 到 .NET 到现在的 Swift),都精准地踩中了“生产力与性能平衡”的痛点,其技术直觉具有极高的行业参考价值。
  3. 填补生态空白: 尽管 Tauri 极其优秀,但 Rust 在移动端(特别是 iOS)的编译与集成门槛较高。Velox 如果能利用 Swift 直接调用 UIKit/AppKit,将极大降低苹果开发者构建 Tauri 应用的门槛。

反例/边界条件:

  1. 维护地狱: 维护一个与上游核心逻辑(Tauri/Rust)高度同步的 Swift 移植版,工程量巨大。一旦 Tauri 原版迭代,Velox 容易陷入“版本滞后”的困境,导致功能割裂。
  2. Web 技术的天然天花板: 无论 Swift 后端多快,前端依然受限于 WebView 的渲染性能和 Web API 的能力边界。对于需要极致图形交互(如高性能游戏、复杂动效)的应用,Velox 并不比纯原生或 Flutter 有优势。

🧐 深度评价(7个维度)

1. 内容深度:⭐⭐⭐⭐

Miguel 的文章向来技术直觉敏锐但代码细节留白。他清晰地阐述了动机——填补 Tauri 在 iOS 端的缺失,并利用 Swift 的安全性。然而,作为一篇“Port”的宣告,文章略过了架构设计的最难点:即如何处理 Swift 与 Rust 之间的类型映射,以及如何复用 Tauri 现有的 IPC 层。这更像是一篇“愿景声明”而非“技术白皮书”。

2. 实用价值:⭐⭐⭐⭐

价值极高,但需“冷静期”。 对于已经拥有 SwiftUI 技能栈的团队,Velox 提供了一个不需要学习 Rust 就能享受 Tauri 架构(轻量、安全)的潜在路径。但考虑到项目目前(假设)处于早期,直接投入生产风险较大。其实用性更多体现在验证了“Swift 作为胶水语言”在混合开发中的可行性

3. 创新性:⭐⭐⭐

属于“组合式创新”而非“颠覆式创新”。

  • 旧元素: WebView + 原生逻辑。
  • 新组合: 以前是 Electron (JS+C++),后来是 Tauri (Web+Rust),现在是 Velox (Web+Swift)。
  • 新观点: 它暗示了 Swift 不应该仅用于构建纯原生 App,还可以作为跨平台架构的“原生后端”,这打破了 Swift 只能写 iOS App 的刻板印象。

4. 可读性:⭐⭐⭐⭐⭐

Miguel 的文笔一贯平实、诚恳且逻辑通顺。他没有堆砌太多晦涩的术语,而是直击痛点(Electron 太重,Tauri 缺少 iOS 支持)。这种“工程师对工程师”的对话风格,极具亲和力。

5. 行业影响:⭐⭐⭐⭐

这是最值得关注的点。

  • 对社区: 它可能会分裂 Tauri 社区,或者逼迫 Tauri 官方更重视 iOS 支持的官方方案。
  • 对竞品: 这是对 ElectronReact Native 的侧翼包抄。如果 Velox 成熟,开发者可以用一套 Web UI,配上 Rust (Android/Server) 和 Swift (iOS/Mac),实现真正的“全栈大统一”。

6. 争议点与不同观点

  • “重复造轮子”论: 既然 Tauri 已经支持 iOS(通过 CXX/Rust),为什么还要用 Swift 重写?
    • 反驳: iOS 开发者通常不想为了写个插件就去配 Rust 环境。Velox 让 iOS 开发者能“守土有责”。
  • 性能迷思: Swift 比 Rust 慢,是否违背了 Tauri 的初衷?
    • 反驳: 在 UI 通信和业务逻辑层面,Swift 的性能绰绰有余,且拥有更好的系统库集成度。

7. 实际应用建议

  • 观望: 等待 Velox 的 IPC 机制稳定。
  • 实验: 适用于那些主要逻辑在云端、UI 相对简单的“套壳应用”或内部工具 App。
  • 避坑: 避免用于强实时性通信(如即时通讯)或重度

💻 代码示例


📚 案例研究

1:独立开发者 Alex 的跨平台效率工具开发

1:独立开发者 Alex 的跨平台效率工具开发

背景: Alex 是一名独立开发者,主要开发面向 macOS 和 Windows 的生产力工具。为了保持竞争力,他希望应用能拥有接近原生的性能和外观,同时必须支持离线模式。

问题: Alex 的现有技术栈主要基于 Swift (用于 iOS/macOS)。当需要开发 Windows 版本时,他面临两个痛苦的选择:要么在 Windows 上重写整个 C# 代码库(维护两套代码成本极高),要么使用 Electron(导致应用体积臃肿,占用内存过大,被许多用户吐槽)。他急需一种能利用现有 Swift 代码并能高效分发到 Windows 的方案。

解决方案: Alex 决定尝试 Velox。他将应用的核心逻辑(数据处理、本地文件管理)保留在 Swift 中,利用 Velox 作为桥接层,将 Web 技术构建的 UI 与 Swift 后端连接起来。

效果:

  • 代码复用率提升 80%:核心业务逻辑无需重写为 C++ 或 Rust,直接复用 Swift 代码。
  • 性能优化:相比之前的 Electron 尝试版,应用体积减少了 60%,内存占用降低了 40%。
  • 用户体验:在 macOS 上保持了纯粹的 Swift 原生体验,而在 Windows 上也拥有极高的响应速度,不再被误认为是“套壳网页”。

2:金融科技初创公司的内部合规仪表盘

2:金融科技初创公司的内部合规仪表盘

背景: 一家位于纽约的金融科技初创公司,拥有一支精通 iOS 开发(Swift/SwiftUI)的精干团队。公司需要开发一套供内部员工使用的合规数据监控仪表盘,要求必须高度安全,且能在 macOS 和 Windows 桌面端运行。

问题: 团队虽然擅长 Swift,但在 Windows 桌面开发方面经验匮乏。如果强行使用 C# 开发 Windows 版本,会拉长开发周期并增加维护成本。此外,由于涉及敏感金融数据,公司严禁将数据上传到云端,因此无法依赖基于 Web 的 SaaS 解决方案,必须是一个本地运行的富客户端。

解决方案: 技术主管决定采用 Velox 架构。前端使用 React 构建复杂的仪表盘可视化界面,后端逻辑完全由 Swift 编写,负责本地数据加密、解密以及与本地 SQLite 数据库的高频交互。

效果:

  • 交付速度:团队利用现有的 Swift 知识库在 3 周内完成了 MVP 开发,而不是预估的 3 个月。
  • 安全性达标:利用 Swift 的内存安全特性,避免了常见的数据泄露漏洞,且所有数据处理均在本地 Swift 层完成,满足合规要求。
  • 跨平台一致性:确保了 Mac 和 Windows 两个版本在数据处理结果上 100% 一致,消除了此前不同平台逻辑差异导致的审计问题。

✅ 最佳实践

最佳实践指南

✅ 实践 1:优先使用 Swift 原生 UI 框架构建界面

说明: Velox 将 Tauri 的核心概念移植到了 Swift 生态系统。虽然 Tauri (Rust) 通常与 Web 前端技术(HTML/CSS/JS)搭配使用,但在 Swift 环境下,利用 SwiftUI 或 UIKit 可以获得更佳的性能和更原生的体验。Velox 允许你复用 Tauri 的后端逻辑(系统调用、安全性),但前端应优先考虑原生组件。

实施步骤:

  1. 评估现有的 Web 视图是否必须,如果追求极致性能,使用 SwiftUI 替换 WebView。
  2. 利用 Veloz 提供的桥接机制,将 Tauri 的 Command 逻辑暴露给 Swift 的 View Model。
  3. 使用 Swift 的 Combine 框架来处理来自 Rust 后端的事件流。

注意事项: 避免在 Swift 中混合过多的 Web 技术,除非你有跨平台的前端代码库必须复用。


✅ 实践 2:建立安全的 Rust-Swift 桥接通信层

说明: Velox 的核心价值在于保留 Tauri 的 Rust 后端安全性。你需要确保 Swift 端(前端)与 Rust 端(后端)之间的通信是类型安全且序列化高效的。不同于 C FFI,应利用 Velox 定义的接口规范进行数据交换。

实施步骤:

  1. 定义清晰的数据结构(Structs),确保在 Rust 和 Swift 中有一一对应的映射(通常通过 Serde 和 Codable)。
  2. 在 Rust 侧编写 Command,处理繁重的系统级任务。
  3. 在 Swift 侧调用这些 Command,并使用 async/await 处理异步结果。

注意事项: 检查所有跨边界传递的数据,确保没有内存泄漏,特别是在处理大型二进制数据(如图片或文件)时。


✅ 实践 3:遵循 Apple 平台的人机界面指南 (HIG)

说明: 既然目标平台是 macOS/iOS,应用的外观和行为必须符合 Apple 的标准。Velox 应用不仅仅是功能的堆砌,更应体现原生质感。

实施步骤:

  1. 使用 SwiftUI 的原生控件(如 NavigationStack, List, Form)而非自定义的通用控件。
  2. 确保支持 macOS 的基本交互,如窗口全屏、分割视图以及深色模式。
  3. 实现适当的键盘快捷键和菜单栏集成。

注意事项: 不要照搬移动端或 Web 端的交互模式,要充分利用鼠标/触控板和macOS的窗口管理特性。


✅ 实践 4:精细化的权限与沙盒管理

说明: Tauri 的一大卖点是安全性,Velox 继承了这一基因。在 Apple 平台上,应用必须严格遵守沙盒机制和权限请求。

实施步骤:

  1. Info.plist 中明确声明需要的隐私权限(如文件访问、网络、摄像头)。
  2. 利用 Rust 后端进行权限校验,而不是让 Swift 直接执行敏感操作。
  3. 遵循“最小权限原则”,仅在用户明确触发操作时请求权限。

注意事项: Apple 的审核机制非常严格,确保所有权限请求都有合理的用途说明,否则应用会被拒审。


✅ 实践 5:模块化 Rust 核心逻辑

说明: 为了保持代码库的可维护性,应将业务逻辑主要集中在 Rust 层,Swift 层仅作为“瘦客户端”负责 UI 渲染和用户输入。

实施步骤:

  1. 在 Rust 侧创建独立的模块,处理数据库、网络请求和文件 I/O。
  2. 通过 Veloz 的 API 将这些功能封装为统一的服务接口。
  3. Swift 侧仅通过依赖注入的方式调用这些接口,不包含具体业务逻辑实现。

注意事项: 这种架构使得未来如果需要移植到其他平台(如再次移植回 Linux 或 Windows),核心 Rust 代码无需重写。


✅ 实践 6:利用 Swift Package Manager 管理依赖

说明: Velox 项目通常涉及复杂的混合语言编译。使用 Swift Package Manager (SPM) 来管理 Swift 代码及其与 Rust 库的链接是最佳实践。

实施步骤:

  1. 将 Swift 项目配置为 SPM 包或使用 Xcode 的内置 SPM 支持。
  2. 确保编译脚本能够正确处理 Rust 的 Cargo 构建产物(.dylib.a 文件)。
  3. 设置明确的构建设置,

🎓 学习要点

  • 基于 Miguel de Icaza 关于 Velox(Tauri 的 Swift 移植版)的分享,以下是关键要点总结:
  • 🍎 填补生态空白:Velox 旨在将 Tauri 架构引入 macOS 和 iOS,解决了原先 Tauri 仅支持桌面端而缺乏对 Apple 原生支持的痛点。
  • 🚀 技术栈重构:项目并非简单翻译,而是利用 Swift 语言能力重写了核心逻辑,包括使用 SwiftNIO 替代 Rust 的 Tokio 来处理异步事件。
  • ⚡️ 性能即目标:Velox 的设计初衷是追求极致性能,Miguel 指出即使是 Electron 应用也在尝试通过 Rust 提升速度,Velox 则旨在构建更轻量的底层。
  • 🧩 绑定层挑战:开发中最复杂的部分在于创建“胶水代码”,即如何让 Swift 的 WebView 准确地与 Rust 侧的业务逻辑进行双向通信和类型映射。
  • 🤝 架构启示:该项目展示了如何将 Rust 的后端性能优势与 Swift/Apple 的前端生态相结合,为跨平台开发提供了新的“混合架构”思路。

❓ 常见问题

1: Velox 是什么?它与 Tauri 有什么区别?

1: Velox 是什么?它与 Tauri 有什么区别?

A: Velox 是由著名开发者 Miguel de Icaza 发起的一个实验性项目,旨在将 Tauri 的核心概念移植到 Swift 生态系统。Tauri 通常使用 Rust 作为后端语言,而 Velox 则使用 Swift(并结合 SwiftUI)来构建 macOS 和 iOS 原生应用。简而言之,Velox 可以被视为“Swift 版本的 Tauri”,它继承了 Tauri 构建轻量级、安全应用的哲学,但主要面向苹果平台的开发者。

2: 为什么要用 Swift 重写 Tauri?使用 Velox 有什么优势?

2: 为什么要用 Swift 重写 Tauri?使用 Velox 有什么优势?

A: 使用 Swift 重写主要是为了降低苹果平台开发者的准入门槛。虽然 Rust 性能极佳,但学习曲线较陡峭。Velox 的优势包括:

  1. 语言熟悉度:对于已经熟悉 iOS/macOS 开发的开发者来说,使用 Swift 和 SwiftUI 更加顺手。
  2. 原生集成:Swift 与苹果生态系统的 API 集成更加紧密,访问原生功能(如 iCloud、特定的苹果框架)可能更加方便。
  3. 工具链统一:开发者可以使用 Xcode 作为主要的开发环境,无需配置复杂的 Rust 工具链。

3: Velox 目前支持哪些平台?可以用它开发 Windows 或 Android 应用吗?

3: Velox 目前支持哪些平台?可以用它开发 Windows 或 Android 应用吗?

A: 目前 Velox 主要专注于 苹果平台,具体包括 macOS 和 iOS。由于 Swift 语言本身的特性(虽然 Swift 有 Linux 版本,但 UI 框架支持有限),Velox 并不像原始版本的 Tauri 那样支持 Windows、Linux 或 Android。如果你需要跨平台开发(包括桌面和移动端的全面覆盖),原版的 Tauri(使用 Rust)仍然是更好的选择。

4: Velox 的架构是怎样的?它如何处理 Web 前端和原生后端?

4: Velox 的架构是怎样的?它如何处理 Web 前端和原生后端?

A: Velox 采用了与 Tauri 类似的架构模式:

  1. WebView:前端依然使用 Web 技术构建(如 HTML、CSS、JavaScript/TypeScript),通过 WebView 渲染。
  2. 原生后端:后端逻辑由 Swift 编写,运行在原生进程或 App 内部。
  3. IPC 通信:前端和后端通过消息传递进行通信。Velox 提供了一种机制,允许 JavaScript 调用 Swift 函数,并异步获取结果,从而实现 Web UI 与原生功能的交互。

5: Velox 现在可以用于生产环境吗?

5: Velox 现在可以用于生产环境吗?

A: 不建议。根据 Miguel de Icaza 在 Hacker News 上的描述,Velox 目前处于 概念验证 阶段。虽然它已经能够运行基本的演示程序(如调用系统 API 或渲染网页),但它可能还缺少完善的生产级特性,例如全面的安全审计、自动更新机制、打包工具链的稳定性等。建议关注其项目进展,等到版本成熟后再考虑用于商业项目。

6: 如何开始尝试 Velox?

6: 如何开始尝试 Velox?

A: 由于 Velox 是一个开源实验项目,你通常可以在 Miguel de Icaza 的 GitHub 账号下找到相关代码仓库。开始尝试通常需要:

  1. 一台运行最新版 macOS 的 Mac 电脑。
  2. 安装 Xcode
  3. 克隆项目源码并按照 README 中的指示编译示例代码。由于项目较新,可能需要自行解决一些依赖问题或编译环境配置。

7: 原版 Tauri 和 Velox 的性能表现如何对比?

7: 原版 Tauri 和 Velox 的性能表现如何对比?

A: 理论上,Rust(Tauri 后端)在内存安全和极端性能优化方面具有优势,且跨平台一致性更好。Swift(Velox 后端)虽然在苹果设备上性能极佳,且对 SwiftUI 的支持使得 UI 渲染非常流畅,但其限制在于无法跨出苹果生态。对于纯苹果应用开发,Velox 的性能体验应该与原生 Swift 应用无异,且优于传统的 Electron 应用。


🎯 思考题

## 挑战与思考题

### 挑战 1: [简单] 🌟

问题**:

Tauri 的核心优势之一是利用系统自带的 WebView 而不是打包一个完整的 Chromium(如 Electron)。请分析一下,如果将 Tauri 移植到 Swift (Velox) 环境下,应该调用 macOS 或 iOS 的哪个原生 API 来渲染 Web 内容?这种做法对最终应用的体积有多大程度的缩减?

提示**:


🔗 引用

注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。


本文由 AI Stack 自动生成,包含深度分析与可证伪的判断。