- Bei der Webentwicklung mit Rust gibt es kein Framework wie Django, sodass man vieles selbst erledigen muss
- Um Rusts Stärken wie Typsystem, Performance und Build-Zeiten zu nutzen, braucht es ein Framework, das die Webentwicklung einfacher macht
Benötigte Funktionen
- Routing/Handler: Es wird eine Funktion benötigt, die Anfragen an den zuständigen Handler weiterleitet
- Templates: Es sollte möglich sein, Inhalte wie HTML und JSON zu erzeugen
- Bereitstellung statischer Dateien: Es wird eine Funktion benötigt, um Assets wie CSS-Dateien auszuliefern
- Login: Für Multi-User-Apps wird eine Login-Funktion benötigt
- Rechtemanagement: Zugriffsrechte sollten pro Benutzer verwaltet werden können
- Datenbank-Interface: Es wird eine Funktion benötigt, um Daten zu speichern und zu verwalten
- Admin-Tools: Es werden Werkzeuge benötigt, die grundlegende Verwaltungsaufgaben unterstützen
- WebSockets: Für die Echtzeit-Datenübertragung wird WebSocket-Funktionalität benötigt
- Hot Reloading: Änderungen am Code sollten sofort übernommen werden
Zusätzlich benötigte Funktionen
- Hintergrundaufgaben: Es wird eine Funktion benötigt, um Aufgaben nach Zeitplan auszuführen
- Monitoring/Observability: Der Systemzustand sollte überwacht werden können
- Caching: Es wird Caching zur Verbesserung der Performance benötigt
- E-Mail und Benachrichtigungen: Es werden Benachrichtigungsfunktionen benötigt, um Dinge wie Passwort-Resets zu unterstützen
- Deployment-Tools: Es wird eine konsistente Methode für Deployments benötigt
- CSS/JS-Bundling: Es werden Funktionen benötigt, um CSS- und JS-Dateien effizient zu verwalten
Bestehendes Ökosystem
- Web-Frameworks: Es gibt Frameworks wie actix-web und axum, die nur minimale Funktionen bereitstellen
- Bibliothekssammlung: Es gibt verschiedene Bibliotheken für Templates, Login, Rechtemanagement usw., aber es fehlt an einer integrierten Lösung
Neues Web-Toolkit
- nicole's web toolkit (newt): Ein Web-Toolkit, das verschiedene Funktionen integriert, befindet sich in Entwicklung
- Ziel: Es soll dabei helfen, neue Web-Apps schnell zu starten
- Plan: Es soll eine integrierte Lösung auf Basis bestehender Building Blocks bereitgestellt werden
Zusammenfassung von GN⁺
- Es wird die Notwendigkeit eines integrierten Web-Frameworks betont, das die Webentwicklung mit Rust erleichtert
- Es wird ein Versuch vorgestellt, die Grenzen bestehender Web-Frameworks und Bibliotheken zu überwinden
- Mit nicole's web toolkit (newt) sollen verschiedene Funktionen integriert werden, um die Developer Experience zu verbessern
- Der Versuch, die Vorteile eines Frameworks wie Django in das Rust-Ökosystem zu bringen, ist bemerkenswert
- Andere Projekte mit ähnlicher Funktionalität sind unter anderem actix-web und axum
1 Kommentare
Hacker-News-Kommentare
Eine Meinung von jemandem, der gern mit minimalem Aufwand interessante Dinge mit Rust baut. Rust bietet hohe Effizienz und gutes Speichermanagement, aber für Webentwicklung seien Go oder Django besser geeignet.
Rust bietet Sicherheit und hilft Entwicklern, Fehler zu vermeiden; außerdem hat es den Vorteil, dass man Code auch mit einfachen Werkzeugen wie Notepad schreiben kann.
Als Web-Framework sei Rocket das beste Framework für „faule Entwickler“.
Mit Rusts Pattern Matching brauche man keinen Router, und Authentifizierung sei kein Problem der Sprache oder des Frameworks.
CSS/JS-Tools seien für Rust-Frontend-Frameworks nicht geeignet, und Rust sei auch im Frontend-Webbereich bereits ausreichend ausgereift.
Es habe überrascht, dass das Rocket-Framework nicht erwähnt wurde; Rocket verfolge das Ziel eines Frameworks mit „Batterien inklusive“.
Webentwicklung mit Rust sei grundsätzlich in Ordnung, aber es gebe Probleme bei der Nebenläufigkeit, und die Auswahl einer Komponentenbibliothek sei schwierig.
Zur Verbesserung der UX werde Flutter eingesetzt, und die Integration mit Rust sei einfach, was als zufriedenstellend empfunden werde.
Flutter respektiere das DOM nicht, sei aber attraktiv, weil sich damit leicht eine UX erstellen lasse, die überall bereitgestellt werden kann.
Poem sei FastAPI ähnlich, erfordere aber viel Boilerplate bei der Ersteinrichtung.
Der Ausdruck „faul“ werde im Sinne der Erwartung verwendet, dass ein Web-Framework allgemeine Aufgaben übernimmt; tatsächlich sei aber viel Arbeit nötig.
Projekte wie loco-rs, poem und rocket böten bereits eine Erfahrung mit „Batterien inklusive“, und die CLI leite dabei an.
F# bietet ein Rust ähnliches Typsystem und Tooling, aber asynchrone Verarbeitung und Speichermanagement seien weniger komplex.
Der Autor wünsche sich für Rust ein Framework wie Spring Boot.