首頁 web前端 js教程 偉大的預渲染任務——Arin 尋求定制 SSR 和 SSG 掌握

偉大的預渲染任務——Arin 尋求定制 SSR 和 SSG 掌握

Nov 28, 2024 pm 07:10 PM

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

第 10 集:偉大的預渲染任務 – Arin 尋求自訂 SSR 和 SSG 精通


法典靜態庫閃爍著安靜的期待。這些金庫是知識的沉默守護者,它們的牆壁上排列著資料捲軸和發光的頁面,等待著使用者的召喚。今天,Arin 站在這些金庫的門口,肩負著掌握一項新的重要工藝的任務:創建靜態預渲染頁面,幫助 Codex 比以往更快地為用戶服務。

「阿林」生命週期隊長的聲音在拱形房間裡迴響,吸引了她的注意力。 「今天,您將學習如何利用靜態渲染的力量。這不僅僅是知識的問題,而是在使用者的需求出現之前就準備好 Codex 來滿足使用者的需求。」

這對真正的防守者來說是一個值得挑戰的挑戰,阿林心想,她的眼睛閃爍著堅定的光芒。是時候打造一個系統,讓 Codex 預先渲染其頁面,確保在呼叫時立即回應。


1.製作檔案 – 使用 MDX 建立自訂 SSG

生命週期隊長與阿林並肩走入避難所的深處。用資料照亮的捲軸,揭示了早在使用者需要它們之前就已渲染的腳本和頁面。 「為了準備法典,我們必須學會捕捉知識並將其儲存在這些頁面中,」他說。

Arin 的任務很明確:為 Codex 的部落格建立靜態網站產生 (SSG) 系統,可以隨時調用過去的故事和教訓。

第 1 步:收集工具
第一步是為 Codex 配備讀取和編譯其捲軸的方法 - MDX 檔案。

npm install fs-extra react react-dom react-dom/server @mdx-js/react @mdx-js/mdx
登入後複製
登入後複製

當阿林啟動組件時,房間裡發出輕柔的嗡嗡聲。每個裝置都像一個符文蝕刻在金庫的基礎設施中,為解釋和呈現古代文本做好準備。

第 2 步:寫第一個 MDX 捲軸
Arin 拿起一支鵝毛筆,開始撰寫 Codex 的第一個博客,講述其歷史與互動式 React 組件的故事。

// 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>
登入後複製
登入後複製

每筆劃過,頁​​面都會發光,其內容現在是簡單文字和複雜組件的混合體。

第 3 步:建立渲染捲軸的腳本
Arin 製作了一個咒語——一個腳本——可以讀取捲軸,將它們編譯成 React 元件,並將它們渲染為靜態 HTML。

// 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
登入後複製

她看著靜態庫變得栩栩如生,每個部落格都發出柔和的光芒,因為它轉變為靜態頁面,準備好向用戶提供服務。

阿林的倒影:
「這些靜態頁面不只是迴聲,」她一邊想,一邊看著金庫閃爍著知識的光芒。 「它們是 Codex 準備就緒、即時且堅定不移的服務。」


2.靜態準備的優點和缺點

生命週期隊長的聲音劃破空氣。 「記住,Arin,雖然靜態頁面很強大,但它們也有自己的權衡。」

優點

  • 極快的載入時間:立即提供預先渲染頁面,帶給使用者無縫速度的錯覺。
  • 精通 SEO:完全渲染的 HTML 可確保 Codex 的故事索引良好,並獲得可見性。
  • 開發人員友善:MDX 允許豐富的 React 元件與 Markdown 並存,將簡單性與互動性融為一體。

缺點

  • 重建:必須重建 Codex 的頁面以進行更新,這使得動態內容更難以管理。
  • 初始建置時間:產生大型內容檔案可能需要時間。

「這就像製作一個檔案,Arin,」生命週期隊長說,「隨著新故事的編寫,必須對其進行維護和更新。」


3.漸進式靜態再生 – 自適應守護者

「但是隊長,」Arin 皺起眉頭思考,「如果 Codex 需要刷新它的故事而不重寫所有內容怎麼辦?」

生命週期隊長點點頭。 「這就是增量靜態再生的用武之地。它是一個根據需要更新內容的守護者,保持頁面新鮮,而無需重新製作整個存檔。」

使用 Node-Cron 的計畫 ISR 範例:
為了讓頁面保持最新,Arin 引入了一個會按設定時間間隔運行的守護咒語。

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>
登入後複製
登入後複製

阿林的見解
「有了 ISR,Codex 不只是做出反應,它還會適應,」她想,感到一種準備就緒的感覺。 「使用者將始終發現 Codex 是最新的,並準備好指導他們。」


結論:超越使命

避難所靜靜地矗立著,並因阿林編織的知識而閃閃發光。生命週期隊長將一隻手放在她的肩膀上,眼中流露出自豪。 「你已經學會了預先渲染 Codex 的本質。但請記住,有超出我們能力範圍的工具可以讓這一切變得更加容易。」

阿林點點頭,明白前面的路。 「為了法典,為了用戶,我們準備、適應並始終服務。」


讀者重要提示

此處提供的範例是理解自訂 SSR 和 SSG 的基本方法。對於生產級應用程序,請研究Next.jsRemixAstro 等框架,它們為預先渲染提供最佳化、安全且可擴展的解決方案。

以上是偉大的預渲染任務——Arin 尋求定制 SSR 和 SSG 掌握的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1662
14
CakePHP 教程
1418
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
神秘的JavaScript:它的作用以及為什麼重要 神秘的JavaScript:它的作用以及為什麼重要 Apr 09, 2025 am 12:07 AM

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的演變:當前的趨勢和未來前景 JavaScript的演變:當前的趨勢和未來前景 Apr 10, 2025 am 09:33 AM

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

JavaScript引擎:比較實施 JavaScript引擎:比較實施 Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript:探索網絡語言的多功能性 JavaScript:探索網絡語言的多功能性 Apr 11, 2025 am 12:01 AM

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

如何使用Next.js(前端集成)構建多租戶SaaS應用程序 如何使用Next.js(前端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:22 AM

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

從C/C到JavaScript:所有工作方式 從C/C到JavaScript:所有工作方式 Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

使用Next.js(後端集成)構建多租戶SaaS應用程序 使用Next.js(後端集成)構建多租戶SaaS應用程序 Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles