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

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-05-16 17:43:53 190觀看
導讀在前端開發的世界里,我們經常遇到SSR(服務器端渲染)、SSG(靜態站點生成)和CSR(客戶端渲染)這三種渲染技術。它們各自有著獨特的優缺點,適用于不同的場景和需求。下面,我們將詳細介紹這三種技術,并通過代碼示例來加深理解。一、C

在前端開發的世界里,我們經常遇到SSR(服務器端渲染)、SSG(靜態站點生成)和CSR(客戶端渲染)這三種渲染技術。它們各自有著獨特的優缺點,適用于不同的場景和需求。下面,我們將詳細介紹這三種技術,并通過代碼示例來加深理解。mBl28資訊網——每日最新資訊28at.com

mBl28資訊網——每日最新資訊28at.com

一、CSR(客戶端渲染)

介紹:mBl28資訊網——每日最新資訊28at.com

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

優點:mBl28資訊網——每日最新資訊28at.com

  • 響應速度快:一旦HTML文件加載完成,瀏覽器就可以開始渲染頁面,而不需要等待服務器返回完整的渲染結果。
  • 動態性強:由于頁面渲染在客戶端進行,因此可以方便地實現各種動態交互效果。
  • 前端部署簡單:只需要一個靜態服務即可部署前端代碼,降低了部署成本。

缺點:mBl28資訊網——每日最新資訊28at.com

  • 首屏加載時間長:由于需要加載整個JavaScript包,可能導致首屏加載時間較長,特別是對于復雜的單頁應用(SPA)。
  • 不利于SEO:搜索引擎爬蟲可能無法很好地解析由JavaScript動態生成的頁面內容,導致SEO效果較差。
  • 白屏時間:在JavaScript代碼加載和執行期間,用戶可能會看到空白的頁面,即所謂的“白屏時間”。

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

// 假設有一個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文件// 瀏覽器加載并執行這些JavaScript,從而渲染頁面

二、SSR(服務器端渲染)

介紹:mBl28資訊網——每日最新資訊28at.com

SSR(Server-Side Rendering)是一種在服務器端完成頁面渲染的技術。在這種模式下,服務器接收到客戶端的請求后,會先根據請求數據和模板文件生成完整的HTML頁面,然后將這個頁面直接發送給客戶端。這樣,用戶可以直接看到完成的內容,無需等待JavaScript加載和執行。mBl28資訊網——每日最新資訊28at.com

優點:mBl28資訊網——每日最新資訊28at.com

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

缺點:mBl28資訊網——每日最新資訊28at.com

  • 服務器壓力大:對于每個請求,服務器都需要重新渲染頁面,這可能導致服務器壓力過大。
  • 開發限制:SSR要求開發者在編寫Vue組件時,需要考慮到服務器端和客戶端環境的差異,不能過度依賴客戶端環境。
  • 調試困難:SSR的調試過程相對復雜,需要同時考慮到服務器端和客戶端的日志和錯誤信息。

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

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

三、SSG(靜態站點生成)

介紹:mBl28資訊網——每日最新資訊28at.com

SSG(Static Site Generation)是一種在構建時生成靜態HTML頁面的技術。在這種模式下,開發者會編寫一些模板文件和數據文件,然后使用構建工具(如Hugo、Gatsby等)將這些文件轉換為靜態的HTML頁面。這些頁面可以直接部署到服務器上,而不需要服務器進行實時渲染。mBl28資訊網——每日最新資訊28at.com

優點:mBl28資訊網——每日最新資訊28at.com

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

缺點:mBl28資訊網——每日最新資訊28at.com

  • 動態性受限:由于頁面是靜態的,因此難以實現復雜的動態交互效果。
  • 構建時間長:對于大型站點,構建時間可能會比較長。
  • 不適合頻繁更新:對于需要頻繁更新數據的網站,SSG可能不太適合,因為每次更新都需要重新構建并部署整個網站。

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

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

構建腳本(Node.js):mBl28資訊網——每日最新資訊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!' });// 將渲染結果寫入HTML文件fs.writeFileSync('dist/index.html', res);// 現在你可以將生成的`dist/index.html`部署到服務器上

總結

CSR、SSR和SSG各有優缺點,適用于不同的場景和需求。在選擇使用哪種技術時,需要根據項目的具體需求來權衡利弊。mBl28資訊網——每日最新資訊28at.com

例如,對于需要豐富交互效果和實時數據的場景,可以選擇CSR;對于需要優化首屏加載速度和SEO效果的場景,可以選擇SSR;而對于內容更新不頻繁、對性能要求高的場景,可以選擇SSG。同時,也可以結合使用多種技術來實現更好的用戶體驗和性能優化。mBl28資訊網——每日最新資訊28at.com

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

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

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現場視頻讓網友吵翻

    近日,上海青浦區法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當時男子駕駛轎車在上海某路段行駛,前車忽然轉彎提速超車,
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 華為發布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發者大會2023(HDC.Together)大會上,HarmonyOS 4正式發布。自2019年發布以來,HarmonyOS一直以用戶為中心,經歷四年多的發展HarmonyOS已
  • 三星推出Galaxy Tab S9系列平板電腦以及Galaxy Watch6系列智能手表

    2023年7月26日,三星電子正式發布了Galaxy Z Flip5與Galaxy Z Fold5。除此之外,Galaxy Tab S9系列平板電腦以及三星Galaxy Watch6系列智能手表也同期
Top 主站蜘蛛池模板: 南皮县| 旬邑县| 宣武区| 廊坊市| 冀州市| 林西县| 黎平县| 邵阳市| 高邑县| 广元市| 张家川| 镇远县| 阿图什市| 平阴县| 囊谦县| 行唐县| 冀州市| 泽库县| 鹿泉市| 固阳县| 云林县| 扎兰屯市| 大余县| 苍南县| 龙江县| 清徐县| 开阳县| 琼海市| 丹江口市| 塔河县| 沙雅县| 吴川市| 依安县| 贵阳市| 正定县| 梅河口市| 九龙县| 河间市| 梧州市| 道真| 兴城市|