DocsPrimeros pasos
¿Qué es Nexi?
Nexy es un marco Python para aplicaciones web fullstack: sus páginas y su API viven en un proyecto y son atendidas por un servidor.
lo que obtienes
- Páginas en Python. Un archivo
.nexyes HTML con unas pocas líneas de Python en la parte superior; un archivo.mdtambién es una página. No se necesita JavaScript para representar una página.
- Una API en el mismo proyecto. Un archivo
.pybajosrc/routes/responde solicitudes HTTP: una función llamadaGETrespondeGET, una función llamadaPOSTrespondePOST.
- Una API en el mismo proyecto. Un controlador responde solicitudes HTTP: su método
getrespondeGET, su métodopostrespondePOSTy un módulo agrupa controladores y sus servicios.
- Una API en el mismo proyecto. El enrutador FastAPI que ya tienes sigue respondiendo, y las páginas y archivos de ruta de
src/routes/responden junto a él.
- Documentación API gratuita. Cada ruta API aparece en un esquema OpenAPI y Scalar la muestra como una referencia interactiva en
/docs. - Formularios que llaman a Python. Un formulario, o una llamada escrita desde el navegador, llega a la misma función Python.
- Un framework frontend cuando lo desees. React, Vue, Svelte, Solid o Preact, para un componente o para todo el sitio.
- Un comando para trabajar, otro para enviar.
nx devse recarga a medida que guardas;nx buildprepara la producción.
Sobre qué está construido
La versión actual, 2.2, incluye herramientas que quizás ya conozcas:
| parte | Construido sobre | Lo que significa para ti |
|---|---|---|
| Servidor y API | FastAPI | una ruta API es una ruta FastAPI: la validación Pydantic y las dependencias funcionan como de costumbre |
| Referencia API | OpenAPI y Escalar | el esquema está en /openapi.json, la referencia en /docs |
| paginas | Jinja2 | una página .nexy utiliza etiquetas Jinja2 como {{ title }} |
| Interfaz (opcional) | Vite | sólo con un marco de interfaz, que también necesita Node.js |
Una primera página y un primer punto final
Una página, en /hello:
title: prop[str] = "Hello"<h1>{{ title }}</h1>Un punto final, en GET /api/items, listado en /docs sin ningún código adicional:
from nexy.http import Request async def GET(request: Request): return {"items": []}Una vista y los controladores que responden /hello/ y GET /api/items/. El punto final aparece en /docs sin ningún código adicional, y una URL sin su última barra lo redirecciona:
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": []}El módulo raíz los enumera y useRouter = AppModule en nexyconfig.py lo monta:
from nexy.decorators import Module from .hello_controller import HelloController, ItemsController @Module()class AppModule: controllers = [HelloController, ItemsController]Lo que te deja Nexy
La base de datos, el inicio de sesión y las reglas sobre quién puede hacer qué pertenecen a tu aplicación, para que tú elijas las bibliotecas. Bases de datos y Middleware y seguridad muestran dónde se conecta cada una.
Próximos pasos
- Instalación: instala uv y crea un proyecto
- Inicio rápido: ejecútelo, cambie una página, constrúyala
- Conceptos básicos: las pocas palabras que usa el resto de los documentos