亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

客戶端在服務器端渲染中到底接收到了什么?

客戶端在服務器端渲染中到底接收到了什么?

三國紛爭 2023-07-06 15:08:00
我一直在研究服務器端渲染與客戶端渲染,但大多數資料來源都在非?;镜膶用嫔辖忉屃诉@兩個概念。據我了解,服務器端渲染會在服務器中渲染網頁并將其發送到客戶端。這樣,客戶端可以立即查看頁面,同時瀏覽器在后臺下載相關的 JS。但服務器上到底渲染了什么?據我所知,渲染網頁涉及多個步驟,包括創建 DOM 樹、CSSOM 樹和渲染樹。然后是布局、繪畫和合成操作。服務器在向客戶端發送響應之前是否處理這些步驟的全部或子集?最終,客戶端請求網頁時會收到什么?
查看完整描述

2 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

考慮以下反應代碼。


class Square extends React.Component {

  render() {

    return (

      <button className="square">

         {this.props.value}      

      </button>

   );

  }

}


ReactDOM.render(

  <React.StrictMode>

    <Square />

  </React.StrictMode>,

  document.getElementById('root')

);

這段代碼沒有任何神奇的作用。它只是制作以下 html 代碼。


<div id="root">

    <button class="square">

       /* What ever the props passed to square lives here. */

    </button>

</div>

我不知道上面的反應代碼是否正常工作,因為我什至沒有花時間審查它。這只是一個示例代碼,但您可以明白其中的想法。


執行react js代碼以在網頁上生成上述HTML結構。但是您始終可以直接在 html 文件中創建該 html 結構,而無需使用 React。


在客戶端渲染中,服務器發送客戶端 JavaScript(而不是 html)。然后客戶端的 Web 瀏覽器執行該 javascript 并根據 js 代碼創建 html 結構。


在服務器端渲染中,服務器執行提供的javascript并創建適當的html結構并將其放入index.html(或適當的html文件)中。當用戶請求html文件時,服務器直接將html發送給用戶,而不是javascript。


現在請記住,在服務器端渲染 (SSR) 和客戶端渲染 (CSR) 中,html 會發送到用戶的瀏覽器,而 javascript 會使用<script>標簽發送。但在 CSR 中,html 文件只包含一個空<body>[大多數時候]。在CSR中,通過執行js在瀏覽器瀏覽器中創建必要的html節點。另一方面,SSR 在服務器中執行 javascript,僅將結果 html 文件發送到客戶端。這并不意味著客戶端收到的 html 文件不包含scripts. 服務器上只構建了html結構。


更多實際場景...


考慮一個 html 文件需要從外部 API 獲取數據的情況。在CSR中,js被發送到Web瀏覽器。瀏覽器執行該js并從瀏覽器中的API獲取數據。在 SSR 中,服務器從 API 獲取所需的數據,將其適當地包裹在 HTML 標簽中,然后僅將 html 發送到客戶端。客戶端不需要從 API 獲取數據,服務器已經完成了。


渲染意味著組裝 html。不渲染像素或繪畫或其他任何東西。在SSR中,渲染發生在服務器中,而CSR中,渲染發生在瀏覽器中。


查看完整回答
反對 回復 2023-07-06
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

HTML 已組裝,但沒有布局、繪畫或合成或類似的東西。

唯一的渲染是 HTML 文檔。

通常,這種技術最令人信服的原因是搜索引擎優化。即使是運行 JavaScript 的爬蟲(如 Google)也不會一直這樣做,而且它們往往對運行內容和運行時長有嚴格的限制。


查看完整回答
反對 回復 2023-07-06
  • 2 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號