vue.js在App.vue中获取路由名称

Mur*_*kon 9 javascript vue.js vue-router vuejs2

我使用vue-cli和webpack来构建vue项目.然后我安装了vue-meta-info来设置seo.

我想用模板和路由名称设置页面标题.但是,我无法在路由器中获取变量.

rotuer/index.js

import Vue from 'vue';
import Router from 'vue-router';
import HelloWorld from '@/components/HelloWorld';

Vue.use(Router);

export default new Router({
      mode: 'history',
      routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld,
    },
  ],
});
Run Code Online (Sandbox Code Playgroud)

App.vue

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<script>
export default {
 name: 'App',
 metaInfo: {
    title: "My Website - "+ route.name,
},
};

</script>
Run Code Online (Sandbox Code Playgroud)

Ru *_*ong 9

您可以使用路由器的beforeEach()帮助程序.

例:

routes.js

import Foo from '@/components/Foo'

export default new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'Foo',
      component: Foo,
      meta: {
        title: 'Foo'
      }
    }
  ]
})
Run Code Online (Sandbox Code Playgroud)

app.js或者main.js或者你的主要Javascript文件是什么.将代码放在上述JS文件之一中将允许所有页面相应地更新标题,并且是处理标题的更清晰的方式.

import router from '@/routes'

// your other codes here

router.beforeEach((to, from, next) => {
  document.title = `My website - ${to.meta.title}`
  next()
})
Run Code Online (Sandbox Code Playgroud)