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是如何实现继承的
Dec 12 Javascript
jQuery判断浏览器并动态调整select宽度的方法
Mar 02 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
简单模拟node.js中require的加载机制
Oct 27 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 Javascript
微信小程序三级联动地址选择器的实例代码
Jul 12 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
js实现点击生成随机div
Jan 16 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
Aug 12 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开发文档 会员收费1期
2012/08/14 PHP
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
JS实现简单的右下角弹出提示窗口完整实例
2016/06/21 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
vue中当图片地址无效的时候,显示默认图片的方法
2018/09/18 Javascript
vue-loader中引入模板预处理器的实现
2019/09/04 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
python中关于for循环的碎碎念
2017/06/30 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
python实现手机销售管理系统
2019/03/19 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
在Tensorflow中实现leakyRelu操作详解(高效)
2020/06/30 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
html5使用canvas画三角形
2014/12/15 HTML / CSS
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
理工大学毕业生自荐信
2013/11/01 职场文书
办公室主任职责范文
2013/11/08 职场文书
毕业生实习鉴定
2013/12/11 职场文书
小学信息技术教学反思
2014/02/10 职场文书
质检部经理岗位职责
2014/02/19 职场文书
学习退步检讨书
2014/09/28 职场文书
政风行风评议个人心得体会
2014/10/29 职场文书
功夫熊猫观后感
2015/06/10 职场文书
运动会宣传语
2015/07/13 职场文书
小学英语课教学反思
2016/02/15 职场文书
如何用Python搭建gRPC服务
2021/06/30 Python