Vue.js是一款流行的前端框架,而Express是一款流行的后端框架,兩者結(jié)合可以實現(xiàn)前后端分離的全棧開發(fā)。為了更好地優(yōu)化SEO和提升用戶體驗,還可以通過服務(wù)端渲染(SSR)來生成HTML并在服務(wù)器端渲染Vue組件。
要實現(xiàn)Vue的服務(wù)端渲染,需要使用Vue SSR的官方庫或者一些第三方庫如nuxt.js。在項目中引入Vue SSR,可以通過以下代碼實現(xiàn):
const Vue = require('vue') const server = require('express')() const renderer = require('vue-server-renderer').createRenderer() server.get('*', (req, res) =>{ const app = new Vue({ template: `Hello World` }) renderer.renderToString(app, (err, html) =>{ if (err) { res.status(500).end('Internal Server Error') return } res.end(html) }) }) server.listen(8080)
以上代碼實現(xiàn)了一個基礎(chǔ)的Vue SSR應(yīng)用,接收所有請求并返回一個Vue實例生成的HTML。在實際應(yīng)用中,Vue實例可以更復(fù)雜,包含組件、路由、狀態(tài)管理等等,也可以接收客戶端傳遞的數(shù)據(jù)。
還需要注意的是,使用Vue SSR生成的HTML并不包括靜態(tài)資源如CSS和JavaScript文件,需要通過外部引入的方式加載。在頁面中添加以下代碼即可引入Vue和生成的HTML:
Vue SSR App {{{ render }}}
以上代碼中,render變量填充了服務(wù)端渲染生成的HTML,通過三個花括號的方式使其不被轉(zhuǎn)義。同時,需要通過script標(biāo)簽引入Vue和app.js(實際上是客戶端渲染所用的JavaScript文件)。