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 相关文章推荐
Jquery在IE7下无法使用 $.ajax解决方法
Nov 11 Javascript
jQuery控制输入框只能输入数值的小例子
Mar 20 Javascript
javascript常用经典算法实例详解
Nov 25 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
vue项目中使用axios上传图片等文件操作
Nov 02 Javascript
VueJs监听window.resize方法示例
Jan 17 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
Angular中sweetalert弹框的基本使用教程
Jul 22 Javascript
详解Js里的for…in和for…of的用法
Mar 28 Javascript
详解小程序开发经验:多页面数据同步
May 18 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 Javascript
vuex实现数据状态持久化
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&amp;MYSQL留言板源码
2020/07/19 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
关于PHP开发的9条建议
2015/07/27 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
javascript html5轻松实现拖动功能
2017/03/01 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
Python实现截屏的函数
2015/07/25 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
Python实现调用另一个路径下py文件中的函数方法总结
2018/06/07 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python做反被爬保护的方法
2019/07/01 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
Python 爬虫性能相关总结
2020/08/03 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
numba提升python运行速度的实例方法
2021/01/25 Python
毕业生造价工程师求职信
2013/10/17 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
护士自我评价
2014/02/01 职场文书
中国梦口号
2014/06/13 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
网络舆情信息简报
2015/07/21 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书