DocsDiferencias marco
React
Nexy renderiza React 19 componentes en el servidor, luego React los hidrata en el navegador. Las páginas, diseños, islas y acciones son las mismas en todos los marcos: esta página cubre la configuración y luego las partes que difieren de los contratos compartidos.
Con el enrutador modular, los React componentes son islas dentro de las .nexy vistas que devuelve un controlador: no hay ningún archivo de página ni enrutador cliente.
iniciar un proyecto
nx new my-app --template web-fbr-react
nx new my-app --template web-modular-react
La plantilla es un proyecto en modo servidor con React islas. Ejecute nx new my-app sin una plantilla para responder a las indicaciones: el enrutador, el tipo de proyecto, si se utilizará el enrutamiento del lado del cliente y luego el marco.
Habilitar React en un proyecto existente
from nexy.core.models import NexyConfigModelfrom nexy.frontend import react class NexyConfig(NexyConfigModel): useFF = react() useAliases = {"@": "src"}import { defineConfig } from "vite";import react from "@vitejs/plugin-react";import nexy from "./__nexy__/vite"; export default defineConfig({ plugins: [nexy(), react()], customLogger: nexy.log(),});nx new escribe este archivo; Nexy escribe __nexy__/vite.ts por sí mismo, así que no lo edites.
| Paquete | La versión nx new escribe |
|---|---|
react, react-dom |
^19.2.5 |
@vitejs/plugin-react |
^5.2.0 |
@types/react, @types/react-dom |
dependencias de desarrollo |
Reglas
- Un marco por proyecto.
useFFtoma exactamente un marco;useFF = [react(), vue()]detiene el servidor al inicio.
- Las páginas son
.tsx. React posee.tsxy.jsxpara los componentes, pero solo un archivo.tsxbajosrc/routes/se convierte en una página. - Los componentes se encuentran fuera de
src/routes/, generalmente ensrc/components/, por lo que no son páginas. - Un proyecto en modo servidor no tiene
.tsxpágina, y un proyecto en modo cliente no tiene.nexypágina: Nexy se niega a iniciar y nombra el archivo. Ver modos.
- Los componentes viven en
src/components/y una vista los importa como islas.
paginas
En modo cliente (useCSR = True), una página es un archivo .tsx.
Componente de página
Una página es la exportación predeterminada del archivo. Si no existe una exportación predeterminada, Nexy elige la primera exportación nombrada.
export default function Home() { return <h1>Hello</h1>;}Segmentos dinámicos
Los parámetros de URL están disponibles a través del enlace useParams:
import { useParams } from "@nexy/client"; export default function Post() { const { slug } = useParams<{ slug: string }>(); return <h1>{slug}</h1>;}Diseños
Implementación
El diseño raíz define el shell del documento. Los diseños anidados envuelven el contenido debajo de ellos.
import type { ReactNode } from "react"; export default function RootLayout({ children }: { children: ReactNode }) { return ( <html> <body>{children}</body> </html> );}Islas
En modo servidor, un componente React importado a un archivo .nexy es una isla.
Importando
Importe componentes en la portada del archivo .nexy:
from "@/components/Counter.tsx" import Counter<Counter start=3 />from "@/components/Counter.tsx" import Counter<Counter start=3 />Directivas de hidratación
Utilice el accesorio directive para controlar cuándo se hidrata la isla:
client:load(predeterminado): inmediatamenteclient:idle: cuando el navegador está inactivoclient:visible: cuando se desplaza a la vistaclient:media: cuando la consulta de medios coincide
Acciones y navegación
Llamar a acciones
Utilice el gancho useAction para administrar el estado de una llamada a la acción:
import { useAction } from "@nexy/client";import { add_todo } from "@nexy/actions"; const { run, pending, error, data } = useAction(add_todo);// ...<button onClick={() => run({ title: "New Task" })}>Add</button>
Navegación
Utilice el componente Link para transiciones del lado del cliente:
import { Link } from "@nexy/client"; <Link href="/about">About</Link>
Para navegación programática, use el gancho useRouter:
import { useRouter } from "@nexy/client"; const router = useRouter();router.push("/dashboard");
acceso URL
usePathname(): ruta actualuseParams(): segmentos dinámicosuseSearchParams(): cadena de consultauseLocation(): objeto de ubicación completa