Ce tutoriel utilise le routage par fichiers de PRISM : chaque dossier sous src/app/ devient une URL, avec layouts imbriqués et loaders côté serveur.
Voir la doc du routage →Les composants viennent de bext/ui — un portage fidèle de shadcn/ui pour bext et PRISM, stylé via les tokens de route_css.
Explorer bext/ui →Chargez les données dans un loader et affichez-les sous forme de tableau — entièrement côté serveur, sans fetch côté client.
Passons aux données. Un loader s'exécute côté serveur avant le rendu de la page ; ce qu'il retourne arrive comme prop data de la page. Comme il s'exécute côté serveur, vous pouvez lire une base de données, appeler une API, ou — ici — simplement trier un tableau.
export async function loader() {
const products = [...CATALOGUE].sort((a, b) => a.name.localeCompare(b.name));
return { products };
}
export default function Products({ data }) {
return (
<table>
{data.products.map((p) => (
<tr key={p.id}><td>{p.name}</td><td>${p.price}</td></tr>
))}
</table>
);
}Il n'y a pas de fetch côté client et aucun spinner de chargement — le HTML arrive complet, avec les lignes déjà présentes. Le tableau complet (avec SKU et un badge de stock) est rendu en direct dans l'aperçu.
request ; voir données & loaders.