基于Vue3實現(xiàn)SSR(服務端渲染)功能
什么是服務端渲染(SSR)?
簡單來說,服務端渲染是一種將網(wǎng)頁在服務器端生成 HTML 輸出的技術。相比于傳統(tǒng)的客戶端渲染(CSR),SSR 能夠在首次加載時提供完整的 HTML 標記,這樣用戶花費更少時間加載頁面,并能在搜索引擎中獲得更高的可見度。通過服務器直接生成并傳遞 HTML,SSR 還可以提高首屏渲染速度,降低用戶的感知延遲。
Vue 3 的 SSR 特性
Vue 3 在 SSR 上有了顯著改進與優(yōu)化,將其分為兩個主要部分:
- Vue 3 服務器入口:這是生成 HTML 的輸出,依賴于 Vue 的渲染函數(shù)。
- Vue 3 客戶端重 hydration:它可在用戶加載頁面后提升用戶交互體驗,通過在頁面加載后將用戶的交互轉(zhuǎn)移至 Vue 的組件上。
如何實現(xiàn) SSR
接下來,讓我們一步步實施 Vue 3 的 SSR。我們將創(chuàng)建一個簡單的 Vue 應用,并展示如何設置 SSR。
第一步:環(huán)境設置
首先,請確保你已經(jīng)安裝了 Node.js 和 npm。然后,我們開始創(chuàng)建一個新的 Vue 項目。打開終端并運行:
npm init -y npm install vue vue-server-renderer express
第二步:創(chuàng)建 Vue 應用
在項目根目錄下創(chuàng)建一個 src/
文件夾,并在其中創(chuàng)建 app.js
文件:
// src/app.js const { createSSRApp } = require('vue'); module.exports = function () { const app = createSSRApp({ data: () => ({ message: 'Hello, SSR with Vue 3!' }), template: `<div>{{ message }}</div>` }); return { app }; };
這個簡單的 Vue 應用返回了一條消息。在 SSR 的情況下,應用程序即將被服務器渲染,因此這是創(chuàng)建我們的 Vue 實例的方式。
第三步:創(chuàng)建服務器
接下來,我們需要創(chuàng)建一個服務器,以便將應用渲染成 HTML,并將其發(fā)送到客戶端。在項目根目錄下創(chuàng)建 server.js
文件:
// server.js const express = require('express'); const { createSSRApp } = require('vue'); const { renderToString } = require('vue-server-renderer').createRenderer(); const appEntry = require('./src/app'); const server = express(); server.get('/', async (req, res) => { const { app } = appEntry(); try { const html = await renderToString(app); res.send(` <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue 3 SSR Demo</title> </head> <body> <div id="app">${html}</div> <script src="/client.js"></script> </body> </html> `); } catch (error) { res.status(500).send('Server Error'); } }); server.listen(3000, () => { console.log('Server running at http://localhost:3000'); });
在這個文件中,我們創(chuàng)建了一個 Express 服務器,并在根路徑(/)時使用 renderToString 函數(shù)將 Vue 組件渲染為 HTML。需要注意的是,這里引入的 app 是我們之前創(chuàng)建的 Vue 應用。
第四步:客戶端重渲染
為了讓 Vue 應用程序在瀏覽器中變得活躍,我們需要創(chuàng)建客戶端 JavaScript 文件。在 src/ 文件夾下,創(chuàng)建一個新的 client.js 文件并加入以下內(nèi)容:
// src/client.js import { createSSRApp } from 'vue'; import appEntry from './app'; const { app } = appEntry(); app.mount('#app');
這個文件創(chuàng)建了一個相同的 Vue 應用,并把它掛載到我們在 HTML 中創(chuàng)建的根元素上。
第五步:測試應用
現(xiàn)在,我們已經(jīng)完成了 Vue 3 SSR 的實現(xiàn),可以啟動服務并測試應用。在命令行中運行以下命令:
node server.js
打開瀏覽器,訪問 http://localhost:3000,你將看到 “Hello, SSR with Vue 3!” 的消息顯示在頁面上,這個內(nèi)容是由服務器渲染的。
結(jié)論
Vue 3 的服務端渲染設置相對簡單,能顯著提高應用性能與用戶體驗。我們通過一個簡單的示例展示了如何設置基礎的 SSR 應用,但在實際開發(fā)中,應用可能會涉及路由、狀態(tài)管理等更多高級功能。
隨著 Vue 3 的流行與應用場景的擴展,SSR 在提升用戶體驗和 SEO 方面的優(yōu)勢無疑使它成為開發(fā)者的首選解決方案。今后的網(wǎng)頁開發(fā)中,SSR 將會扮演更為重要的角色。
到此這篇關于基于Vue3實現(xiàn)SSR(服務端渲染)功能的文章就介紹到這了,更多相關Vue3實現(xiàn)SSR內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue.js設計與實現(xiàn)分支切換與清除學習總結(jié)
這篇文章主要為大家介紹了Vue.js設計與實現(xiàn)分支切換與清除學習總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05Vue.js實現(xiàn)一個漂亮、靈活、可復用的提示組件示例
這篇文章主要介紹了Vue.js實現(xiàn)一個漂亮、靈活、可復用的提示組件示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03vue使用formData時候傳遞參數(shù)是個空值的情況處理
這篇文章主要介紹了vue使用formData時候傳遞參數(shù)是個空值的情況處理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼
這篇文章主要介紹了vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04antd?Vue實現(xiàn)Login登錄頁面布局案例詳解?附帶驗證碼驗證功能
這篇文章主要介紹了antd?Vue實現(xiàn)Login登錄頁面布局案例詳解附帶驗證碼驗證功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05在vue中使用eacharts創(chuàng)建graph關系圖方式
這篇文章主要介紹了在vue中使用eacharts創(chuàng)建graph關系圖方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09vue3+ElementPlus+VueCropper實現(xiàn)上傳圖片功能
文章介紹了如何在Vue3、ElementPlus和VueCropper組件中實現(xiàn)圖片上傳和裁剪功能,包括放大、縮小等操作,感興趣的朋友跟隨小編一起看看吧2025-01-01