「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > エピソード グレート プリレンダー ミッション – アリンのカスタム SSR と SSG マスタリーの探求

エピソード グレート プリレンダー ミッション – アリンのカスタム SSR と SSG マスタリーの探求

2024 年 11 月 22 日に公開
ブラウズ:505

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

エピソード 10: グレート プリレンダー ミッション – アリンのカスタム SSR と SSG マスタリーの探求


コーデックスの静的保管庫は、静かな期待で輝いていました。これらの保管庫は知識の沈黙の守護者であり、その壁にはユーザーの召喚を待つデータの巻物と輝くページが並んでいた。今日、アリンはこれらの保管庫の入り口に立ち、新しく重要な技術を習得するという任務を負っていました。それは、Codex がこれまでよりも早くユーザーにサービスを提供できるようにする静的な事前レンダリングされたページを作成することです。

「アリン」 ライフサイクル船長の声がアーチ型の部屋に響き渡り、彼女の注目を集めた。 「今日は、静的レンダリングの力を活用する方法を学びます。これは単なる知識の問題ではありません。ユーザーのニーズが発生する前に、それに応えるよう Codex を準備することが重要です。」

これは真のディフェンダーにふさわしい挑戦だとアリンは思い、決意が目を輝かせた。 Codex がページを事前レンダリングして、呼び出されたときに即座に応答できるようにするシステムを作成する時期が来ました。


1.アーカイブの作成 – MDX を使用したカスタム SSG の構築

キャプテン・ライフサイクルは、アリンがVaultsの奥深くに移動するときに一緒に歩きました。スクロールはデータで照らされ、ユーザーが必要とするずっと前にレンダリングされたスクリプトとページを明らかにします。 「コーデックスを準備するには、知識を取得してこれらのページに保存する方法を学ばなければなりません。」と彼は言いました。

Arin のタスクは明確でした。Codex のブログ用に静的サイト生成 (SSG) システムを構築し、過去のストーリーや教訓を瞬時に呼び出せるようにすることです。

ステップ 1: ツールを集める 最初のステップは、Codex に巻物 (MDX ファイル) を読み取ってコンパイルする手段を装備することでした。

npm install fs-extra 反応反応-dom 反応-dom/サーバー @mdx-js/反応 @mdx-js/mdx
npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx
アリンがコンポーネントを作動させると、チャンバーが静かに鳴り響いた。それぞれのインスタレーションは、保管庫のインフラストラクチャーに刻まれたルーンのようなもので、古代の文書を解釈してレンダリングする準備を整えていました。

ステップ 2: 最初の MDX スクロールを作成する アリンは羽ペンを手に取り、インタラクティブな React コンポーネントで織り込まれた Codex の歴史の物語である Codex の最初のブログを作成し始めました。

// ブログ/hello-world.mdx # こんにちは世界! Codex の最初のブログ投稿へようこそ。このコンテンツは MDX ファイルからレンダリングされ、Markdown のシンプルさと React コンポーネントの機能を組み合わせています。 これは MDX 内に埋め込まれた特別な React コンポーネントです!
npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx
ストロークごとにページが輝き、そのコンテンツは単純なテキストと複雑なコンポーネントが混ざり合ったものになりました。

ステップ 3: スクロールをレンダリングするスクリプトの作成 アリンは、巻物を読み取って React コンポーネントにコンパイルし、静的 HTML としてレンダリングする呪文、つまりスクリプトを作成しました。

//generateStaticBlogs.js const fs = require('fs-extra'); const パス = require('パス'); 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 () => { 試す { // 出力ディレクトリが存在することを確認します await fs.ensureDir(outputPath); const blogFiles = await fs.readdir(blogPath); for (blogFiles の const ファイル) { if (path.extname(file) === '.mdx') { const filePath = path.join(blogPath, file); const content = await fs.readFile(filePath, 'utf8'); constコンパイル済みMdx = await mdx(コンテンツ); const コンポーネント = new Function('React', コンパイルされた Mdx)(React); // コンポーネントを静的な HTML 文字列にレンダリングします。 const renderedBlog = ReactDOMServer.renderToString( プロバイダ> ); const htmlTemplate = ` ${path.basename(file, '.mdx')}

ステップ 4: 呪文を実行する アリンはスクリプトを呼び出す呪文をつぶやいた。

ノードgenerateStaticBlogs.js
npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx
彼女は、静的ボールトが誕生し、各ブログが柔らかく輝き、ユーザーに提供する準備が整った静的ページに変化するのを眺めました。

アリンの反省:
「これらの静的なページは、単なるエコーではありません。」 知識できらめく保管庫を眺めながら、彼女はそう思いました。 「コーデックスは即座に、そして揺るぎなく提供する準備が整っています。」


2.静電気への備えの長所と短所

キャプテン・ライフサイクルの声が空気を切り裂いた。「覚えておいてください、アリン、静的ページは強力ですが、それぞれのトレードオフがあります。」

長所:

  • 非常に速い読み込み時間: 事前にレンダリングされたページが即座に提供され、ユーザーにシームレスな速度の錯覚を与えます。
  • SEO マスタリー: 完全にレンダリングされた HTML により、Codex のストーリーが適切にインデックス付けされ、可視性が高まります。
  • 開発者に優しい: MDX を使用すると、豊富な React コンポーネントが Markdown と並行して動作し、シンプルさとインタラクティブ性が融合します。

短所:

  • 再構築: Codex のページは更新のために再構築する必要があるため、動的コンテンツの管理が難しくなります。
  • 初期ビルド時間: コンテンツの大規模なアーカイブの生成には時間がかかる場合があります。

「アーカイブを作成するようなものです、アリン」 ライフサイクル キャプテンは言いました。「新しいストーリーが書かれるたびに管理し、更新する必要があります。」


3.増分静的再生 – アダプティブキーパー

「でも、キャプテン」 アリンは考えながら眉間にしわを寄せた、「コーデックスがすべてを書き直さずにストーリーを更新する必要がある場合はどうなるでしょうか?」

キャプテン・ライフサイクルはうなずいた。

「そこで、静的増分再生が登場します。これは、必要に応じてコンテンツを更新し、アーカイブ全体を作り直すことなくページを最新の状態に保つキーパーです。」

Node-Cron を使用したスケジュールされた ISR の例: ページを最新の状態に保つために、アリンは設定された間隔で実行されるガーディアン スペルを導入しました。

npm インストール ノード cron
npm install node-cron
const cron = require('node-cron'); cron.schedule('0 * * * *', () => { console.log('静的ページを再生成中...'); require('./generateStaticBlogs'); }); console.log('スケジュールされた ISR は 1 時間ごとに実行されます。');
npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx

アリンの洞察:
「ISR を使用すると、Codex はただ反応するだけではなく、適応します。」 彼女は準備ができていると感じながら思いました。 「ユーザーは Codex が常に最新であり、ガイドが用意されていることがわかります。」


結論: ミッションを超えて

Vaults は静かに佇み、アリンが織り込んだ知識で輝いていました。ライフサイクル船長は彼女の肩に手を置き、その目には誇りが見えました。

「Codex の本質をプリレンダリングする方法を学びました。ただし、これをさらに簡単にする私たちの領域を超えたツールがあることを忘れないでください。」

アリンはうなずき、今後の道を理解した。

「コーデックスのために、ユーザーのために、私たちは準備し、適応し、常にサービスを提供します。」


読者への重要なお知らせ:

ここで提供される例は、カスタム SSR と SSG を理解するための基本的なアプローチです。実稼働レベルのアプリケーションの場合は、プリレンダリング用に最適化され、安全でスケーラブルなソリューションを提供する

Next.jsRemixAstro などのフレームワークを検討してください。

リリースステートメント この記事は、https://dev.to/vigneshiyergithub/episode-10-the-great-pre render-mission-arins-cuest-for-custom-ssr-and-ssg-mastery-3p23?1で転載されています。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3