FastUI: Schnellere und bessere Web-UIs mit Python erstellen
(github.com/pydantic)- FastUI ist ein neuer Ansatz, um Benutzeroberflächen für Webanwendungen mit deklarativem Python-Code zu erstellen
- Eine Sammlung von Pydantic-Modellen und TypeScript-Interfaces zur Definition von Benutzeroberflächen
- Python-Entwickler können responsive Web-Apps mit React erstellen, ohne JavaScript oder npm zu verwenden
- Frontend-Entwickler können sich auf den Aufbau wiederverwendbarer Komponenten konzentrieren, ohne jedes Mal Copy-and-paste zu betreiben
- Dadurch wird für alle Beteiligten eine echte Trennung der Zuständigkeiten möglich, bei der das Backend die gesamte Anwendung definiert und das Frontend nur die Benutzeroberfläche implementiert
- Verschiedene Komponenten sind standardmäßig enthalten: tokenbasierte Authentifizierung, GitHub OAuth, Markdown, Text, Paragraph, Heading, Code, Button, Link, Navbar, Modal, ServerLoad, Image, Iframe, Video, Table, Pagination, ModelForm
Praktische Verwendung
- FastUI besteht aus vier Teilen:
fastui-PyPI-Paket: Stellt Pydantic-Modelle und Utilities für UI-Komponenten bereit. Funktioniert gut mit FastAPI, ist aber nicht von FastAPI abhängig und kann auch mit anderen Python-Web-Frameworks verwendet werden.@pydantic/fastui-npm-Paket: Ein React-TypeScript-Paket, mit dem sich eigene Komponenten implementieren lassen, während Mechanismen und Typen von FastUI wiederverwendet werden.@pydantic/fastui-bootstrap-npm-Paket: Implementiert bzw. passt alle FastUI-Komponenten mit Bootstrap an.@pydantic/fastui-prebuilt-npm-Paket: Bietet eine vorgefertigte Version der FastUI-React-App, ohne dass npm-Pakete installiert oder eigene Builds erstellt werden müssen. Das Python-Paket liefert eine einfache HTML-Seite zur Auslieferung dieser App.
Prinzipien (lange Version)
- FastUI ist eine Implementierung RESTfuler Prinzipien, jedoch nicht in der heute üblichen Auslegung, sondern gemäß den in Roy Fieldings Dissertation definierten Prinzipien.
- Nach RESTfulen Prinzipien muss das Frontend nichts über die zu erstellende Anwendung wissen, sondern nur alle Komponenten bereitstellen, die zum Aufbau der Benutzeroberfläche erforderlich sind.
- Diese Art, Anwendungen zu entwickeln, bringt mehrere wichtige Vorteile mit sich:
- Code muss zum Erstellen neuer Funktionen nur an einer Stelle geschrieben werden.
- Die Auslieferung von Frontend und Backend kann vollständig voneinander getrennt werden.
- Ein Open-Source-Komponentenset kann wiederverwendet werden, weil die Komponenten den Kontext ihrer Verwendung nicht kennen müssen.
- Mit Pydantic, TypeScript und JSON-Schema kann sichergestellt werden, dass beide Seiten über ein gemeinsam vereinbartes Schema kommunizieren.
Über Python und React hinaus
- Dieses Prinzip ist nicht auf Python- und React-Anwendungen beschränkt. Es kann in jedem Frontend und Backend eingesetzt werden, das das Schema implementiert und mit demselben vereinbarten Schema und derselben Kodierung kommuniziert.
Meinung von GN⁺
- FastUI hat das Potenzial, den Entwicklungsprozess zu vereinfachen, indem es Backend-Entwicklern eine effiziente Möglichkeit bietet, Anwendungen ohne zusätzliche Frontend-Entwicklung zu erweitern.
- Diese Technologie schafft ein Umfeld, in dem die Rollen zwischen Frontend und Backend klar getrennt sind und die jeweilige Spezialisierung optimal genutzt werden kann.
- Da FastUI derzeit noch ein laufendes Projekt ist, sollten Stabilität und Funktionsumfang vor einem Einsatz in einer echten Produktionsumgebung sorgfältig geprüft werden.
- Bei der Einführung von FastUI sollten die Kompatibilität mit bestehenden Frontend-Workflows, die Wiederverwendbarkeit und Erweiterbarkeit von Komponenten sowie die langfristige Wartbarkeit des Projekts berücksichtigt werden.
- Zu den Vorteilen dieser Technologie gehören kürzere Entwicklungszeiten und ein Backend-zentrierter Entwicklungsablauf; zugleich kann jedoch die Flexibilität im Frontend eingeschränkt sein, und Unterstützung durch die Community sowie verfügbare Materialien könnten noch vergleichsweise begrenzt sein.
1 Kommentare
Hacker-News-Kommentare
Meinung zur Kopplung von Präsentationsschicht und Code
Erfahrungen bei der App-Entwicklung mit FastUI und Streamlit
Meinung zu Django und HTMX
Praxistauglichkeit interner Apps bei serverseitiger Ereignisverarbeitung
Zunahme von Frontend-Frameworks, die einen Backend-Server benötigen
Vergleich der Erfahrungen mit FastUI und NiceGUI
Einfluss der AI-Entwicklung auf Projekt-Use-Cases
Erfahrungen mit Side-Project-Entwicklung unter Verwendung von Dart/Flutter
Vergleich mit Java Server Faces und Grenzen serverseitiger Abstraktion
Frage, ob Roundtrips zum Server für den Aufbau von Benutzeroberflächen geeignet sind