1.服務端渲染SSR
將元件或頁面透過伺服器生成HTML字串,在傳送到遊覽器,最後將靜態標記 “混合”為客戶端上完全互動的應用程式。
1.1 優勢
-
利於SEO
SEO: Search Engine Optimization, 搜尋引擎最佳化
不同爬蟲工作原理類似,只會爬取原始碼,不會執行網站的任何指令碼,使用了React或者其它MVVM框架之後,頁面大多數DOM元素都是在客戶端根據js動態生成,可供爬蟲抓取分析的內容大大減少。
另外,瀏覽器爬蟲不會等待我們的資料完成之後再去抓取我們的頁面資料。服務端渲染返回給客戶端的是已經獲取了非同步資料並執行JavaScript指令碼的最終HTML,網路爬中就可以抓取到完整頁面的資訊。 -
首屏載入快:首頁是透過node載入的HTML字串,使用者直接可以看到完整HTML,所以更快。
1.2 弊端
渲染過程由後端完成,會造成伺服器壓力較大、開發環境受限,服務端渲染中,只會執行到componentDidMount之前的生命週期鉤子,不利於前後端分離,開發效率低。
-
服務端壓力較大
本來是透過客戶端完成渲染,現在統一到服務端node服務去做。尤其是高併發訪問的情況,會大量佔用服務端CPU資源;
渲染過程在後端完成,那麼肯定會耗費後端資源。費流量,即使區域性頁面的變化也需要重新傳送整個頁面。不利於前後端分離,開發效率低。 -
開發環境受限
在服務端渲染中,只會執行到componentDidMount之前的生命週期鉤子,因此專案引用的第三方的庫也不可用其它生命週期鉤子,這對引用庫的選擇產生了很大的限制;
2.客戶端渲染CSR
隨著前端頁面的複雜性提高,前端就不僅僅是普通的頁面展示了,可能是新增更多功能的元件,複雜性更大,另外,此時 ajax 的興起,使得頁面就開始崇拜前後端分離的開發模式,即後端不提供完整的 html 頁面,而是提供一些 api 使得前端可以獲取 json 資料,然後前端拿到 json 資料之後再在前端進行 html 頁面的拼接,然後展示在瀏覽器上,這就是所謂的客戶端渲染
2.1 優勢
節省後端資源,區域性重新整理頁面,多端渲染,前後端分離。
- 節省後端資源。
即伺服器端完成html模板的解析,如果請求較多,會對伺服器造成一定的訪問壓力。而如果使用前端渲染,就是把這些解析的壓力分攤了前端。 - 便於前後端分離。
前端專注於前端UI,後端專注於api開發,且前端有更多的選擇性,而不需要遵循後端特定的模板. - 使用者體驗更好。
比如,我們將網站做成SPA或者部分內容做成SPA,這樣,尤其是移動端,可以使體驗更接近於原生app。
SPA:single page web application
2.2 弊端
首屏載入時間會比較慢、效能差,白屏,對於SEO無能為力、
-
前端響應較慢。
客戶端渲染、由於頁面顯示過程要進行JS檔案拉取和React程式碼執行,前端還需要進行拼接字串的過程,需要耗費額外的時間,不如伺服器渲染的速度快。 -
不利於SEO
對於SEO,完全無能為力,因為搜尋引擎爬蟲只認識html結構的內容,而不能識別JS程式碼內容。