vue 修改浏览器Title

VUE “Title”修改

1.静态“Title ”

vue 在public 文件夹中有一个index.html,直接修改title中的值即可。这是最low的方法。

当然你的项目如果是使用webpack或者是vue-cli创建出来的项目,那么你会在title的地方看到

<%= htmlWebpackPlugin.options.title %>

或者

<%= webpackConfig.name %>

这两种写法。莫慌!!!!

第一种写法修改:

vue.config.js文件中的

chainWebpack: config =>{
    config.plugin('html')
      .tap(args => {
        args[0].title = "标题";
        return args;
      })
  }

第二种写法修改:

vue.config.js文件中的

configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
    }
  },

2.动态“Title”

方法一:

第一步:在main.js里面添加一个全局指令

Vue.directive('title', {
  inserted: function (el, binding) {
    document.title = el.dataset.title
  }
})

第二步:在要调用的组件里面,随便找一个div加入如下代码

v-title data-title=“我的”

案例:

<template>
    <header class="header_home user_reg" v-title data-title=""> 
   <div class="top_box hidden-xs"> 
    <div class="container"> 
      <router-link to="/" class="logo"> 
        <img src="../../../assets/image/5b10f166c3332.png" alt="" /> 
      </router-link> 
     <ul class="navs">
        <li>
            <router-link to="/regist">注册</router-link>
        </li> 
        <li>
          <router-link to="/login">登录</router-link>
        </li> 
        <li>
          <router-link to="/CooperUser">合作平台</router-link>
        </li> 
     </ul> 
    </div> 
   </div> 
  </header>
</template>

方法二:

实现思路很简单:就是利用路由的导购守卫beforeEach在每次页面跳转前更改对应的title

第一步:首先在route里面给每个路由加上meta属性

{
            path: '/login',
            name: 'login',
            component(resolve) {
                require(['./views/login.vue'], resolve)
            },
            meta: {
                title: '登录页',
                keepAlive: true, // 需要被缓存
            }
        },
        {
            path: '/regist',
            name: 'regist',
            component(resolve) {
                require(['./views/regist.vue'], resolve)
            },
            meta: {
                title: '注册页',
                keepAlive: true, // 需要被缓存
            }
        },
        {
            path: '/newList',
            name: 'newlist',
            component(resolve) {
                require(['./views/newsList.vue'], resolve)
            },
            meta: {
                title: '新闻列表',
                keepAlive: true, // 需要被缓存
            }
        }

第二步:在main.js里面加上导航守卫

router.beforeEach((to, from, next) => {
    window.document.title = to.meta.title == undefined?'默认标题':to.meta.title
    if (to.meta.requireAuth) {
        let token = Cookies.get('access_token');
        let anonymous = Cookies.get('user_name');
        if (token) { 
            
                next({
                    path: '/login',
                    query: {
                        redirect: to.fullPath
                    } 
                })
          
        }
    }
    next();
})

路由守卫你可以放在别的地方。。

方法三:

vue-wechat-title 插件

推荐

1.安装依赖

npm install vue-wechat-title --save

npm install vue-wechat-title --save

2.引用在main.js

import VueWechatTitle from 'vue-wechat-title'
Vue.use(VueWechatTitle)

3.在router.js中配置需要的title,每个不同的路由配置所属的title

{
      path: '/',
      name: 'homePage',
      component: resolve => require(['../components/homePage'],resolve),
      meta: {
        title:"这是动态title",
        content: 'disable',
      }
    }

4.监听路由变化改变title,还是在router.js中

router.beforeEach((to,from,next) =>{
    // 路由发生变化修改页面title
   if (to.meta.title) {
     document.title = to.meta.title;
   }
}

上面可以动态更改固定的一些title

但是往往我们使用的时候会遇到产品的详情页,相同路由下很多产品都对应不同的title,

在需要改变title的vue组件中

<template>
    <div class="customerCaseDetail" v-wechat-title="这是是动态title">
 
    </div>
</template>

关于插件的使用,大家可以网上百度其他的案例。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值