DocsPrimeiros passos
O que é Nexy?
Nexy é uma estrutura Python para aplicações web fullstack: suas páginas e sua API residem em um projeto e são atendidas por um servidor.
O que você ganha
- Páginas em Python. Um arquivo
.nexyé HTML com algumas linhas de Python no topo; um arquivo.mdtambém é uma página. Não é necessário JavaScript para renderizar uma página.
- Uma API no mesmo projeto. Um arquivo
.pyemsrc/routes/responde a solicitações HTTP: uma função chamadaGETrespondeGET, uma função chamadaPOSTrespondePOST.
- Uma API no mesmo projeto. Um controlador responde a solicitações HTTP: seu método
getrespondeGET, seu métodopostrespondePOST, e um módulo agrupa controladores e seus serviços.
- Uma API no mesmo projeto. O roteador FastAPI que você já possui continua respondendo, e as páginas e arquivos de rota de
src/routes/respondem ao lado dele.
- Documentação da API gratuitamente. Cada rota da API aparece em um esquema OpenAPI, e Scalar a mostra como uma referência interativa em
/docs. - Formulários que chamam Python. Um formulário, ou uma chamada digitada no navegador, atinge a mesma função Python.
- Uma estrutura de frontend quando você quiser. React, Vue, Svelte, Solid ou Preact, para um componente ou para todo o site.
- Um comando para funcionar, um para enviar.
nx devrecarrega conforme você salva;nx buildprepara a produção.
Em que é construído
A versão atual, 2.2, baseia-se em ferramentas que você já deve conhecer:
| Parte | Construído em | O que isso significa para você |
|---|---|---|
| Servidor e API | FastAPI | uma rota de API é uma rota FastAPI: Pydantic validação e dependências funcionam normalmente |
| Referência da API | OpenAPI e Escalar | o esquema está em /openapi.json, a referência em /docs |
| Páginas | Jinja2 | uma página .nexy usa tags Jinja2 como {{ title }} |
| Front-end (opcional) | Vite | apenas com um framework frontend, que também precisa de Node.js |
Uma primeira página e um primeiro endpoint
Uma página, em /hello:
title: prop[str] = "Hello"<h1>{{ title }}</h1>Um endpoint, em GET /api/items, listado em /docs sem nenhum código extra:
from nexy.http import Request async def GET(request: Request): return {"items": []}Uma visualização e os controladores que respondem /hello/ e GET /api/items/. O endpoint está listado em /docs sem nenhum código extra, e uma URL sem a última barra redireciona para ele:
title: prop[str] = "Hello"<h1>{{ title }}</h1>from nexy.decorators import Controllerfrom nexy.hooks import useViews @Controller("/hello")class HelloController: async def get(self): return useViews("src/apps/hello_view.nexy", context={"title": "Hello"}) @Controller("/api/items")class ItemsController: async def get(self): return {"items": []}O módulo raiz os lista e useRouter = AppModule em nexyconfig.py monta-o:
from nexy.decorators import Module from .hello_controller import HelloController, ItemsController @Module()class AppModule: controllers = [HelloController, ItemsController]O que Nexy deixa para você
O banco de dados, o login e as regras sobre quem pode fazer o que pertencem à sua aplicação, então você escolhe as bibliotecas. Bancos de dados e Middleware e segurança mostram onde cada um se conecta.
Próximas etapas
- Instalação: instale uv e crie um projeto
- Início rápido: execute, altere uma página, construa-a
- Conceitos básicos: as poucas palavras que o restante dos documentos usa