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使用prototype定义对象类型
Feb 07 Javascript
20款超赞的jQuery插件 Web开发人员必备
Feb 26 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
Nov 19 Javascript
jQuery.holdReady()使用方法
May 20 Javascript
简单的jQuery入门指引
Jul 28 Javascript
JavaScript中使用数组方法汇总
Feb 16 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
老生常谈ES6中的类
Jul 31 Javascript
使用vue-router完成简单导航功能【推荐】
Jun 28 Javascript
详解vue在项目中使用百度地图
Mar 26 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
May 22 Javascript
JavaScript实现网页跨年倒计时
Dec 02 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
一个捕获函数输出的函数
2007/02/14 PHP
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
PHP数组去重的更快实现方式分析
2018/05/09 PHP
JS重要知识点小结
2011/11/06 Javascript
提取字符串中年月日的函数代码
2013/11/05 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
js实现时间轴自动排列效果
2017/03/09 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
Python简单读取json文件功能示例
2017/11/30 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
python实现Windows电脑定时关机
2018/06/20 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
django中间键重定向实例方法
2019/11/10 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
安全生产责任书
2014/03/12 职场文书
师范生见习总结范文
2015/06/23 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
vue实现书本翻页动画效果实例详解
2022/04/08 Vue.js
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers