日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

一文搞懂:什么是SSR、SSG、CSR?前端渲染技術(shù)全解析

來(lái)源: 責(zé)編: 時(shí)間:2024-05-16 17:43:53 173觀看
導(dǎo)讀在前端開發(fā)的世界里,我們經(jīng)常遇到SSR(服務(wù)器端渲染)、SSG(靜態(tài)站點(diǎn)生成)和CSR(客戶端渲染)這三種渲染技術(shù)。它們各自有著獨(dú)特的優(yōu)缺點(diǎn),適用于不同的場(chǎng)景和需求。下面,我們將詳細(xì)介紹這三種技術(shù),并通過(guò)代碼示例來(lái)加深理解。一、C

在前端開發(fā)的世界里,我們經(jīng)常遇到SSR(服務(wù)器端渲染)、SSG(靜態(tài)站點(diǎn)生成)和CSR(客戶端渲染)這三種渲染技術(shù)。它們各自有著獨(dú)特的優(yōu)缺點(diǎn),適用于不同的場(chǎng)景和需求。下面,我們將詳細(xì)介紹這三種技術(shù),并通過(guò)代碼示例來(lái)加深理解。auA28資訊網(wǎng)——每日最新資訊28at.com

auA28資訊網(wǎng)——每日最新資訊28at.com

一、CSR(客戶端渲染)

介紹:auA28資訊網(wǎng)——每日最新資訊28at.com

CSR(Client-Side Rendering)是前端開發(fā)中最常見(jiàn)的渲染方式。在這種模式下,服務(wù)器主要負(fù)責(zé)提供靜態(tài)的HTML文件(可能包含一些基本的HTML結(jié)構(gòu)和JavaScript腳本),而真正的頁(yè)面渲染工作則完全由客戶端的瀏覽器來(lái)完成。這意味著頁(yè)面內(nèi)容是在用戶的瀏覽器上動(dòng)態(tài)生成的。auA28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)點(diǎn):auA28資訊網(wǎng)——每日最新資訊28at.com

  • 響應(yīng)速度快:一旦HTML文件加載完成,瀏覽器就可以開始渲染頁(yè)面,而不需要等待服務(wù)器返回完整的渲染結(jié)果。
  • 動(dòng)態(tài)性強(qiáng):由于頁(yè)面渲染在客戶端進(jìn)行,因此可以方便地實(shí)現(xiàn)各種動(dòng)態(tài)交互效果。
  • 前端部署簡(jiǎn)單:只需要一個(gè)靜態(tài)服務(wù)即可部署前端代碼,降低了部署成本。

缺點(diǎn):auA28資訊網(wǎng)——每日最新資訊28at.com

  • 首屏加載時(shí)間長(zhǎng):由于需要加載整個(gè)JavaScript包,可能導(dǎo)致首屏加載時(shí)間較長(zhǎng),特別是對(duì)于復(fù)雜的單頁(yè)應(yīng)用(SPA)。
  • 不利于SEO:搜索引擎爬蟲可能無(wú)法很好地解析由JavaScript動(dòng)態(tài)生成的頁(yè)面內(nèi)容,導(dǎo)致SEO效果較差。
  • 白屏?xí)r間:在JavaScript代碼加載和執(zhí)行期間,用戶可能會(huì)看到空白的頁(yè)面,即所謂的“白屏?xí)r間”。

示例(使用React):auA28資訊網(wǎng)——每日最新資訊28at.com

// 假設(shè)有一個(gè)React組件import React from 'react';function MyComponent() {  const [message, setMessage] = React.useState('Hello, CSR!');  const handleClick = () => {    setMessage('Clicked!');  };  return (    <div>      <p>{message}</p>      <button onClick={handleClick}>Click Me</button>    </div>  );}// 在HTML文件中引入React和組件的JavaScript文件// 瀏覽器加載并執(zhí)行這些JavaScript,從而渲染頁(yè)面

二、SSR(服務(wù)器端渲染)

介紹:auA28資訊網(wǎng)——每日最新資訊28at.com

SSR(Server-Side Rendering)是一種在服務(wù)器端完成頁(yè)面渲染的技術(shù)。在這種模式下,服務(wù)器接收到客戶端的請(qǐng)求后,會(huì)先根據(jù)請(qǐng)求數(shù)據(jù)和模板文件生成完整的HTML頁(yè)面,然后將這個(gè)頁(yè)面直接發(fā)送給客戶端。這樣,用戶可以直接看到完成的內(nèi)容,無(wú)需等待JavaScript加載和執(zhí)行。auA28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)點(diǎn):auA28資訊網(wǎng)——每日最新資訊28at.com

  • 首屏加載速度快:由于服務(wù)器已經(jīng)生成了完整的HTML頁(yè)面,因此客戶端可以直接顯示這個(gè)頁(yè)面,無(wú)需等待JavaScript加載和執(zhí)行。
  • SEO友好:搜索引擎爬蟲可以很好地解析由服務(wù)器生成的HTML頁(yè)面內(nèi)容,有利于SEO優(yōu)化。
  • 適合復(fù)雜頁(yè)面:對(duì)于包含大量數(shù)據(jù)、需要復(fù)雜計(jì)算的頁(yè)面,SSR可以更好地處理并減少客戶端的負(fù)載。

缺點(diǎn):auA28資訊網(wǎng)——每日最新資訊28at.com

  • 服務(wù)器壓力大:對(duì)于每個(gè)請(qǐng)求,服務(wù)器都需要重新渲染頁(yè)面,這可能導(dǎo)致服務(wù)器壓力過(guò)大。
  • 開發(fā)限制:SSR要求開發(fā)者在編寫Vue組件時(shí),需要考慮到服務(wù)器端和客戶端環(huán)境的差異,不能過(guò)度依賴客戶端環(huán)境。
  • 調(diào)試?yán)щy:SSR的調(diào)試過(guò)程相對(duì)復(fù)雜,需要同時(shí)考慮到服務(wù)器端和客戶端的日志和錯(cuò)誤信息。

示例(使用React的服務(wù)器端渲染):auA28資訊網(wǎng)——每日最新資訊28at.com

// 服務(wù)器端代碼(Node.js)const React = require('react');const ReactDOMServer = require('react-dom/server');const MyComponent = require('./MyComponent').default; // 假設(shè)MyComponent是上面定義的React組件// 渲染組件為HTML字符串const html = ReactDOMServer.renderToString(<MyComponent />);// 將HTML字符串發(fā)送給客戶端// ...(這里省略了HTTP服務(wù)器和響應(yīng)發(fā)送的代碼)

三、SSG(靜態(tài)站點(diǎn)生成)

介紹:auA28資訊網(wǎng)——每日最新資訊28at.com

SSG(Static Site Generation)是一種在構(gòu)建時(shí)生成靜態(tài)HTML頁(yè)面的技術(shù)。在這種模式下,開發(fā)者會(huì)編寫一些模板文件和數(shù)據(jù)文件,然后使用構(gòu)建工具(如Hugo、Gatsby等)將這些文件轉(zhuǎn)換為靜態(tài)的HTML頁(yè)面。這些頁(yè)面可以直接部署到服務(wù)器上,而不需要服務(wù)器進(jìn)行實(shí)時(shí)渲染。auA28資訊網(wǎng)——每日最新資訊28at.com

優(yōu)點(diǎn):auA28資訊網(wǎng)——每日最新資訊28at.com

  • 性能卓越:由于頁(yè)面是靜態(tài)的,因此無(wú)需等待服務(wù)器渲染,直接由瀏覽器加載顯示,具有出色的性能。
  • 安全性高:由于服務(wù)器只提供靜態(tài)文件,因此降低了遭受攻擊的風(fēng)險(xiǎn)。
  • 適合內(nèi)容型網(wǎng)站:對(duì)于內(nèi)容更新不頻繁的內(nèi)容型網(wǎng)站(如博客、文檔網(wǎng)站等),SSG是一個(gè)很好的選擇。

缺點(diǎn):auA28資訊網(wǎng)——每日最新資訊28at.com

  • 動(dòng)態(tài)性受限:由于頁(yè)面是靜態(tài)的,因此難以實(shí)現(xiàn)復(fù)雜的動(dòng)態(tài)交互效果。
  • 構(gòu)建時(shí)間長(zhǎng):對(duì)于大型站點(diǎn),構(gòu)建時(shí)間可能會(huì)比較長(zhǎng)。
  • 不適合頻繁更新:對(duì)于需要頻繁更新數(shù)據(jù)的網(wǎng)站,SSG可能不太適合,因?yàn)槊看胃露夹枰匦聵?gòu)建并部署整個(gè)網(wǎng)站。

示例(使用Nunjucks模板引擎):模板文件(index.njk):auA28資訊網(wǎng)——每日最新資訊28at.com

<!DOCTYPE html><html><head>  <title>My Static Site</title></head><body>  <h1>{{ message }}</h1></body></html>

構(gòu)建腳本(Node.js):auA28資訊網(wǎng)——每日最新資訊28at.com

const nunjucks = require('nunjucks');const fs = require('fs');// 配置Nunjucks模板引擎nunjucks.configure('views', { autoescape: true });// 渲染模板const res = nunjucks.render('index.njk', { message: 'Hello, SSG!' });// 將渲染結(jié)果寫入HTML文件fs.writeFileSync('dist/index.html', res);// 現(xiàn)在你可以將生成的`dist/index.html`部署到服務(wù)器上

總結(jié)

CSR、SSR和SSG各有優(yōu)缺點(diǎn),適用于不同的場(chǎng)景和需求。在選擇使用哪種技術(shù)時(shí),需要根據(jù)項(xiàng)目的具體需求來(lái)權(quán)衡利弊。auA28資訊網(wǎng)——每日最新資訊28at.com

例如,對(duì)于需要豐富交互效果和實(shí)時(shí)數(shù)據(jù)的場(chǎng)景,可以選擇CSR;對(duì)于需要優(yōu)化首屏加載速度和SEO效果的場(chǎng)景,可以選擇SSR;而對(duì)于內(nèi)容更新不頻繁、對(duì)性能要求高的場(chǎng)景,可以選擇SSG。同時(shí),也可以結(jié)合使用多種技術(shù)來(lái)實(shí)現(xiàn)更好的用戶體驗(yàn)和性能優(yōu)化。auA28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-88721-0.html一文搞懂:什么是SSR、SSG、CSR?前端渲染技術(shù)全解析

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 三分鐘入門Helm工具

下一篇: Python 中十個(gè)令人驚嘆的字符串操作技巧

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 直屏旗艦來(lái)了 iQOO 12和K70 Pro同臺(tái)競(jìng)技

    旗艦機(jī)基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛(ài)好者在苦等一款直屏旗艦,這次,你們等到了。據(jù)博主數(shù)碼閑聊站帶來(lái)的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優(yōu)化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫(kù),還使用這些庫(kù)實(shí)現(xiàn)了一個(gè)流處理程序
  • 把LangChain跑起來(lái)的三個(gè)方法

    使用LangChain開發(fā)LLM應(yīng)用時(shí),需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過(guò)這個(gè)步驟先學(xué)習(xí)LLM模型的應(yīng)用,對(duì)Langchain進(jìn)行快速上手?本片講解3個(gè)把LangChain跑起來(lái)
  • 微信語(yǔ)音大揭秘:為什么禁止轉(zhuǎn)發(fā)?

    大家好,我是你們的小米。今天,我要和大家聊一個(gè)有趣的話題:為什么微信語(yǔ)音不可以轉(zhuǎn)發(fā)?這是一個(gè)我們經(jīng)常在日常使用中遇到的問(wèn)題,也是一個(gè)讓很多人好奇的問(wèn)題。讓我們一起來(lái)揭開這
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個(gè)人開發(fā)仿造稿定設(shè)計(jì)的圖片編輯器到現(xiàn)在,不知不覺(jué)已過(guò)去一年時(shí)間了,期間我經(jīng)歷了裁員失業(yè)、面試找工作碰壁,寒冬下一直沒(méi)有很好地履行計(jì)劃.....這些就放在日
  • 19個(gè) JavaScript 單行代碼技巧,讓你看起來(lái)像個(gè)專業(yè)人士

    今天這篇文章跟大家分享18個(gè)JS單行代碼,你只需花幾分鐘時(shí)間,即可幫助您了解一些您可能不知道的 JS 知識(shí),如果您已經(jīng)知道了,就當(dāng)作復(fù)習(xí)一下,古人云,溫故而知新嘛。現(xiàn)在,我們就開始今
  • WebRTC.Net庫(kù)開發(fā)進(jìn)階,教你實(shí)現(xiàn)屏幕共享和多路復(fù)用!

    WebRTC.Net庫(kù):讓你的應(yīng)用更親民友好,實(shí)現(xiàn)視頻通話無(wú)痛接入! 除了基本用法外,還有一些進(jìn)階用法可以更好地利用該庫(kù)。自定義 STUN/TURN 服務(wù)器配置WebRTC.Net 默認(rèn)使用 Google 的
  • 破圈是B站頭上的緊箍咒

    來(lái)源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛(ài)奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 三星推出Galaxy Tab S9系列平板電腦以及Galaxy Watch6系列智能手表

    2023年7月26日,三星電子正式發(fā)布了Galaxy Z Flip5與Galaxy Z Fold5。除此之外,Galaxy Tab S9系列平板電腦以及三星Galaxy Watch6系列智能手表也同期
Top 主站蜘蛛池模板: 日喀则市| 石台县| 故城县| 武山县| 南平市| 沙坪坝区| 娄烦县| 石狮市| 铁力市| 获嘉县| 稷山县| 大渡口区| 南京市| 崇明县| 南乐县| 镇巴县| 如东县| 滨州市| 潞西市| 高安市| 威远县| 卓资县| 虞城县| 深圳市| 雷波县| 古交市| 蒲城县| 西贡区| 扎赉特旗| 海安县| 河间市| 吉林市| 阿拉善左旗| 开远市| 武鸣县| 酒泉市| 澄迈县| 新野县| 长阳| 城固县| 满洲里市|