zoukankan      html  css  js  c++  java
  • vue change page title

    只需要在路由index.js配置meta的title就可以,然后在main.js实现页面改变title

    
    export default new Router({
      routes: [
        {
          path: '/',
          name: 'index',
          component: index,
          meta: { title:'index' }
        },
        {
          path: '/news',
          name: 'news',
          component: news,
          meta: {title:'news' }
        },
    
    
    
    
    
    
    router.beforeEach((to, from, next) => {
      /* 路由发生变化修改页面title */
      if (to.meta.title) {
        document.title = to.meta.title
      }
      next()
    })
    

    如果想为了seo的话,可以添加name,和content

    import Vue from 'vue';
    import VueRouter from 'vue-router';
    import App from './App.vue';
    import Nested from './Nested.vue';
    
    Vue.use(VueRouter);
    
    const routes = [
      {
        path: '/',
        component: App,
        meta: {
          title: 'Home Page - Example App',
          metaTags: [
            {
              name: 'description',
              content: 'The home page of our example app.'
            },
            {
              property: 'og:description',
              content: 'The home page of our example app.'
            }
          ]
        }
      },
      {
        path: '/about',
        // I'm kind of cheating by reusing the main app component here.
        component: App,
        meta: {
          title: 'About Page - Example App',
          metaTags: [
            {
              name: 'description',
              content: 'The about page of our example app.'
            },
            {
              property: 'og:description',
              content: 'The about page of our example app.'
            }
          ]
        },
    
        children: [
          {
            path: 'nested',
            component: Nested,
            meta: {
              title: 'Nested - About Page - Example App'
            }
          }
        ]
      }
    ];
    
    
    const router = new VueRouter({
      routes,
      mode: 'history'
    });
    
    new Vue({
      router,
      template: ''
    })
    .$mount('#app');
    

    main.js

    // This callback runs before every route change, including on page load.
    router.beforeEach((to, from, next) => {
      // This goes through the matched routes from last to first, finding the closest route with a title.
      // eg. if we have /some/deep/nested/route and /some, /deep, and /nested have titles, nested's will be chosen.
      const nearestWithTitle = to.matched.slice().reverse().find(r => r.meta && r.meta.title);
    
      // Find the nearest route element with meta tags.
      const nearestWithMeta = to.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);
      const previousNearestWithMeta = from.matched.slice().reverse().find(r => r.meta && r.meta.metaTags);
    
      // If a route with a title was found, set the document (page) title to that value.
      if(nearestWithTitle) document.title = nearestWithTitle.meta.title;
    
      // Remove any stale meta tags from the document using the key attribute we set below.
      Array.from(document.querySelectorAll('[data-vue-router-controlled]')).map(el => el.parentNode.removeChild(el));
    
      // Skip rendering meta tags if there are none.
      if(!nearestWithMeta) return next();
    
      // Turn the meta tag definitions into actual elements in the head.
      nearestWithMeta.meta.metaTags.map(tagDef => {
        const tag = document.createElement('meta');
    
        Object.keys(tagDef).forEach(key => {
          tag.setAttribute(key, tagDef[key]);
        });
    
        // We use this to track which meta tags we create, so we don't interfere with other ones.
        tag.setAttribute('data-vue-router-controlled', '');
    
        return tag;
      })
      // Add the meta tags to the document head.
      .forEach(tag => document.head.appendChild(tag));
    
      next();
    });
    
  • 相关阅读:
    iptables 常用命令解析
    iptables 常用处理动作
    centos7 中iptables、firewalld 和 netfilter 的关系
    iptables 的几个状态
    centos7 中没有service iptables save指令来保存防火墙规则
    iptables 数据走向流程
    数据库PDO简介
    php连接mySql,加密函数
    php数组,常量,遍历等
    php的会话控制
  • 原文地址:https://www.cnblogs.com/cyany/p/9171673.html
Copyright © 2011-2022 走看看