最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

Vue2 SSR渲染根據(jù)不同頁面修改 meta

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:25:14
文檔

Vue2 SSR渲染根據(jù)不同頁面修改 meta

Vue2 SSR渲染根據(jù)不同頁面修改 meta:本文主要介紹了Vue2 SSR渲染根據(jù)不同頁面修改 meta,分享給大家,具體如下: 注意: 經(jīng)過測試, vue-meta 會導(dǎo)致內(nèi)存泄漏, 請慎用… 以現(xiàn)在 vue2 的 服務(wù)端渲染模式, 都是通過 webpack 生成 html 模版文件(或者直接在 server.js 里拼接), 然
推薦度:
導(dǎo)讀Vue2 SSR渲染根據(jù)不同頁面修改 meta:本文主要介紹了Vue2 SSR渲染根據(jù)不同頁面修改 meta,分享給大家,具體如下: 注意: 經(jīng)過測試, vue-meta 會導(dǎo)致內(nèi)存泄漏, 請慎用… 以現(xiàn)在 vue2 的 服務(wù)端渲染模式, 都是通過 webpack 生成 html 模版文件(或者直接在 server.js 里拼接), 然

本文主要介紹了Vue2 SSR渲染根據(jù)不同頁面修改 meta,分享給大家,具體如下:

注意:

經(jīng)過測試, vue-meta 會導(dǎo)致內(nèi)存泄漏, 請慎用…

以現(xiàn)在 vue2 的 服務(wù)端渲染模式, 都是通過 webpack 生成 html 模版文件(或者直接在 server.js 里拼接), 然后通過fs.readFileSync 讀取該文件, 再通過 res.end 輸出, 這樣就造成 meta 修改很麻煩

這時候我們可以借助 vue-meta 來管理, 下面以官方的vue-hackernews-2.0為例, 說下使用方法:

安裝

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, 如果還需要其他的, 自行添加正則

注意: 請保證模版中包含

<title>xxxx</title>


<meta name="description" content="xxxx">

修改路由組件

在路由組件添加

export default {
 name: 'frontend-index',
 prefetch: fetchInitialData,
 // 添加以下代碼
 metaInfo () {
 const title = 'M.M.F 小屋 - 首頁'
 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 小屋' }]
 }
 }
}

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Vue2 SSR渲染根據(jù)不同頁面修改 meta

Vue2 SSR渲染根據(jù)不同頁面修改 meta:本文主要介紹了Vue2 SSR渲染根據(jù)不同頁面修改 meta,分享給大家,具體如下: 注意: 經(jīng)過測試, vue-meta 會導(dǎo)致內(nèi)存泄漏, 請慎用… 以現(xiàn)在 vue2 的 服務(wù)端渲染模式, 都是通過 webpack 生成 html 模版文件(或者直接在 server.js 里拼接), 然
推薦度:
標(biāo)簽: ssr ss 渲染
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top