Tauri 2.0 เปิดตัวอย่างเป็นทางการ
(v2.tauri.app)- Tauri คือเฟรมเวิร์กสำหรับสร้างไบนารีขนาดเล็กและรวดเร็วสำหรับทุกแพลตฟอร์มเดสก์ท็อปหลัก (macOS, Linux, Windows) และมือถือ (iOS, Android)
- สามารถผสานรวมเฟรมเวิร์กฝั่งฟรอนต์เอนด์ใดก็ตามที่คอมไพล์ด้วย HTML, JavaScript, CSS ได้ และเมื่อจำเป็นก็สามารถใช้ภาษาอย่าง Rust, Swift, Kotlin สำหรับลอจิกฝั่งแบ็กเอนด์ได้
- มี JavaScript API ที่ครอบคลุมอย่างมาก ทำให้ในกรณีส่วนใหญ่ไม่จำเป็นต้องเขียนโค้ดด้วย Rust, Swift, Kotlin
ควรใช้ Tauri เมื่อใด?
- เมื่อต้องการ codebase UI ชุดเดียวสำหรับทุกแพลตฟอร์ม
- เมื่อต้องการเข้าถึงผู้ใช้ให้ได้มากที่สุดบนแพลตฟอร์มของพวกเขา (เช่น Windows, macOS, Linux, Android, iOS)
- หากคุณเป็นนักพัฒนาฟรอนต์เอนด์เว็บและต้องการเขียนแอปพลิเคชันเนทีฟ
- หากคุณเป็นนักพัฒนา Rust และต้องการสร้างแอปพลิเคชันด้วย UI ที่ยอดเยี่ยมพร้อมตัวเลือกในการเขียนด้วย Rust ได้ด้วย
- หากคุณมีทีมพัฒนาเว็บและต้องการขยายไปสู่ตลาดแอปพลิเคชันเนทีฟด้วยการลงทุนเริ่มต้นต่ำ
- หากคุณมีทีมนักพัฒนา Rust และต้องการเขียนทุกอย่างด้วย Rust
จุดเด่นและการปรับปรุงในเวอร์ชัน 2.0
ปรับปรุงประสบการณ์การเริ่มต้นใช้งาน
- ให้ความสำคัญกับประสบการณ์นักพัฒนา (DX) และพยายามทำให้กระบวนการเริ่มต้นนี้ลื่นไหลพอ ๆ กับการสร้างและปล่อยแอปพลิเคชันจริง
- สร้างโปรเจ็กต์ชื่อ create-tauri-app (CTA) เพื่อให้นักพัฒนาสามารถเริ่มต้นจากศูนย์และได้แอป Tauri ที่รันได้ภายในไม่กี่นาทีแทนที่จะเป็นหลายชั่วโมง
Hot-Module Replacement
- ขยาย hot module replacement (HMR) ที่เคยพิจารณาไว้ตั้งแต่ 1.x เพื่อปรับปรุงกระบวนการพัฒนา ไปสู่การรองรับอุปกรณ์มือถือและอีมูเลเตอร์
- การเปลี่ยนแปลงทั้งหมดในฟรอนต์เอนด์ของแอปพลิเคชันไม่จำเป็นต้องบิลด์ทั้งแอปใหม่ และสามารถพรีวิวได้แบบเรียลไทม์ว่าจะมีหน้าตาอย่างไรบนอุปกรณ์หรือระบบปฏิบัติการที่กำลังพัฒนาอยู่
ปลั๊กอิน
- ใน Tauri 2.0 ได้สร้างระบบปลั๊กอินที่พัฒนาขึ้นกว่าเดิม โดยย้ายความสามารถเดิมจำนวนมากไปเป็นปลั๊กอินอย่างเป็นทางการ เพื่อให้ชุมชนมีส่วนร่วมกับ Tauri ได้ง่ายขึ้น
- ระบบปลั๊กอินรองรับปลั๊กอินบนมือถือด้วย บน iOS สามารถเขียนหรือใช้โค้ดเนทีฟซ้ำด้วย Swift และบน Android ด้วย Kotlin พร้อมใช้ annotation (
@Commandบน Android) หรือทำ subclass (YourPluginClass: Pluginบน iOS) หรือเรียกโค้ด Swift หรือ Kotlin จากคำสั่ง Tauri ที่อิง Rust เพื่อเปิดเผยฟังก์ชันให้ฟรอนต์เอนด์ของ Tauri ใช้ได้โดยตรง - ปลั๊กอินทางการที่มีให้จะอิงตามเมเจอร์เวอร์ชันของ Tauri
- Autostart: รันแอปอัตโนมัติเมื่อระบบเริ่มทำงาน
- Barcode Scanner: สแกนบาร์โค้ด เช่น QR code, EAN-13 ในแอปมือถือ
- Biometric: หน้าต่างยืนยันตัวตนด้วยชีวมิติบน Android และ iOS
- Clipboard: อ่านและเขียนคลิปบอร์ดของระบบ
- Command Line Interface (CLI): แยกวิเคราะห์อาร์กิวเมนต์จาก command line interface
- Deep Linking: ตั้งค่าแอปพลิเคชัน Tauri ให้เป็นตัวจัดการเริ่มต้นของ URL
- Dialog: กล่องโต้ตอบเนทีฟของระบบสำหรับเปิดและบันทึกไฟล์ รวมถึงกล่องข้อความ
- File System: เข้าถึงระบบไฟล์
- Global Shortcut: ลงทะเบียนคีย์ลัดแบบโกลบอล
- HTTP Client: เข้าถึง HTTP client ที่เขียนด้วย Rust
- Localhost: ใช้เซิร์ฟเวอร์ localhost ในแอป production
- Logging: การล็อกที่ปรับแต่งได้
- NFC: อ่านและเขียนแท็ก NFC บน Android และ iOS
- Notifications: ส่งการแจ้งเตือนแบบเนทีฟถึงผู้ใช้
- OS Information: อ่านข้อมูลเกี่ยวกับระบบปฏิบัติการ
- Persisted Scope: เก็บการเปลี่ยนแปลง runtime scope ไว้ในระบบไฟล์
- Positioner: ย้ายหน้าต่างไปยังตำแหน่งมาตรฐานที่ใช้บ่อย
- Process: เข้าถึงโปรเซสปัจจุบัน
- Shell: เข้าถึง system shell เพื่อจัดการไฟล์และ URL ด้วยแอปพลิเคชันเริ่มต้น และสร้าง child process
- Single Instance: รับประกันว่าแอป Tauri จะรันได้เพียงอินสแตนซ์เดียวในเวลาเดียวกัน
- SQL: ปลั๊กอิน Tauri ที่ให้ส่วนติดต่อเพื่อให้ฟรอนต์เอนด์สื่อสารกับฐานข้อมูล SQL ผ่าน sqlx
- Store: ที่เก็บข้อมูลคีย์-ค่าแบบถาวร
- Stronghold: ฐานข้อมูลที่ปลอดภัยและเข้ารหัส
- System Tray
- Updater: อัปเดตแอป Tauri จากภายในแอป
- Upload: อัปโหลดไฟล์ผ่าน HTTP
- Websocket: เปิดการเชื่อมต่อ WebSocket จาก JavaScript โดยใช้ Rust client
- Window Customization
- Window State: คงขนาดและตำแหน่งของหน้าต่างไว้
การจากไปของ Allowlist, Allowlist จงเจริญ
allowlistไม่มีอยู่อีกต่อไปแล้ว เพราะถึงขีดจำกัดของระบบนี้อย่างรวดเร็ว- มันถูกสร้างขึ้นมาเพื่อใช้เฉพาะกับฟังก์ชันแกนหลักของ Tauri เท่านั้น และไม่ได้ครอบคลุม API ทั้งหมดของ Tauri
- ระบบใหม่ไม่เพียงครอบคลุมพื้นผิว API แกนหลักทั้งหมดของ Tauri เท่านั้น แต่ยังรองรับให้นักพัฒนาแอปและปลั๊กอินสามารถนำการควบคุมการเข้าถึงและการกำหนดขอบเขตของตนเองมาใช้ด้วยแนวทางแบบรวมศูนย์ได้
- ใช้
permissions- "สวิตช์เปิด-ปิดสำหรับคำสั่ง Tauri",scopes- "การตรวจสอบความถูกต้องของพารามิเตอร์สำหรับคำสั่ง Tauri",capabilities- "การผูกสิทธิ์และขอบเขตเข้ากับ Windows และ WebView" เพื่อสร้างระบบควบคุมการเข้าถึงที่ยืดหยุ่นแต่ใช้งานง่าย - สามารถสร้างไฟล์สิทธิ์หรือไฟล์กำหนดขอบเขตแบบมีชื่อ และนำกลับมาใช้ซ้ำหรือผสมรวมกับสิทธิ์หรือขอบเขตแบบมีชื่ออื่นได้
- ทำให้สามารถสร้างชุดคำอธิบายที่ละเอียดขึ้นซึ่งประกอบด้วยสิทธิ์และขอบเขตหลายแบบ ทั้งแบบง่ายและซับซ้อน
- ด้วยความสามารถเพิ่มเติมนี้ Tauri core จึงสามารถเข้าใจได้แล้วว่าข้อความเรียกคำสั่งจากฟรอนต์เอนด์ WebView ได้รับอนุญาตให้ไปถึงฟังก์ชันคำสั่งหรือไม่
เขียนระบบสื่อสารระหว่างโปรเซส (IPC) ใหม่
- เขียนชั้น IPC ใหม่ ทำให้ตอนนี้รองรับฟีเจอร์ที่ต้องการกันมานานอย่าง Raw Payload และเปลี่ยนวิธีการทำงานภายใน
- ก่อนหน้านี้ payload ของ IPC ทั้งหมดจะถูก serialize และ deserialize เป็น json ทำให้เกิด overhead ซึ่งจะสังเกตได้ชัดเมื่อมีการส่งข้อมูลมากกว่าสองสามกิโลไบต์ระหว่างฟรอนต์เอนด์กับแบ็กเอนด์
- ระบบใหม่นี้รองรับ Raw Request ซึ่งช่วยเร่งความเร็วในการส่งข้อมูลจำนวนมากจากแบ็กเอนด์ไปยังฟรอนต์เอนด์ หรือกลับกัน โดยใช้ไบต์ดิบโดยตรงหรือใช้กระบวนการ (de)serialization ของตัวเอง (เช่น bson, protobuf, avro ฯลฯ)
คู่มือการเผยแพร่
- ใน Tauri 2.0 ความหลากหลายของการเผยแพร่เพิ่มขึ้นอย่างมากจากระบบนิเวศมือถือและการมีส่วนร่วมของชุมชน
- เอกสารการเผยแพร่มีคู่มือทางการเกี่ยวกับวิธีเผยแพร่ไปยัง Apple Appstore, Google Play, Microsoft Store, CrabNebula Cloud, Flathub, Snapcraft, AUR และรูปแบบการเผยแพร่อื่น ๆ
4 ความคิดเห็น
https://github.com/DioxusLabs/dioxus
ถ้าพัฒนาแค่ด้วย Rust อย่างเดียว อันนี้ก็ดูน่าสนใจกว่านะ เพิ่งรู้เมื่อกี้เอง เดิมทีว่าจะโฟกัสที่ Tauri แต่พอรู้ว่าสามารถพัฒนาทุกอย่างได้ด้วยภาษา Rust ภาษาเดียว ก็ขอเลือกอันนี้เลย~* เขาว่ากันว่าเข้าถึง native ได้โดยตรงและเร็วกว่า IPC
Dioxus - ไลบรารี UI สำหรับ Rust ที่ได้รับอิทธิพลจาก React
ตอนที่ผมเคยโพสต์ครั้งหนึ่งก่อนหน้านี้ น่าจะเป็นเพราะยังเป็นเวอร์ชัน 0.3 เลยมีคอมเมนต์ว่ามีอุปสรรคอยู่พอสมควร
Dioxus 0.5: เว็บ เดสก์ท็อป และแอปมือถือที่พัฒนาด้วย Rust
ตอนนี้เป็น 0.5 แล้ว ก็อาจจะแตกต่างไปแล้วก็ได้ครับ
เป็นข่าวที่น่าทึ่งจริง ๆ ดูแล้วน่าจะมีประโยชน์กับการพัฒนาแอปเนทีฟสำหรับ Windows ด้วย และน่าจะถูกนำไปใช้งานบนมือถือได้อย่างมีประโยชน์มากจริง ๆ
เขียน IPC ใหม่เลยสินะ.... แบบนี้น่าจะส่งข้อมูลขนาดใหญ่พวกวิดีโอได้ดีเลย