vue 伺服器渲染

L6zt發表於2019-02-16

vue 伺服器渲染
作用:

  1. 可以加快首屏渲染速度。
  2. 有利於搜尋引擎的seo。

原理:

自己的粗淺理解:

  1. node端和瀏覽器端都能執行js。當開啟瀏覽器, 輸入專案地址,首先訪問node伺服器,node伺服器渲染 出來返回到瀏覽器的 只有html文件 和相應的js、css注入,還有node端從api伺服器端獲取的資料, 一般放在全域性的變數裡。列window.vueStore = api伺服器資料。然後在瀏覽器端, 當vue 根例項第一次初始化的時候,把資料注入到全域性狀態管理 vuex裡。作為瀏覽器端相應路由裡的資料,給路由級元件 提供 相應的資料狀態,然後渲染出相應的虛擬dom, 同時複用node端 返回的已生成的dom節點。因為例如戶端渲染的虛擬dom == node端渲染返回的的dom節點。此後瀏覽器端行為 與node端幾乎不再相關。
  2. 做到兩端對路由響應的統一,兩端 需要 對同一個路由 響應同樣的函式, 如尤大官網上 asyncData,你也可以指定 其他的函式。node端當進入路由 就會解析 配備當前路由的路由元件,然後 把他們(asyncData) 都 找出來, 放在promise.all 裡面,等拉去api 伺服器端的資料獲取完後, 放入全域性狀態管理 vuex裡面。瀏覽器端 一種實現就是路由hook 裡 beforeResolve 裡面 完成類似 node端獲取資料的方式, 第二種是在路由元件裡的 beforeMounted 裡面去觸發路由元件的this.$options.asyncData.

    詳細介紹(尤大官方文件
    開發移動端專案 提供自己改良的nuxt
    nuxt官方文件

相關文章