27 คะแนน โดย xguru 2024-10-05 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
plumpmath 2024-10-10

https://github.com/DioxusLabs/dioxus

ถ้าพัฒนาแค่ด้วย Rust อย่างเดียว อันนี้ก็ดูน่าสนใจกว่านะ เพิ่งรู้เมื่อกี้เอง เดิมทีว่าจะโฟกัสที่ Tauri แต่พอรู้ว่าสามารถพัฒนาทุกอย่างได้ด้วยภาษา Rust ภาษาเดียว ก็ขอเลือกอันนี้เลย~* เขาว่ากันว่าเข้าถึง native ได้โดยตรงและเร็วกว่า IPC

 
xguru 2024-10-10

Dioxus - ไลบรารี UI สำหรับ Rust ที่ได้รับอิทธิพลจาก React
ตอนที่ผมเคยโพสต์ครั้งหนึ่งก่อนหน้านี้ น่าจะเป็นเพราะยังเป็นเวอร์ชัน 0.3 เลยมีคอมเมนต์ว่ามีอุปสรรคอยู่พอสมควร

Dioxus 0.5: เว็บ เดสก์ท็อป และแอปมือถือที่พัฒนาด้วย Rust
ตอนนี้เป็น 0.5 แล้ว ก็อาจจะแตกต่างไปแล้วก็ได้ครับ

 
tsboard 2024-10-05

เป็นข่าวที่น่าทึ่งจริง ๆ ดูแล้วน่าจะมีประโยชน์กับการพัฒนาแอปเนทีฟสำหรับ Windows ด้วย และน่าจะถูกนำไปใช้งานบนมือถือได้อย่างมีประโยชน์มากจริง ๆ

 
bus710 2024-10-05

เขียน IPC ใหม่เลยสินะ.... แบบนี้น่าจะส่งข้อมูลขนาดใหญ่พวกวิดีโอได้ดีเลย