-
Veröffentlichung von Dioxus 0.6
- Dioxus ist ein Rust-basiertes Framework, mit dem sich Web-, Desktop- und Mobile-Apps mit einer einzigen Codebasis erstellen lassen.
- Ziel ist es, ein besseres Framework als Flutter zu sein.
- Der Fokus liegt auf Full-Stack-Web-Unterstützung und typsicherer Server-/Client-Kommunikation sowie auf hoher Performance und einer besseren Developer Experience.
- Diese Version 0.6 konzentriert sich darauf, Dioxus einfacher nutzbar zu machen, die Developer Experience zu verbessern und Bugs zu beheben.
-
Wichtige Funktionsverbesserungen
- Unterstützung für mobile Simulatoren: Es wurde die Möglichkeit hinzugefügt, Apps auf Android- und iOS-Simulatoren sowie auf Geräten auszuführen.
- Magic Hot Reloading: Unterstützung für Hot Reloading von formatierten Strings, Attributen und verschachteltem
rsx!{}.
- Interaktive CLI: Die Dioxus CLI wurde mit einer neuen UX neu geschrieben, um die Benutzerfreundlichkeit zu verbessern.
- Inline-Stack-Traces: Erfasst WASM-Panics und Logs direkt im Terminal.
- Native Server Functions: Unterstützung für inline Server-RPC für Desktop- und Mobile-Apps.
-
Verbesserungen der Developer Experience
- Toasts und Ladebildschirme: Neue Toasts und Ladebildschirme während der Entwicklung von Web-Apps hinzugefügt.
- Verbesserte Autovervollständigung: Die Autovervollständigung für RSX wurde deutlich verbessert.
- Stabilisierung des Asset-Systems: Stabilisierung des integrierten, linkbasierten Asset-Systems für native Apps.
- Streaming-HTML: Unterstützung für das Streamen von Suspense und Error Boundaries vom Server zum Client.
- SSG und ISG: Unterstützung für Static Site Generation und Incremental Static Generation.
- Fehlerbehandlung: Fehlerbehandlung in Event-Handlern, Tasks und Komponenten mit
?.
- Meta-Elemente: Neue Elemente Head, Title, Meta und Link zum Setzen von Dokumenteigenschaften hinzugefügt.
- Synchrones prevent_default: Ereignisse auf allen Plattformen synchron verarbeiten.
- onresize-Event-Handler: Die Größe von Elementen ohne IntersectionObserver verfolgen.
- onvisible-Event-Handler: Die Sichtbarkeit von Elementen ohne IntersectionObserver verfolgen.
- WGPU-Integration: Dioxus als Overlay über WGPU-Oberflächen und Child Windows rendern.
- dx bundle: Vollständige Unterstützung von dx bundle für Web, iOS und Android.
- JSON-Modus: CLI-Meldungen als JSON ausgeben, um sie in Drittanbieter-Tools und CI/CD-Pipelines zu nutzen.
- Neue Templates: Drei neue Starter-Templates für plattformübergreifende Apps.
- Nightly-Tutorials und Guides: Neue Tutorials und Guides für Dioxus 0.6 und spätere Versionen.
- Prototyp für Binary Patching: Ein Prototyp einer neuen Hot-Reloading-Engine in reinem Rust.
-
Release-Informationen
- Dioxus 0.6 ist das bisher größte Release mit über 350 gemergten Pull Requests und Hunderten gelösten Issues.
- Ziel ist es, die Qualität von Hot Reloading, Autovervollständigung und Asset-Bundling deutlich zu verbessern.
- Die Dioxus CLI soll robuster und einfacher nutzbar werden.
- Mobile-Tools sollen inline in die dioxus CLI integriert werden, um erstklassige Mobile-Unterstützung bereitzustellen.
-
Interaktives Kommandozeilen-Tool
- Dioxus 0.6 bietet eine vollständig überarbeitete CLI-Erfahrung.
- Die neue CLI unterstützt Live-Fortschrittsbalken, Animationen, ein interaktives Filtersystem und die Möglichkeit, Log-Level in Echtzeit zu ändern.
-
Unterstützung für Android und iOS
- In Dioxus 0.6 unterstützt die dioxus CLI standardmäßig
dx serve --platform ios/android.
- Es bietet erstklassige Unterstützung für mobile Plattformen, und die Ziele für Android- und iOS-Simulatoren unterstützen dieselben Funktionen wie Desktop.
-
Überarbeitung der Hot-Reloading-Engine
- In die Hot-Reloading-Engine von Dioxus wurden umfassende Verbesserungen eingeführt.
- Unterstützung für Hot Reloading von formatierten Strings, verschachtelten rsx-Blöcken, Komponenten-Props und einfachen Rust-Ausdrücken.
-
Überarbeitung der Autovervollständigung
- Die Autovervollständigung für
rsx! {} wurde erheblich verbessert.
- Die Integration mit Rust-analyzer wurde verbessert, um eine bessere Autovervollständigungs-Erfahrung zu bieten.
-
Inline-WASM-Stack-Traces und Tracing-Integration
- Bietet Tracing-Integration für WASM-Apps, um Panics und Logs zu erfassen und an das Terminal zu senden.
-
Toasts und Ladebildschirme
- Bietet einen Ladebildschirm, der den Build-Fortschritt während der Entwicklung von Web-Apps anzeigt, sowie Toasts, die den Build-Status darstellen.
-
Full-Stack für Desktop und Mobile
- Integriert native Apps und Server Functions, sodass Server Functions auf Desktop- und Mobile-Zielen standardmäßig funktionieren.
-
Stabilisierung des Manganis-Asset-Systems
- Das neue Asset-System Manganis wurde stabilisiert, und verschiedene Bugs sowie Performance-Probleme wurden behoben.
-
Suspense und HTML-Streaming
- Führt Suspense Boundaries als neue zentrale Primitive für asynchrone UI ein.
- Dioxus Fullstack streamt jede Suspense Boundary vom Server und liefert jeden Chunk aus, ohne auf das Laden der gesamten Seite zu warten.
-
Static Site Generation und ISG
- Verbessert SEO und verkürzt die Ladezeiten für Nutzer durch Unterstützung für Static Site Generation und Incremental Static Generation.
-
Dokumentelemente: Title {}, Link {}, Stylesheet, Meta {}
- Bietet spezielle Elemente zur Interaktion mit dem HTML-Dokumentobjekt, sodass sich Dokumenteigenschaften ohne zusätzliches JavaScript setzen lassen.
-
Fehlerbehandlung mit Fragezeichen
- Element wurde nun von Option auf Result umgestellt, sodass die übliche Fehlerbehandlung von Rust in Komponenten verwendet werden kann.
-
Synchrones prevent_default
- Die Verarbeitung aller Events wurde so verbessert, dass sie synchron erfolgen kann und das Attribut dioxus_prevent_default nicht mehr erforderlich ist.
-
onresize- und onvisible-Event-Handler
- Bietet spezielle Handler zur Verfolgung von Größe und Sichtbarkeit von Elementen, sodass sich reichhaltige Interaktionen ohne JavaScript umsetzen lassen.
-
Hybrides WGPU-Overlay
- Über die Funktion „Child Windows“ von Dioxus Desktop lassen sich native Dioxus-Apps als Overlay in bestehende Fenster integrieren.
-
Unterstützung für Web-, iOS- und Android-Bundles
- Fügt Web- und Mobile-Unterstützung zu dx bundle hinzu, sodass für verschiedene Ziele gebündelt werden kann.
-
JSON-Ausgabe für CI / CLI
- Bietet einen JSON-Ausgabemodus der CLI, um Logging im JSON-Format zu erhalten.
-
Neue Starter-Templates
- Bietet drei neue Starter-Templates für plattformübergreifende Apps.
-
Nightly-Dokumentation, Tutorials und neue Guides
- Dokumentation und Tutorials wurden umfassend überarbeitet, um Grundlagen abzudecken und einen Schwerpunkt auf Deployment zu setzen.
-
Vorschau auf In-Place-Binary-Patching
- Es wird an einem Experiment gearbeitet, um Hot Reloading für Rust-Code hinzuzufügen.
-
Kleine Änderungen
- Enthält verschiedene kleinere Änderungen wie Unterstützung für die System Tray, benutzerdefinierte Event Loops, die Trennung von dioxus-document und dioxus-history sowie eine vereinfachte eval API.
-
Upgrade von 0.5 auf 0.6
- Es gibt einige API-Änderungen, die sich in den meisten Fällen jedoch leicht beheben lassen.
-
Fazit
- Dieses Release behebt viele Probleme und verbessert zahlreiche Funktionen, wodurch Dioxus 0.6 zum bislang ausgereiftesten Release wird.
- Künftig will man sich stärker auf Tutorial-Videos, Dokumentation, Bugfixes, Performance-Verbesserungen und die Zusammenarbeit mit der Community konzentrieren.
3 Kommentare
Ich habe in letzter Zeit Tauri verwendet, aber das sollte ich auch mal ausprobieren.
Dioxus - plattformübergreifende UI-Bibliothek für Rust, inspiriert von React
Dioxus 0.5 - Mit Rust entwickelte Web-, Desktop- und Mobile-Apps
Hacker-News-Kommentare
Ein Nutzer teilte seine Erfahrung mit dem Ausprobieren des neuen Releases: Er erstellte ein Projekt mit
cargo installund führtedx serveaus, stieß dabei jedoch auf Compiler-Fehler. Er meint, mit einem standardmäßigen Rust-Workflow wäre das Debugging einfacher gewesen. Mitvlassen sich ausführliche Logs aktivieren, diese lieferten jedoch keine zusätzlich klaren Informationen.Ein anderer Nutzer erwähnte, dass er alle sechs Monate Rust-GUI-Frameworks ausprobiert, beim Herunterladen von Demos oder Playgrounds jedoch auf Fehler stößt. Er ist der Meinung, dass man langfristige Investitionsentscheidungen sorgfältig treffen sollte.
Es wird erwähnt, dass Dioxus das einzige Webplattform-Tool sei, das Cross-Plattform-Funktionalität mit minimalem Einsatz von JavaScript bieten könne. Die Fortschritte des WGPU-Rendering-Stacks werden positiv bewertet.
Es wird erwähnt, dass Dioxus ein schwaches Ökosystem habe und es an Komponentenbibliotheken fehle. Auch vom Virtual DOM sei man nicht überzeugt. Der Konkurrent Leptos werde beobachtet und genutzt.
Dioxus wird serverseitig eingesetzt, und die Art, Komponenten zu schreiben, sowie die Developer Experience werden als sehr gut bewertet.
Nachdem Lustre entdeckt und übernommen wurde, wolle man außer The Elm Architecture nichts anderes mehr verwenden. Mit Rusts Iced werde derzeit ein Prototyp für einen Szenario-Editor gebaut; da System76 damit Cosmic entwickelt, habe man Vertrauen darin.
Das neue Technologie-Framework wird als das vielversprechendste bewertet; falls es erfolgreich ist, könnte es alle anderen Frameworks ersetzen. Der Fokus liege auf Performance, und Rust liefere die Grundlage für Sicherheit und Performance.
Es wird erwähnt, dass Dioxus Venture Capital erhalten habe, weshalb man vorsichtig sein sollte, bevor man seine Zukunft darauf aufbaut. Es gebe zu wenige Informationen darüber, ob eine Copyright-Abtretung oder ein CLA erforderlich sei und wie viele Mitwirkende bezahlt würden.
Es wird vorgeschlagen, den Kontrast des Post-Titels zu verbessern, damit er besser zum Seitenhintergrund passt. Außerdem wird nach einem Vergleich mit dem aktuellen Stand von Qt, dessen Zugänglichkeit und dem Umgang mit HiDPI-Bildschirmen gefragt. Es wird angemerkt, dass es an hochwertigen Bindings für andere Sprachen als C++ und Python fehle und Qt mit besseren Bindings und Tools populärer sein könnte.
Die neue Hot-Reloading-Funktion wird als erstaunlich bewertet; bei anderen Rust-Web-Frameworks sei das Warten auf UI-Updates ein großes Problem gewesen.