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>
關於插件的使用,大家可以網上百度其他的案例。