กลับไปยังการเปรียบเทียบ
UI ข้ามแพลตฟอร์ม

Perry vs Tauri

Tauri เป็นเฟรมเวิร์กสำหรับสร้างแอปเดสก์ท็อปข้ามแพลตฟอร์ม (และมือถือมากขึ้นเรื่อย ๆ) ด้วย backend Rust และ frontend ที่รันใน webview ในตัวของระบบปฏิบัติการ — WebView2 บน Windows, WKWebView บน macOS, WebKitGTK บน Linux แอป Tauri มีขนาดเล็กกว่า Electron มากเพราะไม่ได้บันเดิล webview ของ OS Perry เลือกเส้นทางที่แตกต่าง: ไม่มี webview เลย ไม่มีการเรนเดอร์ HTML มีเพียง TypeScript ที่คอมไพล์เป็นโค้ดเครื่องเนทีฟที่ขับวิดเจ็ตแพลตฟอร์มจริง

Tauri คืออะไร?

Tauri เป็นเฟรมเวิร์กโอเพนซอร์สที่เขียนด้วย Rust ซึ่งให้คุณสร้างแอปพลิเคชันข้ามแพลตฟอร์มด้วย frontend เว็บ (เฟรมเวิร์กใดก็ได้ — React, Vue, Svelte ฯลฯ) และ backend Rust แทนที่จะบันเดิล Chromium Tauri ใช้ webview ในตัวของระบบ ซึ่งทำให้ตัวติดตั้งแอปอยู่ในระดับเลขหลักเดียว MB บน Linux/Windows/macOS Tauri 2 เพิ่มการรองรับมือถือ (iOS และ Android) Frontend ถูกเรนเดอร์เป็น HTML/CSS/JS โดย webview ของระบบ; การสื่อสารกับ backend Rust ผ่านสะพาน IPC

Perry คืออะไร?

Perry คอมไพล์ TypeScript ตรงเป็นโค้ดเครื่องเนทีฟผ่าน LLVM เลเยอร์ UI (perry/ui) เป็น API declarative สไตล์ SwiftUI ที่แมปไปยังวิดเจ็ตแพลตฟอร์มเนทีฟ — ไม่ใช่ HTML ที่เรนเดอร์โดย webview แอปที่เขียนด้วย Perry ไม่ต้องแบก JavaScript engine ไม่รันใน WebKit/WebView2 และไม่ต้องการสะพาน IPC ระหว่าง UI กับ logic Perry รองรับ 10 แพลตฟอร์มรวมถึงมือถือ, watch และ TV

เคียงข้างกัน

ฟีเจอร์PerryTauri
การเรนเดอร์ UIวิดเจ็ตแพลตฟอร์มเนทีฟ (AppKit, UIKit, GTK4, Win32, JNI)Webview ของระบบ (WKWebView, WebView2, WebKitGTK) — HTML/CSS/JS
ภาษา FrontendTypeScript (declarative widget API)HTML/CSS/JS ผ่านเฟรมเวิร์กเว็บใด ๆ (React, Vue ฯลฯ)
ภาษา BackendTypeScriptRust
IPC ระหว่าง UI กับ logicไม่มี — โพรเซสเดียว เรียกตรงจำเป็น (UI ใน webview, logic ในโพรเซส Rust)
ตัวติดตั้ง hello-world~330 KB~3–10 MB (webview มาจาก OS)
มือถือ (iOS, Android)ใช่ — UI เนทีฟใช่ — อิง webview (Tauri 2)
Watch / TVwatchOS, tvOS, Wear OSไม่
เป้าหมาย WebAssemblyใช่ (perry/ui ผ่านสะพาน DOM)N/A (ตัว Tauri เองใช้ webview แบบเนทีฟ)
ความสมบูรณ์Pre-1.0เสถียร (1.x / 2.x)

จุดที่ Perry ชนะ

  • +UI เนทีฟอย่างแท้จริง — Perry ไม่เรนเดอร์ HTML; แต่ขับวิดเจ็ตแพลตฟอร์มจริง แอปจึงสืบทอด scroll physics, focus, accessibility, IME และ theming ของ OS โดยอัตโนมัติ
  • +Hello-world ขนาดเล็กกว่า (~330 KB เทียบกับเลขหลักเดียว MB ของ Tauri) และไม่ต้องพึ่ง webview ของระบบที่รันไทม์
  • +ภาษาเดียว โพรเซสเดียว ทั้งแอป — UI และ logic — เป็น TypeScript โดยไม่มีสะพาน IPC ที่ต้องออกแบบหรือ debug
  • +watchOS, tvOS, Wear OS และเป้าหมาย Web/JS เต็มรูปแบบพร้อม pipeline การคอมไพล์เนทีฟจริง ไม่ใช่ webview ที่บันเดิลมา
  • +ไม่มีพฤติกรรม webview ที่แตกต่างกันระหว่างแพลตฟอร์ม Tauri สืบทอดความแปลกของ WKWebView vs WebView2 vs WebKitGTK; Perry เลือกเส้นทาง widget เนทีฟบนแต่ละ OS
  • +ประสิทธิภาพการคำนวณเป็นแบบ AOT-เนทีฟ ไม่ใช่ webview-JIT Perry นำใน microbenchmark การคำนวณภายใต้เงื่อนไขที่เทียบเท่ากันบน M1 Max (perry/benchmarks)

จุดที่ Tauri ชนะ

  • +เฟรมเวิร์กที่สมบูรณ์และเสถียรพร้อมสาย 2.x ที่กำลังเติบโตและชุมชนขนาดใหญ่
  • +ความยืดหยุ่นของ frontend — ใช้เฟรมเวิร์กเว็บใด ๆ (React, Vue, Svelte, Solid ฯลฯ) ที่คุณรู้จักอยู่แล้ว
  • +ตัวติดตั้งเล็กกว่า Electron เพราะ Tauri พึ่ง webview ที่ OS จัดให้แทนที่จะบันเดิล Chromium
  • +Backend Rust เหมาะสมถ้าคุณมีงานระดับระบบ (filesystem, API เนทีฟ) และต้องการการรับประกันระดับ compile-time ตรงนั้น
  • +การเรนเดอร์ webview หมายความว่าความเร็วในการ iterate CSS/HTML และ devtools ทำงานเหมือนที่คุณคาดหวังจากการพัฒนาเว็บ
  • +Pipeline การแพ็กเกจ การลงนามโค้ด และตัวอัปเดตที่ตั้งหลักแล้ว

เมื่อใดควรเลือก Perry

เลือก Perry ถ้าคุณต้องการ UI เนทีฟอย่างแท้จริง (ไม่ใช่ HTML ที่เรนเดอร์ใน webview) ไบนารีเนทีฟขนาดเล็กที่ไม่ต้องพึ่ง webview โค้ดเบส TypeScript เดียวข้ามเดสก์ท็อป + มือถือ + watch + TV หรือโค้ด widget ข้ามแพลตฟอร์มที่ตรวจสอบได้ในเวลาคอมไพล์

เมื่อใดควรเลือก Tauri

เลือก Tauri ถ้าคุณมี frontend เว็บอยู่แล้วหรือวางแผนจะมี ต้องการแอปเดสก์ท็อปที่ใช้ Rust backend ตัวติดตั้งเล็ก พอใจกับ HTML/CSS สำหรับ UI หรือต้องการระบบนิเวศกว้างของเฟรมเวิร์กและเครื่องมือเว็บ

บทสรุป

Tauri เป็น Electron ที่ดีกว่ามาก — แนวทาง web-tech แบบเดียวกัน ตัวติดตั้งเล็กกว่ามากเพราะไม่ได้บันเดิล webview ของ OS แต่ก็ยังเป็นสถาปัตยกรรมอิง webview ซึ่งหมายถึงการเรนเดอร์ HTML/CSS/JS และสะพาน IPC Perry มีจุดยืนที่แตกต่าง: ไม่มี webview เลย วิดเจ็ตแพลตฟอร์มเนทีฟ โพรเซสเดียว ถ้าคุณต้องการคง web stack ไว้พร้อมไบนารีที่เล็กกว่า Electron Tauri คือคำตอบที่ถูกต้อง ถ้าคุณต้องการทิ้ง web stack เพื่อไปสู่วิดเจ็ตเนทีฟใน TypeScript Perry คือคำตอบ

ลองใช้ Perry

คอมไพล์ TypeScript ของคุณเป็นเนทีฟวันนี้

เริ่มต้น