SSR即服務器端渲染,將網站的HTML、CSS、JS等靜態資源直接輸出到前端,可以使網站的加載速度大大提高,特別是對于網站流量較大的情況。Vue.js的SSR是指在服務端渲染Vue.js組件。在Vue.js的官方文檔中,指出了使用的步驟,現簡要介紹一下。
第一步需要在服務端安裝Vue.js,使用npm或yarn install vue即可。然后在服務端引入Vue.js庫。
const Vue = require('vue')
第二步是創建vue實例。
const app = new Vue({ template: 'Hello World' })
第三步是創建vue實例的地方需要使用渲染函數,將內容輸出到HTML中。可以使用createRenderer函數來創建一個渲染器。
const renderer = require('vue-server-renderer').createRenderer() renderer.renderToString(app, (err, html) =>{ if (err) throw new Error(err) console.log(html) })
第四步是使用express搭建服務端渲染頁面。這里簡要介紹一下express,是一款使用Node.js編寫的輕量級Web應用程序框架。可以使用以下代碼來創建服務器實例。
const express = require('express') const server = express()
需要安裝vue-server-renderer和vue-template-compiler兩個包,使用如下代碼來渲染組件。
const renderer = require('vue-server-renderer').createRenderer() const createApp = require('./app') server.get('*', (req, res) =>{ const context = { url: req.url } createApp(context).then(app =>{ renderer.renderToString(app, (err, html) =>{ if (err) { if (err.code === 404) { res.status(404).end('Page not found') } else { res.status(500).end('Internal Server Error') } } else { res.end(html) } }) }) })
第五步是客戶端掛載。需要在HTML模板中添加占位符,在客戶端掛載時,使用hydrate函數進行添加。如下代碼所示。
const app = createApp() app.$mount('#app', true)
以上就是Vue.js的SSR的基本步驟。使用Vue.js的SSR可以使得應用程序更加高效、SEO友好、更容易緩存。但是需要注意的是,在使用SSR時需要確保組件是無狀態的,不使用DOM操作或原地修改狀態。慎用異步代碼,避免對應用程序性能產生影響。另外還需要注意的是SSR不適合所有的項目,只適合于需要SEO的業務和對性能有較高要求的項目。