DocsModos de páginas de archivos
CSR (renderizado del lado del cliente)
Definición
CSR entrega la navegación al navegador: después del primer documento, moverse entre páginas ya no solicita HTML al servidor. En Nexy es una decisión de proyecto, no de una página: useCSR = True convierte toda la aplicación en ruta al cliente.
como funciona
from nexy.core.models import NexyConfigModelfrom nexy.frontend import react class NexyConfig(NexyConfigModel): useFF = react() useCSR = TrueEl proyecto entonces cambia de forma:
Modo servidor (False) |
Modo cliente (True) |
|
|---|---|---|
| Rutas | .nexy, .md, .mdx |
.tsx, .jsx, .vue, .svelte |
| El documento | layout.nexy |
la raíz layout.tsx / .vue / .svelte posee <html>, <head>, <body> |
| Componentes del cliente | islas dentro de una página | las páginas mismas |
.nexy bajo src/routes/ |
el formato de página | rechazado antes de nx dev, nx start y nx build |
| Navegación | una solicitud completa por enlace | el enrutador del cliente |
.md y .mdx siguen siendo válidos: Nexy los representa en el servidor dentro del diseño del cliente, y el enrutador del cliente toma el control desde allí. .py controladores se sientan al lado de las rutas y son atendidos por FastAPI.
Ciclo de vida de renderizado
- La solicitud llega al enrutador basado en archivos, que encuentra la ruta coincidente y sus diseños.
- El diseño raíz representa el documento completo en Node; la primera respuesta ya lleva el
<html>real, no un shell vacío. - Nexy inyecta los activos del cliente y una descripción JSON de la página antes de
</body>. - El navegador hidrata ese documento. Los diseños anidados mantienen su estado a partir de ese momento.
- El enrutador del cliente maneja un enlace a otra ruta: no se solicita ningún documento, la página se muestra en el navegador.
En desarrollo, el documento se procesa a pedido por el servidor de desarrollo Vite. En producción, se representa una vez en el momento de la compilación: una ruta estática obtiene su documento, una ruta dinámica obtiene uno por parámetro estático declarado, o un shell (los diseños alrededor de una página vacía) cuando no declara ninguno.
cuando usar
- Paneles, editores, cualquier cosa que se comporte como una aplicación.
- Una Python API con una aplicación cliente encima.
- Una página donde cada interacción sea local y se sienta un ida y vuelta.
Configuración
| Configuración | Valor |
|---|---|
useFF |
requerido: useCSR sin un marco de cliente es rechazado |
useCSR |
True |
useRouter |
debe permanecer apagado: el router modular es rechazado en modo cliente |
Estas comprobaciones ignoran los archivos y carpetas que comienzan con _ o ..
Ejemplo
export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <head><title>My app</title></head> <body>{children}</body> </html> )}export default function Home() { return <h1>Home</h1>}Limitaciones
- Todo el proyecto. No puedes mezclar una página CSR en un proyecto en modo servidor: elige el modo para la aplicación, luego usa islas para las partes interactivas de una página en modo servidor.
- No hay
.nexyrutas. Todo lo que escribas en.nexytiene que convertirse en un componente del marco. - Los datos del servidor pasan por los puntos finales. Una ruta de cliente no puede leer la base de datos en el momento del procesamiento; llama a un controlador
.pyo una Acción. - Una ruta dinámica necesita un parámetro estático declarado, o comienza desde un shell. Exporte
getStaticParams()desde la página (también se aceptan los Next.js nombresgetStaticPathsygenerateStaticParams) para tener un documento por valor. Sin él, el shell lleva los diseños y no la página: la página aparece una vez que se ha ejecutado el navegador. - CSR no es una página en blanco, ni tampoco un SPA. El primer documento lo procesa el servidor; es la navegación que ocurre en el navegador.
Próximos pasos
- Modo servidor y modo cliente: los cheques y los archivos rechazados
- Diseños: a qué archivo pertenece el documento
- SSR: el valor predeterminado, página por página
- Frontend: el servidor de desarrollo y la compilación del cliente