Nuxt 也來說說vue服務端渲染

2021-09-13 14:50:31 字數 2690 閱讀 1360

隨著現在vue和react的流行,許多**都做成了spa,確實提公升了使用者體驗,但spa也有兩個弱點,就是seo和首屏渲染速度。為了解決單頁應用的痛點,基於vue和react的服務端渲染應運而生。由於公司的框架採用的是vue,所以就簡單的研究了一下基於vue的服務端渲染框架——nuxt。在vue的官網有關於服務端渲染的詳細介紹,而nuxt整合了利用vue開發服務端渲染的應用所需要的各種配置,也整合了vue2、vue-router、vuex、vux-meta(管理頁面meta資訊的),利用官方的腳手架,基本上是傻瓜式操作,不用寫路由配置,不用寫webpcak配置就可以跑起來乙個基於服務端渲染的spa。

nuxt的特性包括:

通過vue init nuxt-community/starter-template生成的檔案目錄結構如下:

其中有一些目錄(layouts、pages、static、store、nuxt.config.js、package.json)是nuxt保留的,不可以更改,需要注意一下。

nuxt中的一大特點就是路由無需手動配置,會根據pages下的檔案路徑自動生成一套路由。如果路由中需要帶引數,只需將pages下的檔案已下劃線_作為字首即可。例如pages下的目錄結構如下:

pages/

--| user/

-----| index.vue

-----| one.vue

-----| _id.vue

--| index.vue

nuxt自動生成的路由配置為:

router: ,,,

,]}

而在vue檔案中可以針對路由的引數進行校驗,例如在pages/users/_id.vue檔案中

export default ) 

}

如果校驗方法返回的值不為truenuxt將自動載入顯示 404 錯誤頁面。而這個錯誤頁面需要寫在指定的位置,也就是layout中error頁面。接下來就來介紹有關檢視相關的東西。

可以在layouts目錄下建立自定義的布局,可以通過更改layouts/default.vue檔案來擴充套件應用的預設布局。需要在布局檔案中新增 元件用於顯示頁面的主體內容,感覺跟vue中的slot方法類似。例如在預設布局中增加header和footer,這樣每個頁面都會加上header和footer。

vue srr demo

而上面說到的error頁面,可以通過在layouts下增加error.vue檔案來修改預設的錯誤頁面。該頁面可以接受乙個error引數。

返回首頁

也可以給某個頁面指定特定的模板,做到個性化布局。例如在上面的error頁面中,我指定了乙個self-aside的模板

以上所說的都是有關布局和路由相關的東西,而還沒有講到有關服務端渲染的知識,究竟nuxt是如何做到ssr的呢,關鍵人物要出場了。

nuxt擴充套件了vue.js,增加了乙個叫asyncdata的方法,使得我們可以在設定元件的資料之前能非同步獲取或處理資料。這個函式可了不得了,有了它,我們可以先從服務員拿到資料,在服務端解析好,拼成html字串,返回給瀏覽器。

asyncdata方法會在元件每次載入之前被呼叫,它可以在服務端或路由更新之前被呼叫。 可以利用asyncdata方法來獲取資料,nuxt會將asyncdata返回的資料融合元件data方法返回的資料一併返回給當前元件。這個方法只能用在頁面元件中,在componets下在公共元件是不能呼叫該方法的,nuxt不會擴充套件增強該目錄下vue元件。

因為asyncdata方法是在元件 初始化 前被呼叫的,所以在方法內是沒有辦法通過this來引用元件的例項物件。

async asyncdata ()  = await axios.get('')

return

},

上面demo中asyncdata返回的資料賦值給了users,這樣我就可以在頁面中像使用data裡的資料一樣去使用users,例如我在template下迴圈出users

我現在去檢視源**,發現頁面中li中的資料已經渲染過來了,也就是達到了服務端渲染。

附一張nuxt渲染的流程圖:

整體感覺nuxt還是很好上手的,利用腳手架,看看官方文件,寫寫demo,大致就能了解整個流程。但其中的具體實現細節,還需要去認真看看

vue服務端渲染nuxt(一)

由於專案需要,所以對nuxt進行了初步學習,自己也進行總結一下,方便以後查詢瀏覽 2 如果你的npm版本在5.2.0,你可以使用下面的命令進行安裝 3 它在安裝的時候會提示你是否安裝一些依賴包,有後台的,例如koa express。還會問你是否安裝一些ui庫等,這些看個人或者整體的專案而決定。安裝完...

VUE基於NUXT的SSR 服務端渲染

server side rendering 服務端渲染 原理 將 html 在服務端渲染,合成完整的 html 檔案再輸出到瀏覽器。適用場景 nuxt 作用就是在 node.js 上進一步封裝,然後省去我們搭建服務端環境的步驟,只需要遵循這個庫的一些規則就能輕鬆實現 ssr。可以作為乙個 node....

React React應用程式流式服務端渲染

好處 react16推出了流式服務端渲染,它允許你並行地分發html片段。這樣可以讓渲染 出的首位元組有意義的內容給使用者速度更快。例子1,上面部分是一次性轉換,下面是流渲染,兩種方式 而且相對rendertostring,流是非同步的。這個可以讓你的node.js服務一次性渲染多個請求,並且保持在...