Les Coffres statiques du Codex brillaient d'une attente tranquille. Ces coffres-forts étaient les gardiens silencieux du savoir, leurs murs étaient tapissés de rouleaux de données et de pages lumineuses qui attendaient l'invocation des utilisateurs. Aujourd'hui, Arin se tenait au seuil de ces coffres-forts, chargé de maîtriser un métier nouveau et essentiel : créer des pages statiques pré-rendues qui aideraient le Codex à servir ses utilisateurs plus rapidement que jamais.
« Arin », La voix du capitaine Lifecycle résonnait dans la chambre voûtée, attirant sa concentration. « Aujourd’hui, vous apprendrez à exploiter la puissance du rendu statique. Il ne s’agit pas seulement de connaissances, il s’agit de préparer le Codex à répondre aux besoins des utilisateurs avant même qu’ils ne surviennent. »
Un défi digne d'un vrai défenseur, pensa Arin, la détermination éclairant ses yeux. Il était temps de créer un système qui permettrait au Codex de pré-afficher ses pages, garantissant une réponse instantanée en cas de demande.
Capitaine Lifecycle marchait aux côtés d'Arin alors qu'elle s'enfonçait plus profondément dans les coffres-forts. Des parchemins illuminés de données, révélant des scripts et des pages rendus bien avant qu'un utilisateur n'en ait besoin. «Pour préparer le Codex, nous devons apprendre à capturer les connaissances et à les stocker dans ces pages», a-t-il déclaré.
La tâche d'Arin était claire : créer un système de génération de site statique (SSG) pour le blog du Codex, où les histoires et les leçons du passé pourraient être invoquées à tout moment.
Étape 1 : Rassembler les outils
La première étape consistait à doter le Codex des moyens de lire et de compiler ses parchemins : les fichiers MDX.
npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx
La chambre bourdonnait doucement tandis qu'Arin activait les composants. Chaque installation était comme une rune gravée dans l’infrastructure du coffre-fort, la préparant à interpréter et à restituer les textes anciens.
Étape 2 : écriture du premier parchemin MDX
Arin a pris une plume et a commencé à rédiger le premier blog du Codex, un récit de son histoire tissé avec des composants React interactifs.
// blogs/hello-world.mdx # Hello, World! Welcome to Codex’s first blog post. This content is rendered from an MDX file, combining the simplicity of Markdown with the power of React components. <SpecialNote>This is a special React component embedded within MDX!</SpecialNote>
À chaque trait, la page brillait, son contenu étant désormais un mélange de texte simple et de composants complexes.
Étape 3 : Création du script pour restituer les parchemins
Arin a créé un sort (un script) qui lirait les parchemins, les compilerait dans des composants React et les restituerait au format HTML statique.
// generateStaticBlogs.js const fs = require('fs-extra'); const path = require('path'); const React = require('react'); const ReactDOMServer = require('react-dom/server'); const { MDXProvider } = require('@mdx-js/react'); const mdx = require('@mdx-js/mdx'); const outputPath = './static-blogs'; const blogPath = './blogs'; (async () => { try { // Ensure the output directory exists await fs.ensureDir(outputPath); const blogFiles = await fs.readdir(blogPath); for (const file of blogFiles) { if (path.extname(file) === '.mdx') { const filePath = path.join(blogPath, file); const content = await fs.readFile(filePath, 'utf8'); const compiledMdx = await mdx(content); const Component = new Function('React', compiledMdx)(React); // Render the component to a static HTML string const renderedBlog = ReactDOMServer.renderToString( <MDXProvider> <Component /> </MDXProvider> ); const htmlTemplate = ` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>${path.basename(file, '.mdx')}</title> </head> <body> <div> <p><strong>Step 4: Running the Spell</strong><br> Arin murmured the incantation to invoke the script.<br> </p> <pre class="brush:php;toolbar:false">node generateStaticBlogs.js
Elle a regardé les coffres-forts statiques prendre vie, chaque blog brillant doucement alors qu'il se transformait en une page statique prête à être servie aux utilisateurs.
Réflexion d'Arin :
« Ces pages statiques sont plus que de simples échos », pensa-t-elle en regardant les coffres scintiller de connaissances. «Ils sont la volonté du Codex de servir, instantanée et inébranlable.»
La voix de Captain Lifecycle traverse l'air. "N'oubliez pas, Arin, même si les pages statiques sont puissantes, elles comportent leurs propres compromis."
Avantages :
Inconvénients :
«C'est comme créer une archive, Arin», a déclaré Captain Lifecycle, «une archive qui doit être entretenue et mise à jour à mesure que de nouvelles histoires sont écrites.»
« Mais Capitaine », Les sourcils d'Arin se froncèrent en pensant, « Et si le Codex avait besoin de rafraîchir ses histoires sans tout réécrire ? »
Capitaine Lifecycle hocha la tête. «C'est là qu'intervient la régénération statique incrémentielle. C'est un gardien qui met à jour le contenu selon les besoins, gardant les pages à jour sans refaire l'intégralité de l'archive.»
Exemple d'ISR planifié avec Node-Cron :
Pour maintenir les pages à jour, Arin a introduit un sort de gardien qui s'exécuterait à intervalles définis.
npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx
// blogs/hello-world.mdx # Hello, World! Welcome to Codex’s first blog post. This content is rendered from an MDX file, combining the simplicity of Markdown with the power of React components. <SpecialNote>This is a special React component embedded within MDX!</SpecialNote>
La perspicacité d'Arin :
« Avec l'ISR, le Codex ne se contente pas de réagir, il s'adapte », pensa-t-elle, se sentant prête. «Les utilisateurs trouveront toujours le Codex à jour, prêt à les guider.»
Les Voûtes étaient sereines et rayonnantes de la connaissance qu'Arin y avait tissée. Le Capitaine Lifecycle posa une main sur son épaule, la fierté évidente dans ses yeux. « Vous avez appris à pré-restituer l’essence du Codex. Mais n’oubliez pas qu’il existe des outils au-delà de notre domaine qui rendent cela encore plus facile. »
Arin hocha la tête, comprenant le chemin à parcourir. «Pour le Codex, pour les utilisateurs, nous préparons, adaptons et servons toujours.»
Les exemples fournis ici sont des approches fondamentales pour comprendre le SSR et le SSG personnalisés. Pour les applications de niveau production, consultez des frameworks tels que Next.js, Remix et Astro qui offrent des solutions optimisées, sécurisées et évolutives pour le pré-rendu.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!