FastUI : créer des interfaces web plus rapidement et plus efficacement avec Python
(github.com/pydantic)- FastUI propose une nouvelle manière de construire des interfaces utilisateur d’applications web avec du code Python déclaratif
- Un ensemble de modèles Pydantic et d’interfaces TypeScript qui définissent l’interface utilisateur
- Les développeurs Python peuvent créer des web apps réactives avec React sans utiliser JavaScript ni npm
- Les développeurs front-end peuvent se concentrer sur la création de composants réutilisables sans devoir faire du copier-coller à répétition
- Cela permet une véritable séparation des responsabilités : le backend définit toute l’application, tandis que le front-end implémente uniquement l’interface utilisateur pour tous les utilisateurs
- Nombreux composants fournis par défaut : authentification par jeton, GitHub OAuth, Markdown, Text, Paragraph, Heading, Code, Button, Link, Navbar, Modal, ServerLoad, Image, Iframe, Video, Table, Pagination, ModelForm
Utilisation concrète
- FastUI se compose de quatre éléments :
- package PyPI
fastui: fournit des modèles Pydantic et des utilitaires pour les composants UI. Il fonctionne très bien avec FastAPI, mais n’en dépend pas et peut aussi être utilisé avec d’autres frameworks web Python. - package npm
@pydantic/fastui: package React TypeScript qui permet d’implémenter ses propres composants tout en réutilisant la mécanique et les types de FastUI. - package npm
@pydantic/fastui-bootstrap: implémente/personnalise tous les composants FastUI à l’aide de Bootstrap. - package npm
@pydantic/fastui-prebuilt: fournit une version précompilée d’une application React FastUI, sans qu’il soit nécessaire d’installer des packages npm ni de construire quoi que ce soit soi-même. Le package Python fournit une simple page HTML qui sert cette application.
- package PyPI
Principes (version longue)
- FastUI est une implémentation des principes RESTful, mais pas au sens habituellement compris : il suit les principes définis dans la thèse de doctorat de Roy Fielding.
- Selon les principes RESTful, le front-end n’a pas besoin de connaître l’application qu’il construit ; il doit seulement fournir tous les composants nécessaires à la composition de l’interface.
- Construire une application de cette façon présente plusieurs avantages importants :
- il suffit d’écrire le code à un seul endroit pour créer de nouvelles fonctionnalités ;
- il est possible de séparer complètement le déploiement du front-end et du backend ;
- il est possible de réutiliser un ensemble de composants open source, car ceux-ci n’ont pas besoin de connaître le contexte dans lequel ils seront utilisés ;
- Pydantic, TypeScript et JSON Schema permettent de garantir que les deux côtés communiquent via un schéma convenu.
Au-delà de Python et React
- Ce principe ne se limite pas aux applications Python et React : il peut être utilisé avec n’importe quel front-end et backend qui implémentent le schéma, à condition qu’ils communiquent en utilisant le même schéma convenu et le même encodage.
Avis de GN⁺
- FastUI a le potentiel de simplifier le processus de développement en offrant aux développeurs backend un moyen efficace d’étendre une application sans développement front-end supplémentaire.
- Cette technologie clarifie la répartition des rôles entre front-end et backend, créant un environnement où l’expertise de chacun peut être exploitée au maximum.
- FastUI est encore un projet en cours de développement ; sa stabilité et ses fonctionnalités doivent donc être examinées avec soin avant toute utilisation en production.
- Lors de l’adoption de FastUI, il faut prendre en compte la compatibilité avec les workflows front-end existants, la réutilisabilité et l’extensibilité des composants, ainsi que la maintenance à long terme du projet.
- Les bénéfices potentiels de ce choix sont une réduction du temps de développement et un workflow centré sur le backend, mais en contrepartie la flexibilité du front-end peut être plus limitée, et le support communautaire ainsi que la documentation peuvent être relativement plus faibles.
1 commentaires
Avis sur Hacker News
Avis sur le couplage entre la couche de présentation et le code
Expérience de développement d’applications avec FastUI et Streamlit
Avis sur Django et HTMX
Utilité des applications internes pour le traitement des événements côté serveur
Multiplication des frameworks frontend nécessitant un serveur backend
Comparaison des expériences entre FastUI et NiceGUI
Impact des progrès de l’IA sur les cas d’usage de ce type de projet
Expérience de développement de side projects avec Dart/Flutter
Comparaison avec Java Server Faces et limites des abstractions côté serveur
Question sur la pertinence des allers-retours avec le serveur pour construire une interface utilisateur