Intégration
Flow ajoute des fragments progressifs au rendu HTML de Core, sans imposer de routeur.
Fonctionnement#
La structure initiale contient le contenu immédiat et les emplacements différés. Les fragments arrivent ensuite dans la représentation de l’adaptateur choisi.
import { Slot, Defer, renderToStream } from "@vincle/flow";import { NativeAdapter } from "@vincle/flow/adapters";
declare function fetchComments(): Promise<{ text: string }[]>;
async function Comments() { const items = await fetchComments(); return ( <ul> {items.map((c) => ( <li>{c.text}</li> ))} </ul> );}
// <Slot> declares the placeholder with fallback content in the shell.// <Defer> pushes the real content, which replaces it when resolved.function Page() { return ( <html> <body> <h1>My page</h1> <Slot name="comments"> <p>Loading comments…</p> </Slot> <Defer target="comments">{() => <Comments />}</Defer> </body> </html> );}
// The shell is sent immediately; deferred fragments stream// in as they resolve. NativeAdapter injects a small polyfill.const stream = renderToStream(() => <Page />, NativeAdapter);Deux modes de rendu#
Le streaming envoie les résultats durant la réponse. La génération statique écrit la page et les fragments dans des fichiers accessibles séparément.
Installation#
Installez @vincle/flow avec Core en utilisant Bun, pnpm ou npm. Flow demande Core 0.9.1 ou une version compatible plus récente.
npm install @vincle/flowpnpm add @vincle/flowbun add @vincle/flowAdaptateurs#
Choisissez un adaptateur selon votre client : polyfill natif, Turbo, HTMX, plateforme Web expérimentale ou ESI.