所謂的服務端渲染是單指用node.js實現的模板,還是包括以前jsp,asp這些技術呢?
服務端渲染:凡是是從伺服器返回的html頁面,均算作是服務端渲染,包括php,jsp,nodejs。
至於現在為什麼使用nodejs,很大一部分原因是,nodejs的本質也是js,那麼就可以達到「一次編寫,前後端共用」的目的,就是實現同構直出的渲染。例如用node+react實現的方案,虛擬dom在服務端生成html進行渲染,而前端則使用相同的虛擬dom和服務端傳過來的數據,進行事件的掛載。
可以看下這篇文章瞭解一下:
騰訊新聞搶金達人活動node同構直出渲染方案的總結-蚊子-前端博客?www.xiabingbao.com
就是你理解的只要是伺服器返回 HTML 源碼就是服務端渲染。
SSR (服務端渲染)是一種在關注何處渲染 HTML 頁面的模式,代表在伺服器端完成把數據和模板轉換成最終的 HTML ,區別於 CSR(客戶端渲染),後者是在客戶端完成
SSR 實際上並沒有限定語言和框架
- 傳統的 PHP,jsp,asp 的模板渲染也是服務端渲染
- Node JS 領域,包含了 React 或者 Vue 這種前後端同構 的模式
- 也 包含了 Express / Koa / Egg 等基於模板渲染的 模式
- 字面意思上,包含 php、asp 等
- 實際上,目前基本特指 SPA 的伺服器端預渲染
簡單理解是將組件或頁面通過伺服器生成html字元串,再發送到瀏覽器,最後將靜態標記"
就是頁面呈現出來的效果代碼 是通過你介面獲取到的。一般這種方案是為瞭解決白屏的問題。
顧名思義,就是服務端生成html的過程,區別於以往的jsp和asp直出頁面,由於ajax的普及,前端更多時候是由js發起網路請求來非同步獲取數據,並以某種方式將數據組織成為頁面或者頁面的某部分,最終呈現出完整用戶界面,這樣的效率更高,性能也更好,可維護性也大大提高,此時的html只充當了模板/容器作用,並沒有實際內容。
但是因為搜索引擎只能收錄靜態頁面,也就是隻能抓取你的html而不執行你的js,這時候就會導致你的內容沒有被收錄,特別是對一些CMS的影響特別大,如果想要對搜索引擎友好,我們還是需要服務端直出頁面的能力。
那麼我們有沒有可能同時滿足開發需求又滿足爬蟲需求呢?有的,這就是服務端渲染,現在的服務端渲染區別於以前的jsp/asp,後者是模板引擎主要方便數據輸出到頁面,前者更像是一個解析引擎,你可以理解為在服務端跑了一個瀏覽器,解析你的html和js,最後得到完整頁面。當有訪問的時候,先經過解析器渲染出完整頁面,再丟給訪問者。
這樣看來效率似乎比較低,但事實上我們只需要針對搜索引擎的ua執行伺服器渲染,其他情況按照原來的方式進行就可以了。本來這個需求也是因為SEO需要而已。
把「服務端渲染(SSR)」和「客戶端渲染(CSR)」放在一起理解一目瞭然:
① 服務端渲染(SSR):頁面上的內容是由伺服器上的代碼決定的。
即,頁面上的內容在伺服器上已經生成好了,伺服器把這個內容給到瀏覽器,瀏覽器拿到這個內容直接顯示在頁面上即可。
② 客戶端渲染(CSR):一個網頁是由 JS 文件渲染出來的,而不是伺服器直接返回回來的。