国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是 CSR、SSR、SSG、ISR - 渲染模式詳解

這篇具有很好參考價值的文章主要介紹了什么是 CSR、SSR、SSG、ISR - 渲染模式詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文以 React、Vue 為例,介紹下主流的渲染模式以及在主流框架中如何實現(xiàn)上述的渲染模式。

前置知識介紹

看渲染模式之前我們先看下幾個主流框架所提供的相關(guān)能力,了解的可跳到下個章節(jié)。

掛載組件到 DOM 節(jié)點

這是主流框架最基本的能力,就是將組件渲染到指定的 DOM 節(jié)點上。在 React 中所使用的 APIrender,在 Vue 中所使用的是 createApp 后的 mount

水合

水合用來將組件渲染到已有的靜態(tài)內(nèi)容上,用于為靜態(tài)頁面恢復(fù)其交互和動態(tài)能力。在 React 中所使用的 APIhydrateReact 18 前的版本) 和 createHydrateReact 18),在 Vue 中所使用的是 createSSRApp 后的 mount。

Vue 中的 API 語義稍顯奇怪,因為使用 createSSRApp 的場景并不一定是 SSR。

輸出渲染內(nèi)容

主流框架除了可以將組件渲染到 DOM 節(jié)點上以外,還能將其要渲染的內(nèi)容直接輸出為如 HTML 字符串等形式。輸出為字符串的 APIReactVue 中所使用的 API 都叫做 renderToString。

React 中還推出了很多其它的 API:如 renderToStaticMarkup、 renderToStaticNodeStream 等等。功能基本一致,不影響本文的內(nèi)容所以此處不細說了。下面的例子中僅以 renderToString 為例。

主流渲染模式

知道了主流框架的這幾種能力,我們再來通過標題提到的幾種主流渲染模式看下他們能用來組合出什么樣的效果,

CSR - Client Side Rendering - 客戶端渲染

CSR 就是我們常見的 SPA 所使用的渲染方式,所有的主流框架都支持,或者說:只要是在客戶端渲染過程中使用到了腳本都可以算作客戶端渲染。

CSR 主要流程為:

  1. 瀏覽器加載頁面
  2. 加載對應(yīng)的腳本
  3. 腳本執(zhí)行時向頁面中渲染內(nèi)容,此步驟一般包含兩種方式:
    1. 向一個空節(jié)點中渲染內(nèi)容,一般應(yīng)用于純粹的 CSR 應(yīng)用。這里使用的就是上面提到的掛載組件的功能。
    2. 向一個已有內(nèi)容的節(jié)點中渲染內(nèi)容,通常應(yīng)用于 CSR 與其它渲染模式(SSR、SSGISR)結(jié)合的場景下

CSR 的使用場景定義也很簡單,如果在客戶端頁面有動態(tài)需求或需要交互則必須使用。

SSR - Server Side Rendering - 服務(wù)端渲染

SSR 是另一個比較常見的渲染模式,使用這種渲染模式可以從服務(wù)端直接返回要渲染的靜態(tài)內(nèi)容。

其常見流程為:

  1. 瀏覽器發(fā)起 HTTP 請求對應(yīng)的頁面
  2. 服務(wù)端接收到請求后準備渲染頁面所需要的數(shù)據(jù)
  3. 將所需要的數(shù)據(jù)傳入需要渲染的頁面組件中然后通過 renderToString 輸出為靜態(tài)內(nèi)容
  4. 拼接頁面模版、水合腳本等將生成的靜態(tài)內(nèi)容返回到瀏覽器,瀏覽器進行渲染
  5. 瀏覽器渲染內(nèi)容,執(zhí)行水合腳本恢復(fù)頁面交互和動態(tài)能力

純粹的 SSR 指代的接收到請求、輸出靜態(tài)內(nèi)容、返回瀏覽器的模式。水合的相關(guān)部分是屬于 CSR 的內(nèi)容。

要注意水合并不是必須的,可以按需選擇。比如如果你的需求是要對不同的用戶展示不同的頁面,然而頁面上并沒有任何可以交互或動態(tài)的內(nèi)容,那完全可以忽略水合的部分。

SSR 一般應(yīng)用于以下場景:

  1. 出于首頁打開速度、用戶體驗、SEO 等目的需要讓用戶更快的看到頁面首屏內(nèi)容
  2. 想要預(yù)先渲染的頁面內(nèi)容中存在動態(tài)的內(nèi)容

SSG - Static Site Generation - 靜態(tài)站點生成

SSG 現(xiàn)在也比較常見,它所指代的是在構(gòu)建階段就將頁面所需要的數(shù)據(jù)準備好然后將需要的頁面通過腳本構(gòu)建為靜態(tài)內(nèi)容的模式。

其常見流程為:

  1. 在構(gòu)建階段構(gòu)建腳本遍歷所有需要靜態(tài)構(gòu)建的頁面
  2. 獲取渲染所需要的數(shù)據(jù)并通過 renderToString 輸出為靜態(tài)內(nèi)容
  3. 將靜態(tài)內(nèi)容拼接頁面模版和水合腳本等內(nèi)容后保存到文件中
  4. 瀏覽器發(fā)起請求時從服務(wù)端返回靜態(tài)頁面(一般直接使用靜態(tài)文件服務(wù)器即可)
  5. 瀏覽器渲染內(nèi)容,執(zhí)行水合腳本恢復(fù)頁面交互和動態(tài)能力

純粹的 SSG 指代的同樣是不包含 CSR 部分的內(nèi)容,即構(gòu)建階段生成靜態(tài)頁面并在請求時直接將靜態(tài)頁面返回的過程。水合過程同樣不是必須的,視需求決定即可。

SSG 一般應(yīng)用于以下場景:

  1. 出于首頁打開速度、用戶體驗、SEO 等目的需要讓用戶更快的看到頁面首屏內(nèi)容
  2. 頁面中基本都是靜態(tài)內(nèi)容,變動很少或變動的時機比較固定

所以常用于通過 CMS 生成內(nèi)容、博客站點等靜態(tài)內(nèi)容較多的場景。

ISR - Incremental Static Regeneration - 增量靜態(tài)再生

ISR 目前使用的不多,它算是 SSG 的一種增強版,指的是在 SSG 的基礎(chǔ)上,服務(wù)端在收到頁面請求時會對頁面的時效性進行判斷,如果認定失效則會對該頁面進行增量構(gòu)建的一種模式。

其常見的流程如下:

可以看出 ISR 在構(gòu)建和客戶端環(huán)節(jié)沒有任何的變化,而是增加了 Server 端的邏輯:

  1. 在服務(wù)端收到對應(yīng)頁面請求時服務(wù)端會先返回當前內(nèi)容然后對頁面做失效驗證
  2. 如果頁面實現(xiàn),服務(wù)端會對失效的頁面進行后臺增量構(gòu)建
  3. 當下次請求到達時如果新的頁面已經(jīng)生成成功則會返回新頁面的內(nèi)容,但在此之前還會繼續(xù)使用舊頁面的內(nèi)容

當然上述的邏輯并不絕對,先增量構(gòu)建再返回也同樣是 ISR,只是一般這樣會影響到用戶體驗一般不推薦。

ISR 適用的場景是:

  1. 網(wǎng)站匹配 SSG 場景
  2. 但對頁面有一定的實時性要求

比如說天氣預(yù)報頁面,可能半小時更新一次即可,或者是新聞頁面,在存在新數(shù)據(jù)時再進行增量構(gòu)建也是一種解決方案。

如何選擇

在選擇渲染模式時我們通過以下邏輯進行簡單的判斷:

  1. 客戶端頁面是否需要動態(tài)或交互能力,如果要則 CSR 為必選
  2. 如果頁面有 SEO、首屏、性能等需求
    1. 如果頁面中想要靜態(tài)展示的內(nèi)容對每次訪問都可能存在差異——比如每個用戶看到的頁面信息不同,則可以選擇 SSR
    2. 如果頁面中靜態(tài)展示的內(nèi)容對每次訪問沒有差異性即可選擇 SSG
      1. 如果頁面中的靜態(tài)內(nèi)容變動較為頻繁,則可選擇 ISR

其次還要注意 SSRISR 都需要服務(wù)端的支持,所以如果只有靜態(tài)文件服務(wù)器那需要的改動就比較大了。

最后

渲染模式其實遠不止以上幾種,很多場景下都可以進行相應(yīng)的優(yōu)化。以下是一些我能想到的場景:

  • 在錄入或更新數(shù)據(jù)時通過 WebHook 等通知構(gòu)建系統(tǒng)進行增量構(gòu)建,算是 ISR 的一種變種
  • SSR 場景下可以對靜態(tài)組件和動態(tài)組件進行區(qū)分,將靜態(tài)組件使用 SSG 輸出,然后將其拼接到頁面中。

所以沒有最好的只有最適合的,按需選擇最適合自己需求的渲染模式即可。

如果想要看 SSRSSG、ISR 的具體實現(xiàn)請看我之前的文章。文章來源地址http://www.zghlxwxcb.cn/news/detail-513952.html

到了這里,關(guān)于什么是 CSR、SSR、SSG、ISR - 渲染模式詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • React SSG - 也寫個 Demo 吧

    上次寫了一個 SSR 的 DEMO ,今天寫個小 Demo 來從頭實現(xiàn)一下 react 的 SSG ,來理解下 SSG 是如何實現(xiàn)的。 SSG 即 Static Site Generation 靜態(tài)站點生成,是指將在構(gòu)建時就提前生成靜態(tài) HTML 頁面,速度很快,一般用于以下場景: SEO (搜索引擎優(yōu)化):由于部分搜索引擎對 CSR 內(nèi)容支持不

    2024年02月10日
    瀏覽(54)
  • React【React是什么?、創(chuàng)建項目 、React組件化、 JSX語法、條件渲染、列表渲染、事件處理】(一)

    React【React是什么?、創(chuàng)建項目 、React組件化、 JSX語法、條件渲染、列表渲染、事件處理】(一)

    ? ? ? ?React是什么? 為什么要學(xué)習(xí)React? React開發(fā)前準備? 創(chuàng)建React項目?

    2024年02月11日
    瀏覽(23)
  • 前端React篇之哪些方法會觸發(fā) React 重新渲染?重新渲染 render 會做些什么?

    在React中,以下方法會觸發(fā)重新渲染: setState() :當調(diào)用組件的setState方法并傳入新的狀態(tài)值時,React會觸發(fā)重新渲染。 forceUpdate() :可以強制組件重新渲染,不管組件的狀態(tài)是否發(fā)生變化。 props改變 :當組件接收到新的props時,它會進行重新渲染。 context改變 :如果使用了

    2024年04月10日
    瀏覽(22)
  • vue服務(wù)端渲染SSR

    vue服務(wù)端渲染SSR

    一:ssr的理解 1、服務(wù)端渲染 Server Side Render SSR解決方案,后端渲染出完整的首屏的dom結(jié)構(gòu)返回,前端拿到的內(nèi)容包括首屏及完整spa結(jié)構(gòu),應(yīng)用激活后依然按照spa方式運行,這種頁面渲染方式被稱為服務(wù)端渲染 (server side render) 二:Vue SSR實戰(zhàn) 1、新建工程 vue-cli創(chuàng)建工程即可 2、

    2024年02月10日
    瀏覽(20)
  • React ISR 如何實現(xiàn) - 最后的 Demo

    之前寫了兩個 demo 講解了如何實現(xiàn) SSR 和 SSG ,今天再寫個 demo 說在 ISR 如何實現(xiàn)。 ISR 即 Incremental Static Regeneration 增量靜態(tài)再生,是指在 SSG 的前提下,可以在收到請求時判定頁面是否需要刷新,如果需要則重新構(gòu)建該頁面,這樣既擁有了靜態(tài)頁面的優(yōu)勢又可以避免頁面長時間

    2024年02月11日
    瀏覽(19)
  • 在Vue 3中如何實現(xiàn)服務(wù)端渲染(SSR)

    今天我要給你們介紹一個很酷的功能——在Vue 3中實現(xiàn)服務(wù)端渲染(SSR) 首先,我們來聊聊SSR是什么。它就像是一個魔術(shù)師,能讓你的網(wǎng)頁在服務(wù)器上就預(yù)先渲染好,然后發(fā)送到客戶端。想象一下,你在瀏覽一個網(wǎng)頁,一點開鏈接,頁面就直接出現(xiàn)在你面前,就像變魔術(shù)一樣

    2024年02月13日
    瀏覽(22)
  • 個人建站前端篇(二)項目采用服務(wù)端渲染SSR

    個人建站前端篇(二)項目采用服務(wù)端渲染SSR

    更好的SEO 首屏加載速度更快,用戶體驗更好 可以使用相同的語言以及相同的聲明式、面向組件的心智模型來開發(fā)整個應(yīng)用,而不需要在后端模板系統(tǒng)和前端框架之間來回切換。 Nuxt是一個構(gòu)建于 Vue 生態(tài)系統(tǒng)之上的全??蚣?Quasar是基于 Vue 的完整解決方案 Vite 提供了內(nèi)置的

    2024年02月19日
    瀏覽(51)
  • 極致性能優(yōu)化:前端SSR渲染利器Qwik.js

    前端性能已成為網(wǎng)站和應(yīng)用成功的關(guān)鍵要素之一。用戶期望快速加載的頁面和流暢的交互,而前端框架的選擇對于實現(xiàn)這些目標至關(guān)重要。然而,傳統(tǒng)的前端框架在某些情況下可能面臨性能挑戰(zhàn)且存在技術(shù)壁壘。 在這個充滿挑戰(zhàn)的背景下,我們引入了 Qwik.js 框架。Qwik.js 不僅

    2024年02月05日
    瀏覽(19)
  • React中的組件的渲染函數(shù)(Render Function)是什么?什么是React中的函數(shù)組件和類組件?如何在React中進行狀態(tài)管理?

    React中的組件可以有多種形式的渲染函數(shù),包括傳統(tǒng)的render()方法,以及近年來興起的函數(shù)組件和Hooks中的useState()和useEffect()。在這篇文章中,我將詳細介紹渲染函數(shù),以及如何在React中使用它們。 渲染函數(shù)(Render Function)是指組件在生命周期中的一個特殊方法,它的作用是根據(jù)

    2024年02月13日
    瀏覽(26)
  • 單頁面(SPA)與服務(wù)端渲染(SSR),概念、區(qū)別,優(yōu)缺點

    什么是單頁面應(yīng)用? 什么是多頁面應(yīng)用? 二者有什么區(qū)別? 1、單頁面應(yīng)用與多頁面應(yīng)用: 單頁面顧名思義就是整個應(yīng)用只有一個Html頁面,頁面的切換其實是組件的切換。這樣設(shè)計的好處就是不進行頁面的切換應(yīng)用會更加流暢,用戶體驗好,不需要記載整個頁面。良好前后

    2024年02月14日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包