Quay lại các so sánh
UI đa nền tảng

Perry vs Tauri

Tauri là một framework để xây dựng ứng dụng desktop đa nền tảng (và ngày càng nhiều cho di động) với backend Rust và frontend chạy bên trong webview tích hợp của hệ điều hành — WebView2 trên Windows, WKWebView trên macOS, WebKitGTK trên Linux. Ứng dụng Tauri nhỏ hơn đáng kể so với Electron vì webview của OS không được đóng gói. Perry đi theo một con đường khác: hoàn toàn không có webview, không render HTML, chỉ là TypeScript được biên dịch thành mã máy gốc điều khiển widget nền tảng thực sự.

Tauri là gì?

Tauri là một framework mã nguồn mở được viết bằng Rust cho phép bạn xây dựng ứng dụng đa nền tảng với frontend web (bất kỳ framework nào — React, Vue, Svelte, v.v.) và backend Rust. Thay vì đóng gói Chromium, Tauri sử dụng webview tích hợp của hệ thống, giúp giữ trình cài đặt ứng dụng ở mức một chữ số MB trên Linux/Windows/macOS. Tauri 2 đã thêm hỗ trợ di động (iOS và Android). Frontend được render dưới dạng HTML/CSS/JS bởi webview hệ thống; giao tiếp với backend Rust đi qua một bridge IPC.

Perry là gì?

Perry biên dịch TypeScript trực tiếp thành mã máy gốc qua LLVM. Lớp UI (perry/ui) là một API khai báo kiểu SwiftUI ánh xạ đến widget nền tảng gốc — không phải HTML được render bởi webview. Ứng dụng viết bằng Perry không mang theo engine JavaScript, không chạy bên trong WebKit/WebView2 và không cần bridge IPC giữa UI và logic. Perry nhắm đến 10 nền tảng bao gồm di động, watch và TV.

So sánh song song

Tính năngPerryTauri
Render UIWidget nền tảng gốc (AppKit, UIKit, GTK4, Win32, JNI)Webview hệ thống (WKWebView, WebView2, WebKitGTK) — HTML/CSS/JS
Ngôn ngữ frontendTypeScript (API widget khai báo)HTML/CSS/JS qua bất kỳ framework web nào (React, Vue, v.v.)
Ngôn ngữ backendTypeScriptRust
IPC giữa UI và logicKhông — một tiến trình, gọi trực tiếpBắt buộc (UI trong webview, logic trong tiến trình Rust)
Trình cài đặt hello-world~330 KB~3–10 MB (webview do OS cung cấp)
Di động (iOS, Android)Có — UI gốcCó — dựa trên webview (Tauri 2)
Watch / TVwatchOS, tvOS, Wear OSKhông
Mục tiêu WebAssemblyCó (perry/ui qua bridge DOM)N/A (Tauri tự sử dụng webview gốc)
Độ trưởng thànhTrước 1.0Ổn định (1.x / 2.x)

Perry thắng ở đâu

  • +UI thực sự gốc — Perry không render HTML; nó điều khiển widget nền tảng thực sự, vì vậy ứng dụng kế thừa vật lý cuộn gốc, focus, accessibility, IME và theming OS miễn phí.
  • +Hello-world nhỏ hơn (~330 KB so với mức một chữ số MB của Tauri), và không phụ thuộc webview hệ thống tại runtime.
  • +Một ngôn ngữ, một tiến trình. Toàn bộ ứng dụng — UI và logic — là TypeScript, không có bridge IPC để thiết kế hay debug.
  • +watchOS, tvOS, Wear OS và một mục tiêu Web/JS đầy đủ với pipeline biên dịch gốc thực sự, không phải webview đóng gói.
  • +Không có sự khác biệt hành vi webview giữa các nền tảng. Tauri kế thừa các đặc thù của WKWebView vs WebView2 vs WebKitGTK; Perry chọn con đường widget gốc trên mỗi OS.
  • +Hiệu năng tính toán là AOT-gốc, không phải JIT của webview. Perry dẫn đầu microbench tính toán trong điều kiện tương đương trên M1 Max (perry/benchmarks).

Tauri thắng ở đâu

  • +Framework trưởng thành, ổn định với dòng 2.x đang hoạt động và cộng đồng lớn.
  • +Linh hoạt frontend — sử dụng bất kỳ framework web nào (React, Vue, Svelte, Solid, v.v.) bạn đã biết.
  • +Trình cài đặt nhỏ hơn Electron vì Tauri dựa vào webview do OS cung cấp thay vì đóng gói Chromium.
  • +Backend Rust lý tưởng nếu bạn có công việc cấp hệ thống cần làm (filesystem, API gốc) và muốn đảm bảo tại thời điểm biên dịch ở đó.
  • +Render webview nghĩa là tốc độ lặp CSS/HTML và devtools hoạt động như bạn mong đợi từ phát triển web.
  • +Pipeline đóng gói, ký mã và cập nhật đã được thiết lập.

Khi nào nên chọn Perry

Chọn Perry nếu bạn muốn UI thực sự gốc (không phải HTML render trong webview), binary gốc nhỏ không phụ thuộc webview, một mã nguồn TypeScript duy nhất qua desktop + di động + watch + TV, hoặc mã widget đa nền tảng được xác thực tại thời điểm biên dịch.

Khi nào nên chọn Tauri

Chọn Tauri nếu bạn có frontend web hiện tại hoặc dự kiến, muốn ứng dụng desktop được hỗ trợ bởi Rust với trình cài đặt nhỏ, hài lòng với HTML/CSS cho UI, hoặc muốn hệ sinh thái rộng lớn của các framework và công cụ web.

Kết luận

Tauri là một Electron tốt hơn rất nhiều — cùng cách tiếp cận công nghệ web, trình cài đặt nhỏ hơn đáng kể vì webview của OS không được đóng gói. Nhưng nó vẫn là một kiến trúc dựa trên webview, có nghĩa là render HTML/CSS/JS và một bridge IPC. Perry có một lập trường khác: hoàn toàn không có webview, widget nền tảng gốc, một tiến trình duy nhất. Nếu bạn muốn giữ web stack với binary nhỏ hơn Electron, Tauri là câu trả lời đúng. Nếu bạn muốn rời web stack để có widget gốc trong TypeScript, Perry là câu trả lời.

Thử Perry

Biên dịch TypeScript của bạn thành mã gốc ngay hôm nay.

Bắt đầu