Vue 3 自帶的服務器端渲染(SSR)功能比以往更加強大且易于使用。它還具有更好的性能和更高的擴展性,使得在實際應用中使用 SSR 變得更加簡單。下面我們來了解一下 Vue 3 SSR 的一些基礎知識。
實現 Vue 3 SSR 的方法是創建一個能夠處理 HTTP 請求并返回渲染 HTML 字符串的 Express 中間件。這個中間件將 Vue 應用程序的渲染過程封裝到服務端代碼中,并確保在請求期間執行所有的生命周期鉤子。在對請求進行處理時,中間件將獲取要渲染的組件,并將其轉換為 HTML 字符串。這個 HTML 字符串被發送到客戶端,然后在瀏覽器中將其解析為可交互的頁面。
const fs = require('fs') const path = require('path') const express = require('express') const { renderToString } = require('@vue/server-renderer') const { createApp } = require('./app') const app = express() const template = fs.readFileSync( path.join(__dirname, 'index.template.html'), 'utf-8' ) const { app: appComponent, router } = createApp() app.use(express.static(path.join(__dirname, 'dist'))) app.get('*', async (req, res) =>{ router.push(req.url) await router.isReady() const appHtml = await renderToString(appComponent) res.send(template.replace(``, appHtml)) }) app.listen(3000, () =>{ console.log(`Server running at http://localhost:3000`) })
上面的代碼是一個簡單的 Express 中間件,用于實現基本的 Vue 3 SSR。首先,我們創建一個 Express 應用程序并指定服務端渲染的模板。接著,我們通過 createApp 函數創建 Vue 應用程序的實例,并在中間件中使用路由器來解析客戶端請求,并在此期間運行所有必要的生命周期鉤子。最后,我們使用 renderToString 函數將 Vue 應用程序實例渲染為 HTML 字符串,并將其用于替換要發送到客戶端的渲染模板。
以上就是 Vue 3 SSR 的一些基礎知識和實現方法。使用 Vue 3 SSR 可以讓我們在應用程序的性能和可訪問性方面有著重要的提升,同時還能更好地支持 SEO 和社交媒體分享等需求。