Vue2 SSR渲染根據(jù)不同頁(yè)面修改 meta
本文主要介紹了Vue2 SSR渲染根據(jù)不同頁(yè)面修改 meta,分享給大家,具體如下:
注意:
經(jīng)過(guò)測(cè)試, vue-meta 會(huì)導(dǎo)致內(nèi)存泄漏, 請(qǐng)慎用…
以現(xiàn)在 vue2 的 服務(wù)端渲染模式, 都是通過(guò) webpack 生成 html 模版文件(或者直接在 server.js 里拼接), 然后通過(guò)fs.readFileSync 讀取該文件, 再通過(guò) res.end 輸出, 這樣就造成 meta 修改很麻煩
這時(shí)候我們可以借助 vue-meta 來(lái)管理, 下面以官方的vue-hackernews-2.0為例, 說(shuō)下使用方法:
安裝
Yarn
yarn add vue-meta
NPM
npm install vue-meta --save
準(zhǔn)備插件
在router/index.js里添加
import Vue from 'vue' import Router from 'vue-router' import Meta from 'vue-meta' Vue.use(Router) Vue.use(Meta) export default new Router({ // ... })
服務(wù)端渲染
在server-entry.js里添加
import { app, router, store } from './app' const isDev = process.env.NODE_ENV !== 'production' const meta = app.$meta() // 這行 export default context => { router.push(context.url) context.meta = meta // 這行 const ss = isDev && Date.now() // ... }
在server.js里修改
renderStream.once('data', () => { res.write(indexHTML.head) })
為
renderStream.once('data', () => { const { title, meta } = context.meta.inject() indexHTML.head = indexHTML.head.replace(/<title.*?<\/title>/g, title.text()) indexHTML.head = indexHTML.head.replace(/<meta.*?name="description".*?\/>/g, meta.text()) res.write(indexHTML.head) })
這里只選擇替換 title 和 description, 如果還需要其他的, 自行添加正則
注意: 請(qǐng)保證模版中包含
<title>xxxx</title>
和
<meta name="description" content="xxxx">
修改路由組件
在路由組件添加
export default { name: 'frontend-index', prefetch: fetchInitialData, // 添加以下代碼 metaInfo () { const title = 'M.M.F 小屋 - 首頁(yè)' return { title, meta: [{ vmid: 'description', name: 'description', content: title }] } } }
或者這樣
export default { name: 'frontend-article', prefetch: fetchInitialData, // 添加以下代碼 metaInfo () { const title = this.article.title return { title: title + ' - M.M.F 小屋', meta: [{ vmid: 'description', name: 'description', content: title + ' M.M.F 小屋' }] } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vant steps流程圖的圖標(biāo)使用slot自定義方式
這篇文章主要介紹了vant steps流程圖的圖標(biāo)使用slot自定義方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過(guò)程
vue-cli 默認(rèn)只提供了 dev 和 prod 兩種環(huán)境。這篇文章主要介紹了vue-cli項(xiàng)目配置多環(huán)境的詳細(xì)操作過(guò)程,需要的朋友可以參考下2018-10-10Vue Element UI 表單自定義校驗(yàn)規(guī)則及使用
這篇文章主要介紹了Vue Element UI 表單自定義效驗(yàn)規(guī)則及使用,文中通過(guò)代碼介紹了常見表單效驗(yàn)規(guī)則,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02vue?cli3?項(xiàng)目中如何使用axios發(fā)送post請(qǐng)求
這篇文章主要介紹了vue?cli3?項(xiàng)目中如何使用axios發(fā)送post請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue導(dǎo)出el-table表格為Excel文件的兩種方式
在開發(fā)過(guò)程中,我們經(jīng)常需要將表格數(shù)據(jù)導(dǎo)出為 Excel 文件,大多數(shù)情況下,由后端處理即可,但是當(dāng)數(shù)據(jù)量不大、需要快速響應(yīng)用戶操作、或者數(shù)據(jù)已經(jīng)在前端進(jìn)行處理和展示時(shí),前端該如何實(shí)現(xiàn)呢,本文將介紹兩種方法,需要的朋友可以參考下2024-09-09Vue2?中的數(shù)據(jù)劫持簡(jiǎn)寫示例
這篇文章主要為大家介紹了Vue2?中的數(shù)據(jù)劫持簡(jiǎn)寫示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02