隨著各大前端框架的誕生和演變,SPA開始流行,單頁(yè)面應(yīng)用的優(yōu)勢(shì)在于可以不重新加載整個(gè)頁(yè)面的情況下,通過ajax和服務(wù)器通信,實(shí)現(xiàn)整個(gè)Web應(yīng)用拒不更新,帶來了極致的用戶體驗(yàn)。然而,對(duì)于需要SEO、追求極致的首屏性能的應(yīng)用,前端渲染的SPA是糟糕的。好在Vue 2.0后是支持服務(wù)端渲染的,零零散散花費(fèi)了兩三周事件,通過改造現(xiàn)有項(xiàng)目,基本完成了在現(xiàn)有項(xiàng)目中實(shí)踐了Vue服務(wù)端渲染。
關(guān)于Vue服務(wù)端渲染的原理、搭建,官方文檔已經(jīng)講的比較詳細(xì)了,因此,本文不是抄襲文檔,而是文檔的補(bǔ)充。特別是對(duì)于如何與現(xiàn)有項(xiàng)目進(jìn)行很好的結(jié)合,還是需要費(fèi)很大功夫的。本文主要對(duì)我所在的項(xiàng)目中進(jìn)行Vue服務(wù)端渲染的改造過程進(jìn)行闡述,加上一些個(gè)人的理解,作為分享與學(xué)習(xí)。
概述
本文主要分以下幾個(gè)方面:
什么是服務(wù)端渲染?服務(wù)端渲染的原理是什么? 如何在基于Koa的Web Server Frame上配置服務(wù)端渲染? 基本用法 Webpack配置 開發(fā)環(huán)境搭建 渲染中間件配置 如何對(duì)現(xiàn)有項(xiàng)目進(jìn)行改造? 基本目錄改造; 在服務(wù)端用vue-router分割代碼; 在服務(wù)端預(yù)拉取數(shù)據(jù); 客戶端托管全局狀態(tài); 常見問題的解決方案; 什么是服務(wù)端渲染?服務(wù)端渲染的原理是什么?
Vue.js是構(gòu)建客戶端應(yīng)用程序的框架。默認(rèn)情況下,可以在瀏覽器中輸出Vue組件,進(jìn)行生成DOM和操作DOM。然而,也可以將同一個(gè)組件渲染為服務(wù)器端的HTML字符串,將它們直接發(fā)送到瀏覽器,最后將這些靜態(tài)標(biāo)記"激活"為客戶端上完全可交互的應(yīng)用程序。
上面這段話是源自Vue服務(wù)端渲染文檔的解釋,用通俗的話來說,大概可以這么理解:
服務(wù)端渲染的目的是:性能優(yōu)勢(shì)。 在服務(wù)端生成對(duì)應(yīng)的HTML字符串,客戶端接收到對(duì)應(yīng)的HTML字符串,能立即渲染DOM,最高效的首屏耗時(shí)。此外,由于服務(wù)端直接生成了對(duì)應(yīng)的HTML字符串,對(duì)SEO也非常友好; 服務(wù)端渲染的本質(zhì)是:生成應(yīng)用程序的“快照”。將Vue及對(duì)應(yīng)庫(kù)運(yùn)行在服務(wù)端,此時(shí),Web Server Frame實(shí)際上是作為代理服務(wù)器去訪問接口服務(wù)器來預(yù)拉取數(shù)據(jù),從而將拉取到的數(shù)據(jù)作為Vue組件的初始狀態(tài)。 服務(wù)端渲染的原理是:虛擬DOM。在Web Server Frame作為代理服務(wù)器去訪問接口服務(wù)器來預(yù)拉取數(shù)據(jù)后,這是服務(wù)端初始化組件需要用到的數(shù)據(jù),此后,組件的
新聞熱點(diǎn)
疑難解答
圖片精選