Maison > interface Web > js tutoriel > Épisode La grande mission de pré-rendu – La quête d'Arin pour la maîtrise personnalisée des SSR et SSG

Épisode La grande mission de pré-rendu – La quête d'Arin pour la maîtrise personnalisée des SSR et SSG

DDD
Libérer: 2024-11-28 19:10:12
original
573 Les gens l'ont consulté

Episode  The Great Pre-Render Mission – Arin’s Quest for Custom SSR and SSG Mastery

Épisode 10 : La grande mission de pré-rendu – La quête d’Arin pour la maîtrise personnalisée des SSR et SSG


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.


1. Créer les archives – Créer des SSG personnalisés avec MDX

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
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

À 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
Copier après la connexion

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.»


2. Les avantages et les inconvénients de la préparation statique

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 :

  • Temps de chargement ultra-rapides : les pages pré-rendues sont servies instantanément, donnant aux utilisateurs l'illusion d'une vitesse fluide.
  • Maîtrise du référencement : le HTML entièrement rendu garantit que les histoires du Codex sont bien indexées et gagnent en visibilité.
  • Convivial pour les développeurs : MDX permet aux composants React riches de vivre côte à côte avec Markdown, alliant simplicité et interactivité.

Inconvénients :

  • Reconstructions : les pages du Codex doivent être reconstruites pour les mises à jour, ce qui rend le contenu dynamique plus difficile à gérer.
  • Durée de construction initiale : la génération de grandes archives de contenu peut prendre du temps.

«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.»


3. Régénération statique incrémentielle – Le gardien adaptatif

« 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
Copier après la connexion
Copier après la connexion
// 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>
Copier après la connexion
Copier après la connexion

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.»


Conclusion : Au-delà de la mission

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.»


Remarque importante pour les lecteurs :

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal