服務端渲染SSR的原理與部署

2021-10-08 20:33:33 字數 2442 閱讀 8598

服務端執行前端框架**,生成網頁內容,返回客戶端,客戶端啟用為spa。

現代化服務端渲染,或稱為同構渲染,應用稱為服務端渲染應用或同構應用

把資料和模板拼接為完整的html檔案

資料渲染發生在服務端

資料渲染發生在客戶端

不利於seo

對於每個路由,首次訪問時都會由伺服器執行動態編譯輸出html檔案,然後再在客戶端啟用spa。

如果只是針對少數路由(頁面)需要輸出靜態html檔案,可以採用預渲染方式,在構建時針對這些頁面生成靜態html檔案即可。

使用 webpack,你可以使用 prerender-spa-plugin 輕鬆地新增預渲染

專案自定義的模板檔案

nuxt的配置檔案,自定義了路由規則表

存放頁面的資料夾,其中layouts資料夾存放作為所有頁面都需要的布局元件,這裡沒有使用nuxt預設的約定式路由,而是自定義了路由

管理工具方法

request.js檔案

封裝axios模組作為專案的請求工具方法

集中管理api請求,方便維護與重用api請求

nuxt會自動載入store中的模組

在store/index.js中直接定義state、actions、mutations、getters等,匯出這些變數,nuxt會根據這些匯出項自動建立store例項

state需要定義為乙個函式,為不同的請求生成乙份state物件

放置路由中介軟體的資料夾,檔名就是中介軟體的名稱

使用了簡單的html5表單驗證字段

服務端渲染模式下,不僅僅要能在客戶端拿到狀態資料,也需要在服務端拿到狀態資料(比如,使用者關閉應用後,又馬上開啟時,不能再要求使用者登入),使用了jwt方案實行。

執行在乙個頁面或一組頁面渲染之前的自定義函式

服務端路由守衛,可以對路由導航到的頁面渲染之前進行攔截,比如針對需要許可權的頁面,需要在導航到該頁面時攔截,驗證是否有許可權。

因為在同構渲染中,首次渲染時,無法使用客戶端路由守衛進行攔截操作。

資料預獲取,將資料先獲取到,然後渲染頁面,這樣可以獲得seo優化

在每個元件定義了asyncdata函式後,會由nuxt自動呼叫asyncdata函式來做預獲取資料操作

預設情況下,查詢字串的引數值更改不是響應式的,不會引起檢視的更新

可以在元件選項物件中設定watchquery屬性來監聽查詢字串中某些引數的變化,可以自動呼叫asyncdata等函式

nuxt的熱更新有時候會有問題,需要重新重新整理瀏覽器才能看到效果

在後端返回的資料中,很多時候會在字串中混入零寬字元,這些字元是隱藏的,瀏覽器不會對這些字元顯示出來,但這些字元又是真實存在的

比如使用string.prototype.length屬性就可以看到顯示出來的字元數與length不一致

去除字串中的零寬字元很重要,不然會導致各種問題出現

請求資料時想要帶上使用者token,但使用者token在vuex的store中管理,請求模組並不能拿到這個資料。

如果在檢視中通過上下文物件context拿時,又需要對每個api請求模組進行改造,讓它們都接收相同的token引數,這無疑增加了重複的工作,不利於維護

通過使用axios的請求***,將token在***中配置到請求物件上,這樣就不需要在每個請求api中接收這個相同的引數了,集中管理,利於維護

通過外掛程式機制,將***寫在外掛程式裡,外掛程式可以拿到上下文物件,從而可以獲取到token

外掛程式機制

在執行vue.js應用程式之前,執行的**

文章正文內容支援markdown語法,將markdown語法轉換為html語法輸出

參考 簡單部署

壓縮發布包

把發布包傳到服務端

解壓發布包

安裝依賴

啟動服務

pm2包管理node服務

pm2常用命令

自動部署

使用ci/cd方式實現

github actions實現自動部署

前置條件:linux伺服器 + 上傳github

配置到專案的settings/secrets中

配置github actions執行指令碼

修改pm2的配置檔案pm2.config.json

提交更新:

檢視自動部署狀態

訪問**

提交更新

服務端渲染SSR的理解

ssr服務端渲染server side render就是當進行請求時,頁面上的內容是通過服務端渲染生成的,瀏覽器直接顯示服務端返回的html即可。通常在構建乙個普通的spa單頁應用時,就是構建的客戶端渲染的應用,csr客戶端渲染client side render就是當進行請求時,頁面上的內容是通重...

VUE基於NUXT的SSR 服務端渲染

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

服務端渲染(SSR)和客戶端渲染(CSR)的區別

一 ssr 服務端渲染 server side render 將元件或頁面通過伺服器生成html字串,再傳送到瀏覽器,簡單理解下來,發了乙個請求,伺服器返回的不是介面資料,而是一整個頁面的html結構,再結合介面之前定義的css把頁面展示出來 vue 伺服器渲染文件。ssr優點 例如seo 因為訪問...