vue.js服務(wù)端渲染

首先要明確一個(gè)概念,為什么要服務(wù)端渲染?

最開始JAVA做的JSP動(dòng)態(tài)頁面渲染技術(shù)就是在服務(wù)端渲染,為什么node.js出現(xiàn)之后,大量的前后端分離技術(shù)都不再使用JSP來做渲染,而是該用了其他的渲染引擎。
其實(shí)最難的地方在于JSP要求的技術(shù)棧比較高

  1. JSP需要了解并且熟練掌握EL表達(dá)式和JSP實(shí)現(xiàn)的動(dòng)態(tài)標(biāo)簽。
    1.1 隨之而來的JSP出現(xiàn)的問題就是要求頁面實(shí)現(xiàn)者必須要掌握服務(wù)器端的controller返回的視圖數(shù)據(jù),
  2. JSP頁面需要靈活的 import,對(duì)一個(gè)開發(fā)者要求又高了一步 (需要JS/HTML/CSS)熟練的技術(shù)
    上述的內(nèi)容本來是要一個(gè)人來實(shí)現(xiàn)的功能,無奈問題在于一個(gè)人精力有限或者是水平有限,無法單獨(dú)完成,一旦兩個(gè)人合作,就會(huì)出現(xiàn)合作上難以協(xié)調(diào)的問題。
    以上幾點(diǎn)是我在做JSP開發(fā)時(shí)候,體驗(yàn)最深刻的幾點(diǎn),也是這些年叫囂著要前后端分離的同事們的難言之隱吧。

前后端分離

最早開始接觸前后端分離的時(shí)候,我一度以為前端是在開倒車,重復(fù)造輪子,但是仔細(xì)看到了服務(wù)端渲染的實(shí)現(xiàn)方式之后,發(fā)現(xiàn) SSR技術(shù)相比傳統(tǒng)的JSP還是有不同之處,且相比之前服務(wù)器端提出的動(dòng)態(tài)模板技術(shù)也有著不同的特點(diǎn)。

vue服務(wù)器端渲染 (SSR)

服務(wù)端渲染:sever side render

服務(wù)端渲染到底都做了那些工作?

最近火熱的MVVM技術(shù),虛擬化DOM元素來渲染節(jié)點(diǎn),但是歸根結(jié)底都是利用JS來操作瀏覽器的DOM元素,瀏覽器的DOM元素操作即使再快,也有一個(gè)過程,相對(duì)于傳統(tǒng)的網(wǎng)站性能表現(xiàn)不出,但是相對(duì)于電商網(wǎng)站,龐大的DOM節(jié)點(diǎn)就會(huì)導(dǎo)致渲染的時(shí)間過于緩慢,服務(wù)端渲染可以利用服務(wù)器的環(huán)境的代碼模擬出瀏覽器渲染的整個(gè)過程(vue.js的完整的生命周期)。讓瀏覽器在接收到訪問的頁面的時(shí)候就能夠看到實(shí)際的效果,同時(shí)又不會(huì)丟失vue.js帶來的數(shù)據(jù)綁定的新特性。


相比于傳統(tǒng)方式的前后端分離,服務(wù)端渲染有一下特點(diǎn):

  1. 更好的搜索引擎優(yōu)化:SEO(Search Engine Optimization),搜索引擎優(yōu)化最關(guān)鍵的地方在于JS的同步,如果你不能夠很好的實(shí)現(xiàn)你的JS是同步狀態(tài),那么搜索引擎就不會(huì)抓取到你的異步內(nèi)容,也就是說,你的網(wǎng)頁在搜索引擎搜索到的時(shí)候是一片空白。
  2. 更快的渲染時(shí)間,相對(duì)于異步的JavaScript,在網(wǎng)絡(luò)緩慢的時(shí)候,異步的JS會(huì)導(dǎo)致用戶長時(shí)間停留在加載頁面,而服務(wù)端渲染沒有這個(gè)過程,就會(huì)使得時(shí)間進(jìn)一步縮小。

相比于傳統(tǒng)的前后端分離技術(shù),服務(wù)端渲染也是有一些局限之處:

  1. 開發(fā)條件優(yōu)先:相比于整個(gè)前端領(lǐng)域,服務(wù)端渲染能做的事情極其有限,一些外部的擴(kuò)展庫可能還需要特殊的處理才能夠在服務(wù)端渲染,
  2. 涉及到了更多的部署環(huán)境,由于多了額外的一個(gè)部署環(huán)境,需要額外的建立一個(gè)node.js服務(wù)器(傳統(tǒng)的nginx代理不需要)
  3. 更多的服務(wù)器負(fù)載,把用戶渲染的一部分功能收回到了服務(wù)器中做處理,需要服務(wù)器更大的cpu運(yùn)算,為此你可能還需要更多的緩存技術(shù)。

現(xiàn)在又回到原有的服務(wù)端渲染是在開倒車么(折騰么)?

現(xiàn)在的服務(wù)端渲染和傳統(tǒng)的服務(wù)端模板技術(shù)是有相似之處,但是絕對(duì)不一樣,區(qū)別就在于現(xiàn)在的前后端分離把前端頁面完整的作為了一個(gè)應(yīng)用程序,有自己獨(dú)立的模塊架構(gòu)和設(shè)計(jì),不再是原來的雜牌軍,傳統(tǒng)的HTML服務(wù)端渲染技術(shù)沒有模塊化,工程化,是一盤散沙,而現(xiàn)在的服務(wù)端渲染就只是加速了頁面渲染的速度和SEO,可以說是取長補(bǔ)短吧(去其糟粕,取其精華)。


react 服務(wù)端渲染(待續(xù))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容