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写的实用看图工具实现代码
Jul 26 Javascript
jQuery点击后一组图片左右滑动的实现代码
Aug 16 Javascript
js正则表达式的使用详解
Jul 09 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
Sep 18 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
详解webpack + react + react-router 如何实现懒加载
Nov 20 Javascript
vue.js实现标签页切换效果
Jun 07 Javascript
KOA+egg.js集成kafka消息队列的示例
Nov 09 Javascript
微信小程序按钮点击跳转页面详解
May 06 Javascript
JavaScript图片旋转效果实现方法详解
Jun 28 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设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
JS中prototype的用法实例分析
2015/03/19 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
快速入门Vue
2016/12/19 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
JavaScript用document.write()输出换行的示例代码
2020/11/26 Javascript
[49:18]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 OG vs TNC
2018/04/01 DOTA
Python实现约瑟夫环问题的方法
2016/05/03 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python3简单实现串口通信的方法
2019/06/12 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
解决Python发送Http请求时,中文乱码的问题
2020/04/30 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
商场端午节活动方案
2014/01/29 职场文书
领导党性分析材料
2014/02/15 职场文书
社区维稳工作方案
2014/06/06 职场文书
美术兴趣小组活动总结
2014/07/07 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫