Lesedauer 3 Minuten

Tauri ist eine weitere, sehr  interessante Electron-Alternative. Electron war viele Jahre lang das de facto plattformübergreifende Framework für die Erstellung von Desktop-Apps. Visual Studio Code, MongoDB Compass und Postman sind allesamt großartige Beispiele für Apps, die mit diesem Framework erstellt wurden. Electron ist auf jeden Fall großartig, hat aber einige erhebliche Nachteile, die einige andere moderne Frameworks überwunden haben – Tauri ist neben Neutralino eines der besten davon.

Was ist Tauri?

Tauri ist ein modernes Framework, mit dem Sie plattformübergreifende Apps mit bekannten Webtechnologien wie HTML, CSS und JavaScript im Frontend entwerfen, entwickeln und erstellen können, während Sie gleichzeitig die leistungsstarke Programmiersprache Rust im Backend nutzen.

Tauri ist Framework-agnostic. Das bedeutet, dass Sie es mit jeder Frontend-Bibliothek Ihrer Wahl verwenden können – wie Vue, React, Svelte usw. Außerdem ist die Verwendung von Rust in einem Tauri-basierten Projekt völlig optional. Sie können zum Erstellen Ihrer gesamten App nur die von Tauri bereitgestellte JavaScript-API verwenden. Dies macht es nicht nur einfach, eine neue App zu erstellen, sondern auch die Codebasis einer bereits erstellten Web-App zu übernehmen und sie in eine native Desktop-App umzuwandeln, ohne den ursprünglichen Code ändern zu müssen.

Tauri und Electron im Vergleich

Es gibt 3 wichtige Elemente beim Erstellen einer App. Die App muss klein, schnell und sicher sein. Tauri übertrifft Electron in allen 3 Punkten:

  1. Tauri produziert kleine Binärdateien:
    Ein einfaches “Hello, World!” kann mit Electron schon mal 120 MB groß sein. Im Gegensatz dazu ist die die selbe Tauri-App nur ca. 2 MB groß.
  2. Tauri-Apps sind schneller:
    Startgeschwindigkeit und Speichernutzung sind wesentlich effektiver als bei Electron.
  3. Tauri-Apps sind äußerst sicher:
    Entwickler müssen APIs explizit aktivieren oder deaktivieren. Zugriffe auf Files und URLs erfolgen über eigens dafür definierte Scopes. Shell-Commands müssen ebenfalls explizit definiert werden.

Spannend: Mobile Apps mit Tauri

Der gravierendste Vorteil von Tauri gegenüber seinen Mitbewerbern ist das Erstellen von iOS- und Android Apps mit der gleichen Code-Basis. Dieses Feature ist aktuell noch im Alpha-Stadium aber bereits funktionsfähig.

tauri iphone

Tauri und Neutralino

In Sachen Geschwindigkeit und Dateigröße kann Tauri am ehesten mit Neutralino verglichen werden. Beides sind großartige, moderne Frameworks mit individuellen Stärken und Schwächen im Detail. Beide sind mitten in der Entwicklung. Die folgende Tabelle zeigt die wichtigsten Kriterien mit dem aktuellen Stand heute und soll als Entscheidungshilfe für eigene Projekte dienen:

Tauri Neutralino
Lernkurve Erhöht wegen umfangreicher API und hohen Sicherheitsanforderungen. Extrem flach.
Entwicklungszeit 10-15% Overhead durch hohe Sicherheitsanforderungen, zusätzlicher Zeitaufwand beim Build, da kein Cross-Platform-Compiling. Extrem schnell.
Sicherheit Extrem hoch, teilweise over-engineered. Höher als bei einer Webanwendung, jedoch nicht auf dem Level einer klassischen Desktop-Anwendung.
Kommunikation Frontend / Backend Stringified JSON über IPC-Kanäle, bei großen Datenmengen langsam. Schnelle Kommunikation über WebSockets.
Kommunikation mit externen Erweiterungen Unidirektional per HTTP Requests. Bidirektional per WebSockets.
Drag & Drop File API Das komplette Fenster dient als Drop Area.
Fetch API Keine Einschränkungen durch CORS, jedoch aufgrund langsamer Backend-Kommunikation nur für kleine Datenmengen geeignet. Workaround möglich. Keine eigene Fetch API, daher nur Fetch mit Einschränkung durch CORS. Workaround jedoch möglich.
Multi Window Apps Perfekt gelöst. Jedes Fenster ist eine separate App.
Headless Mode Zugriff auf die GUI per Browser oder WebViews anderer Frameworks möglich.
Mobile Apps Für iOS und Android, als Beta-Version (Tauri 2.0) verfügbar.
Cross-Compilation Apps können nur auf der eigenen Plattform kompiliert werden. Auf einer Plattform können Apps für alle Plattformen gebaut werden.
Installer und App Bundles Erzeugt fertige Installer für Windows, macOS und Linux. macOS AppBundles werden unterstützt. Erzeugt einfache ausführbare Binärdateien. Installer und macOS AppBundles benötigen externe Lösungen (Neutralino Build Scripts)
Dependencies Webview2 wird auf älteren Windows-Systemen automatisch installiert. Webview2 muss auf älteren Windows-Systemen manuell (oder per Installer) installiert werden.
Resourcen App Resourcen werden komplett in die Binärdatei eingebettet. Erweiterungen bilden eine Ausnahme. Resourcen werden ähnlich wie bei Electron komplett in einer komprimierten Datei (resources.neu) ausgeliefert. Extensions bilden eine Ausnahme.
Tool-Chain Benötigt NodeJS und Rust auf der Developer-Maschine. NPM oder NPX Paketmanager auf der Developer-Maschine.
Backend Rust C++
Gesamteindruck Vergleichsweise mächtige API, Sicherheitsanforderungen im Workflow eher hinderlich. Wegen Multiwindow und native File Drag & Drop besser für größere Projekt geeignet. Aufgrund WebSockets bessere Integration externer Erweiterungen. Klein, schlank, pragmatisch. Ideal für kleinere und mittlere Projekte.

Ich nutze beide Frameworks. Benötige ich für ein Projekt mehrere Fenster, File Drag & Drop oder später eine mobile Version, entscheide ich mich für Tauri. Für alles Andere nutze ich aufgrund der schnellen Entwicklungszeit Neutralino.

Mehr zu Tauri hier

 

Hat Dir der Beitrag gefallen?

Wenn Du Fragen oder Anmerkungen zu diesem Beitrag hast, dann starte einen Kommentar. DANKE für Dein Feedback!