FastUI: crie interfaces web melhores e mais rápidas com Python
(github.com/pydantic)- O FastUI é uma nova forma de construir interfaces de usuário para aplicações web com código Python declarativo
- Um conjunto de modelos Pydantic e interfaces TypeScript que definem a interface de usuário
- Se você é desenvolvedor Python, pode criar webapps reativos com React sem usar JavaScript nem npm
- Desenvolvedores frontend podem se concentrar em criar componentes reutilizáveis sem precisar copiar e colar toda vez
- Para todos os usuários, isso permite uma separação real de responsabilidades, em que o backend define toda a aplicação e o frontend implementa apenas a interface de usuário
- Fornece diversos componentes prontos: autenticação baseada em token, GitHub OAuth, Markdown, Text, Paragraph, Heading, Code, Button, Link, Navbar, Modal, ServerLoad, Image, Iframe, Video, Table, Pagination, ModelForm
Como usar na prática
- O FastUI é composto por quatro partes:
- Pacote PyPI
fastui: fornece modelos Pydantic e utilitários para componentes de UI. Funciona muito bem com FastAPI, mas não depende de FastAPI e também pode ser usado com outros frameworks web em Python. - Pacote npm
@pydantic/fastui: um pacote React TypeScript que permite reutilizar a infraestrutura e os tipos do FastUI ao implementar seus próprios componentes. - Pacote npm
@pydantic/fastui-bootstrap: implementa/personaliza todos os componentes do FastUI usando Bootstrap. - Pacote npm
@pydantic/fastui-prebuilt: fornece uma versão pré-compilada do app React do FastUI sem necessidade de instalar pacotes npm nem compilar nada manualmente. O pacote Python fornece uma página HTML simples para servir esse app.
- Pacote PyPI
Princípios (versão longa)
- O FastUI é uma implementação dos princípios RESTful, mas não no sentido em que costumam ser entendidos, e sim conforme definidos na tese de doutorado de Roy Fielding.
- De acordo com os princípios RESTful, o frontend não precisa conhecer a aplicação que está sendo construída; ele só precisa fornecer todos os componentes necessários para compor a interface.
- Construir aplicações dessa forma traz várias vantagens importantes:
- É preciso escrever código em apenas um lugar para criar novas funcionalidades.
- É possível separar completamente o deploy do frontend e do backend.
- É possível reutilizar um conjunto de componentes open source, já que eles não precisam conhecer o contexto em que serão usados.
- É possível garantir, com Pydantic, TypeScript e JSON Schema, que ambos os lados estejam se comunicando com um esquema acordado.
Além de Python e React
- Esse princípio não se limita a aplicações em Python e React; ele pode ser usado em qualquer frontend e backend que implementem o esquema, desde que se comuniquem usando o mesmo esquema e a mesma codificação acordados.
Opinião do GN⁺
- O FastUI tem potencial para simplificar o processo de desenvolvimento ao oferecer uma forma eficiente de desenvolvedores backend expandirem aplicações sem depender de desenvolvimento frontend.
- Essa tecnologia deixa mais clara a divisão de papéis entre frontend e backend, criando um ambiente em que a especialidade de cada lado pode ser melhor aproveitada.
- Como o FastUI ainda é um projeto em andamento, é preciso avaliar cuidadosamente sua estabilidade e funcionalidade antes de usá-lo em um ambiente real de produção.
- Ao adotar o FastUI, é importante considerar a compatibilidade com o fluxo de desenvolvimento frontend existente, a reutilização e a escalabilidade dos componentes, além da manutenção de longo prazo do projeto.
- Os benefícios dessa escolha podem incluir menor tempo de desenvolvimento e um fluxo centrado no backend, mas em contrapartida a flexibilidade do frontend pode ficar limitada, e o suporte da comunidade e a disponibilidade de materiais ainda podem ser relativamente escassos.
1 comentários
Opiniões do Hacker News
Opinião sobre o acoplamento entre a camada de apresentação e o código
Experiência de desenvolvimento de apps com FastUI e Streamlit
Opinião sobre Django e HTMX
Utilidade prática de apps internos para lidar com eventos no lado do servidor
Aumento de frameworks de frontend que exigem um servidor backend
Comparação entre as experiências com FastUI e NiceGUI
Impacto do avanço da IA nos casos de uso desses projetos
Experiência de desenvolvimento de side projects com Dart/Flutter
Comparação com Java Server Faces e limites da abstração no lado do servidor
Questionamento sobre se o round trip com o servidor é adequado para construir interfaces de usuário