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 相关文章推荐
Javascript 设计模式(二) 闭包
May 26 Javascript
jQuery图片预加载 等比缩放实现代码
Oct 04 Javascript
面向对象设计模式的核心法则
Nov 10 Javascript
将查询条件的input、select清空
Jan 14 Javascript
Javascript 运动中Offset的bug解决方案
Dec 24 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
echarts3 使用总结(绘制各种图表,地图)
Jan 05 Javascript
js简易版购物车功能
Jun 17 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
浅谈发布订阅模式与观察者模式
Apr 09 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
Nov 08 Javascript
使用Vant完成Dialog弹框案例
Nov 11 Javascript
详解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 数学运算验证码实现代码
2009/10/11 PHP
php 常用类汇总 推荐收藏
2010/05/13 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
php5.3 goto函数介绍和示例
2014/03/21 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
javascript demo 基本技巧
2009/12/18 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
Javascript数组操作函数总结
2015/02/05 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
Angular.Js中ng-include指令的使用与实现
2017/05/07 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
JS使用正则表达式验证身份证号码
2017/06/23 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
javascript实现图片轮播代码
2019/07/09 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
python保存数据到本地文件的方法
2018/06/23 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
python 列表推导式使用详解
2019/08/29 Python
物业管理员岗位职责范文
2013/11/25 职场文书
考核工作实施方案
2014/03/30 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
运动会宣传稿100字
2015/07/23 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python