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>

關於插件的使用,大家可以網上百度其他的案例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM