27 Punkte von xguru 2024-10-05 | 4 Kommentare | Auf WhatsApp teilen
  • Tauri ist ein Framework zum Erstellen kleiner und schneller Binärdateien für alle wichtigen Desktop- (macOS, Linux, Windows) und Mobilplattformen (iOS, Android)
  • Es kann mit jedem Frontend-Framework integriert werden, das zu HTML, JavaScript und CSS kompiliert, und bei Bedarf können Sprachen wie Rust, Swift und Kotlin für Backend-Logik genutzt werden
  • Es bietet eine umfangreiche JavaScript-API, sodass in den meisten Fällen kein Code in Rust, Swift oder Kotlin geschrieben werden muss

Wann sollte man Tauri verwenden?

  • Wenn man eine einzige UI-Codebasis für alle Plattformen möchte
  • Wenn man möglichst viele Nutzer auf ihren jeweiligen Plattformen erreichen möchte (z. B. Windows, macOS, Linux, Android, iOS)
  • Wenn man Frontend-Webentwickler ist und native Anwendungen schreiben möchte
  • Wenn man Rust-Entwickler ist und Anwendungen mit einer ansprechenden UI schreiben möchte, mit der Option, auch in Rust zu entwickeln
  • Wenn man ein Team von Webentwicklern hat und mit geringer Anfangsinvestition in den Markt für native Anwendungen expandieren möchte
  • Wenn man ein Team von Rust-Entwicklern hat und alles in Rust schreiben möchte

Vorteile und Verbesserungen von 2.0

Verbesserte Einstiegserfahrung

  • Die Developer Experience (DX) ist wichtig, und man bemüht sich, diesen Anfangsprozess genauso reibungslos zu gestalten wie das Erstellen und Ausliefern der finalen Anwendung
  • Dafür wurde das Projekt create-tauri-app (CTA) geschaffen, sodass Entwickler von Grund auf starten und innerhalb von Minuten statt Stunden eine laufende Tauri-App erhalten können

Hot-Module Replacement

  • Das Hot Module Replacement (HMR), das bereits in 1.x zur Verbesserung des Entwicklungsprozesses in Betracht gezogen wurde, wurde auf mobile Geräte und Emulatoren ausgeweitet
  • Alle Änderungen am Frontend der Anwendung können in Echtzeit auf dem Zielgerät oder Betriebssystem betrachtet werden, ohne die gesamte Anwendung neu bauen zu müssen

Plugins

  • In Tauri 2.0 wurde ein weiterentwickeltes Plugin-System aufgebaut. Viele bisherige Funktionen wurden in offizielle Plugins ausgelagert, damit die Community leichter zu Tauri beitragen kann
  • Das Plugin-System unterstützt auch mobile Plugins. Unter iOS kann nativer Code in Swift, unter Android in Kotlin geschrieben oder wiederverwendet werden. Mit Annotationen (@Command auf Android), durch das Implementieren von Unterklassen (YourPluginClass: Plugin auf iOS) oder durch das Aufrufen von Swift- oder Kotlin-Code aus Rust-basierten Tauri-Befehlen können Funktionen direkt für das Tauri-Frontend verfügbar gemacht werden
  • Die bereitgestellten offiziellen Plugins folgen der Hauptversion von Tauri
    • Autostart: App beim Systemstart automatisch ausführen
    • Barcode Scanner: Barcodes wie QR-Code und EAN-13 in mobilen Apps scannen
    • Biometric: Eingabeaufforderungen für biometrische Authentifizierung auf Android und iOS
    • Clipboard: System-Zwischenablage lesen und schreiben
    • Command Line Interface (CLI): Argumente in der Kommandozeile parsen
    • Deep Linking: Tauri-Anwendungen als Standard-Handler für URLs festlegen
    • Dialog: Native Systemdialoge zum Öffnen und Speichern von Dateien sowie für Nachrichtendialoge
    • File System: Zugriff auf das Dateisystem
    • Global Shortcut: Globale Tastenkürzel registrieren
    • HTTP Client: Zugriff auf einen in Rust geschriebenen HTTP-Client
    • Localhost: Localhost-Server in Produktions-Apps verwenden
    • Logging: Konfigurierbares Logging
    • NFC: NFC-Tags auf Android und iOS lesen und schreiben
    • Notifications: Native Benachrichtigungen an Nutzer senden
    • OS Information: Informationen über das Betriebssystem auslesen
    • Persisted Scope: Änderungen am Runtime-Scope im Dateisystem beibehalten
    • Positioner: Fenster an gängige Positionen verschieben
    • Process: Zugriff auf den aktuellen Prozess
    • Shell: Zugriff auf die System-Shell, um Dateien und URLs mit Standardanwendungen zu verwalten und Child-Prozesse zu erzeugen
    • Single Instance: Sicherstellen, dass immer nur eine Instanz einer Tauri-App gleichzeitig läuft
    • SQL: Tauri-Plugin, das über sqlx eine Schnittstelle bereitstellt, damit das Frontend mit SQL-Datenbanken kommunizieren kann
    • Store: Persistenter Key-Value-Speicher
    • Stronghold: Verschlüsselte sichere Datenbank
    • System Tray
    • Updater: In-App-Updates für Tauri-Anwendungen
    • Upload: Datei-Uploads über HTTP
    • Websocket: WebSocket-Verbindungen in JavaScript mit einem Rust-Client öffnen
    • Window Customization
    • Window State: Fenstergröße und -position beibehalten

Das Ende der Allowlist, lang lebe die Allowlist

  • allowlist existiert nicht mehr, weil die Grenzen dieses Systems schnell erreicht wurden
  • Es war ausschließlich für Tauri-Kernfunktionen gedacht, deckte aber nicht alle APIs von Tauri ab
  • Das neue System deckt nicht nur die gesamte Kern-API-Oberfläche von Tauri ab, sondern unterstützt auch App- und Plugin-Entwickler dabei, eigene Zugriffskontrolle und Scoping mit einem einheitlichen Ansatz zu implementieren
  • Mit permissions„On-off-Toggles für Tauri-Befehle“, scopes„Parametervalidierung für Tauri-Befehle“ und capabilities„Verknüpfung von Berechtigungen und Scopes mit Windows und WebView“ wurde ein flexibles und zugleich leicht nutzbares Zugriffskontrollsystem geschaffen
  • Es können benannte Berechtigungs- oder Scope-Dateien erstellt und mit anderen benannten Berechtigungen oder Scopes wiederverwendet und kombiniert werden
  • Dadurch lassen sich feinere, beschreibende Sets aufbauen, die mehrere einfache oder komplexe Berechtigungen und Scopes enthalten
  • Durch diese Erweiterung kann der Tauri-Core nun erkennen, ob Aufrufnachrichten aus dem Frontend-WebView die jeweilige Befehlsfunktion erreichen dürfen

Neuschreibung der Interprozesskommunikation (IPC)

  • Die IPC-Schicht wurde neu geschrieben und unterstützt nun das lange gewünschte Feature Raw Payload; außerdem wurde die interne Funktionsweise geändert
  • Zuvor wurden alle IPC-Payloads als JSON serialisiert und deserialisiert, was Overhead verursachte. Das fiel besonders auf, wenn zwischen Frontend und Backend mehr als einige Kilobyte übertragen wurden
  • Das neue System unterstützt Raw Request. Dadurch lassen sich große Datenmengen schneller vom Backend zum Frontend oder umgekehrt übertragen, indem rohe Bytes direkt verwendet oder eigene (De-)Serialisierungsprozesse genutzt werden, etwa bson, protobuf, avro usw.

Deployment-Leitfaden

  • Mit Tauri 2.0 hat die Vielfalt der Deployment-Optionen durch das mobile Ökosystem und Beiträge aus der Community stark zugenommen
  • Die Deploy-Dokumentation enthält offizielle Anleitungen zur Bereitstellung im Apple Appstore, bei Google Play, im Microsoft Store, in der CrabNebula Cloud, auf Flathub, Snapcraft, AUR und in weiteren Distributionsformaten

4 Kommentare

 
plumpmath 2024-10-10

https://github.com/DioxusLabs/dioxus

Wenn man ausschließlich mit Rust entwickelt, wirkt das hier besser. Habe ich gerade erst entdeckt. Ich wollte mich eigentlich auf Tauri konzentrieren, aber wenn man damit alles nur mit der einen Sprache Rust entwickeln kann, nehme ich lieber das hier~* Angeblich ist direkter nativer Zugriff möglich, der schneller als IPC ist.

 
xguru 2024-10-10

Dioxus – eine von React inspirierte UI-Bibliothek für Rust
Als ich sie früher einmal gepostet habe, gab es wohl Kommentare, dass es wegen der Version 0.3 noch einige Hürden gab.

Dioxus 0.5: Web-, Desktop- und Mobile-Apps mit Rust entwickeln
Jetzt ist es ja 0.5, also hat sich das vielleicht geändert.

 
tsboard 2024-10-05

Das sind wirklich erstaunliche Neuigkeiten. Es dürfte auch für die Entwicklung nativer Apps für Windows nützlich sein und sich auch auf Mobilgeräten sehr sinnvoll einsetzen lassen.

 
bus710 2024-10-05

Eine Neufassung von IPC also … dann dürfte es gut sein, um große Datenmengen wie Videos zu übertragen.