首页 > 其他分享 >vue-meta实现router动态设置meta标签

vue-meta实现router动态设置meta标签

时间:2022-11-18 14:47:52浏览次数:72  
标签:vue title metaInfo meta keywords router

一. meta标签提供关于HTML文档的元数据 (元数据指用来描述数据的数据)。元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如何显示内容或从新加载页面)、搜索引擎(关键词搜索)、或其他web服务。
二. meta标签的特点
meta标签只能位于head元素内部。
在html中,meta标签没有结束标签。在xhtml中,meta标签必须被正确地关闭。
meta标签共有两个属性,分别是http-equiv属性和name属性。
三.通过引入vue-meta模块

npm install vue-meta --save

  

  • 在main.js中引入
  •  import  Meta from 'vue-meta';
     Vue.use(Meta);
    

      

  • new Vue({
        router,
        data:{
            title:"张培跃",
            keywords:"玉树临风,风流倜傥,英俊潇洒,才高八斗,貌似番安",
            description:"这么神奇吗?都已经很难用言语来描述了"
        },
        metaInfo(){
            return {
                title: this.title,
                meta: [
                    {
                        name:"keywords",
                        content: this.keywords
                    },{
                        name:"description",
                        content: this.description
                    }
                ]
            }
        },
        render: function (h) { return h(App) }
    }).$mount('#app')
    

      

    四.vue路由中动态设置title与meta

    • 在router.js中创建路由:
    • routes:[
      {
      	name:"Qq",
      	path:"/qq",
      	component:Qq,
      	meta:{
      		metaInfo:{
      			title:"腾讯首页",
      			 keywords: "资讯,新闻,财经,房产,视频,NBA,科技,腾讯网,腾讯,QQ,Tencent",
                   description: "腾讯网从2003年创立至今,已经成为集新闻信息……"
      		}
      	}
      },
      {
      	path: "/jd",
              name: "Jd",
              component: Jd,
              meta: {
                  metaInfo: {
                      title: "京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!",
                      keywords: "网上购物,网上商城,家电,手机,电脑,服装,居家,母婴,美妆,个护,食品,生鲜,京东",
                      description: "京东JD.COM-专业的综合网上购物商城,……"
                  }
              }
      
      
      }
      ]
      

        

      • 在store.js中创建状态:
      • import Vue from "vue";
        import vuex from "vuex";
        Vue.use(vuex);
        const state = {
            metaInfo: {
                title: "张培跃",
                keywords: "玉树临风,风流倜傥,英俊潇洒,才高八斗,貌似番安",
                description: "这么神奇吗?都已经很难用言语来描述了"
            }
        };
        const mutations = {
            CAHNGE_META_INFO(state, metaInfo) {
                state.metaInfo = metaInfo;
            }
        };
        export default new vuex.Store({
            state,
            mutations,
        })
        

          

          • main.js
          •  import Vue from 'vue'
            import App from './App.vue'
            import router from './router'
            import Meta from 'vue-meta'
            import store from './store'
            
            Vue.use(Meta)
            
            Vue.config.productionTip = false;
            
            router.beforeEach((to, from, next) => {
                if (to.meta.metaInfo)
                    store.commit("CAHNGE_META_INFO", to.meta.metaInfo)
                next()
            });
            
            new Vue({
                router,
                store,
                metaInfo(){
                    return {
                        title: this.$store.state.metaInfo.title,
                        meta: [
                            {
                                name: "keywords",
                                content: this.$store.state.metaInfo.keywords
                            }, {
                                name: "description",
                                content: this.$store.state.metaInfo.description
                            }
                        ]
                    }
                },
                render: function (h) {
                    return h(App)
                }
            }).$mount('#app')
            

              

标签:vue,title,metaInfo,meta,keywords,router
From: https://www.cnblogs.com/xikui/p/16903149.html

相关文章

  • Vue双向绑定原理梳理
    简介vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。数据劫持通过Object.defineProperty()方法,Vue对数据的劫持主要分为两类,一类是对象,一类是数组......
  • 搭建直播平台,vue+audio 有新消息时加提示音
    搭建直播平台,vue+audio有新消息时加提示音 <audiocontrols="controls"hiddensrc="./static/tip.mp3"ref="audio"></audio>​有新消息时,用以下代码即可播放指定的......
  • 为什么vue3要选用proxy,好处是什么?
    提问Object.defineProperty()和proxy的区别?为什么vue3要选用proxy,好处是什么?proxyProxy对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋......
  • Vue3, setup语法糖、Composition API全方位解读
    起初Vue3.0暴露变量必须return出来,template中才能使用;Vue3.2中只需要在script标签上加上setup属性,组件在编译的过程中代码运行的上下文是在setup()函数中,无......
  • 解读Vue3模板编译优化
    今天的文章打算学习下Vue3下的模板编译与Vue2下的差异,以及VDOM下Diff算法的优化。编译入口了解过Vue3的同学肯定知道Vue3引入了新的组合Api,在组件mount阶......
  • Vue.nextTick核心原理
    相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么......
  • Vue3源码解读之patch
    例子代码本篇将要讲解domdiff,那么咱们结合下面的例子来进行讲解,这个例子是在上一篇文章的基础上,加了一个数据变更,也就是list的值发生了改变。html中增加了一个按钮change......
  • 如何正确学习vue3.0源码
    为什么要学源码技术是第一生产力学习API的设计目的、思路、取舍学习优秀的代码风格学习组织代码的方式学习实现方法的技巧学习ES67新API、TS高级用法不给自......
  • 上帝视角看Vue源码整体架构+相关源码问答
    前言这段时间利用课余时间夹杂了很多很多事把Vue2源码学习了一遍,但很多都是跟着视频大概过了一遍,也都画了自己的思维导图。但还是对详情的感念模糊不清,故这段时间对源码......
  • router-link 路由参数
    1、路由信息对象:通过this.$route可获取组件的配置路由的对象,只读对象。  2、路由操作对象:通过this.$router可获取路由对象,也就是VueRouter,只写对象。 3、路由......