zoukankan      html  css  js  c++  java
  • 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>

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

  • 相关阅读:
    Web开发用到的导航栏固定顶端,页脚固定低端
    Action Filter 与 内置的Filter实现(实例-防盗链)转
    MVC 通过继承HandleErrorAttribute,使用log4net或ELMAH组件记录异常等
    HTML5中custom data-*特性与asp.net mvc 3 表单验证
    jQuery验证控件jquery.validate.js使用说明+中文API (转)
    Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案 (转)
    Android定制控件-带图像的TextView
    使用Elmah记录日志
    laravel路由与控制器(资源路由restful)
    npm 常用命令
  • 原文地址:https://www.cnblogs.com/shangguancn/p/14591769.html
Copyright © 2011-2022 走看看