Vue2 SSR渲染根据不同页面修改 meta


Posted in Javascript onNovember 20, 2017

本文主要介绍了Vue2 SSR渲染根据不同页面修改 meta,分享给大家,具体如下:

注意:

经过测试, vue-meta 会导致内存泄漏, 请慎用…

以现在 vue2 的 服务端渲染模式, 都是通过 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

准备插件

在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({
 // ...
})

服务端渲染

在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 小屋' }]
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
Jan 04 Javascript
jQuery中Ajax的load方法详解
Jan 14 Javascript
分享一个插件实现水珠自动下落效果
Jun 01 Javascript
修改jquery中dialog的title属性方法(推荐)
Aug 26 Javascript
JS快速实现移动端拼图游戏
Sep 05 Javascript
js弹性势能动画之抛物线运动实例详解
Jul 27 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
Oct 15 Javascript
高效jQuery选择器的5个技巧实例分析
Nov 26 jQuery
antd-DatePicker组件获取时间值,及相关设置方式
Oct 27 Javascript
原生js实现表格循环滚动
Nov 24 Javascript
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
详解vue+css3做交互特效的方法
Nov 20 #Javascript
解读ES6中class关键字
Nov 20 #Javascript
利用canvas中toDataURL()将图片转为dataURL(base64)的方法详解
Nov 20 #Javascript
Node.js 中使用 async 函数的方法
Nov 20 #Javascript
利用three.js画一个3D立体的正方体示例代码
Nov 19 #Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
Nov 19 #Javascript
使用DataTable插件实现异步加载数据
Nov 19 #Javascript
You might like
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
PHP中session变量的销毁
2014/02/27 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
javascript实现的动态添加表单元素input,button等(appendChild)
2007/11/24 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
Angularjs 双向绑定时字符串的转换成数字类型的问题
2017/06/12 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
vue-cli脚手架build目录下utils.js工具配置文件详解
2018/09/14 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
Python简单实现enum功能的方法
2016/04/25 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python psutil模块使用方法解析
2019/08/01 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
学生安全教育材料
2014/02/14 职场文书
商场主管竞聘书
2014/03/31 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
今日说法观后感
2015/06/08 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python