Skip to content

入门

示例

使用以下示例来引入一些核心概念:

首先来看根组件, App.vue

App.vue

vue
<template>
  <h1>Hello App!</h1>
  <p><strong>Current route path:</strong> {{ $route.fullPath }}</p>
  <nav>
    <RouterLink to="/">Go to Home</RouterLink>
    <RouterLink to="/about">Go to About</RouterLink>
  </nav>
  <main>
    <RouterView />
  </main>
</template>

RouterView 组件可以使 Vue Router 知道你想要在哪里渲染当前 URL 路径对应的路由组件。它不一定要在 App.vue 中,你可以把它放在任何地方,但它需要在某处被导入,否则 Vue Router 就不会渲染任何东西。

上述示例还使用了 {{ $route.fullPath }}。你可以在组件模板中使用 $route 来访问当前的路由对象。

创建路由器实例

路由器实例是通过调用 createRouter() 函数创建的:

js
import { createWebHistory, createRouter } from 'vue-router'

import HomeView from './HomeView.vue'
import AboutView from './AboutView.vue'

const routes = [
  { path: '/', component: HomeView },
  { path: '/about', component: AboutView },
]

const router = createRouter({
  history: createWebHistory(),
  routes,
})

注册路由器插件

一旦创建了我们的路由器实例,我们就需要将其注册为插件,这一步骤可以通过调用 use() 来完成。

js
const app = createApp(App)
app.use(router)
app.mount('#app')

和大多数的 Vue 插件一样,use() 需要在 mount() 之前调用。

这个插件的职责:

  1. 全局注册 RouterViewRouterLink 组件。
  2. 添加全局 $router$route 属性。
  3. 启用 useRouter()useRoute() 组合式函数。
  4. 触发路由器解析初始路由。

访问路由器和当前路由

如果我们使用选项式 API,我们可以在 JavaScript 中如下访问这两个属性:this.$routerthis.$route

js
export default {
  methods: {
    goToAbout() {
      this.$router.push('/about')
    },
  },
}

组合式 API:

vue
<script setup>
import { useRoute, useRouter } from 'vue-router';

const router = useRouter();
const route = useRoute();

console.log(route);

const toAbout = () => {
  router.push('/about');
}

</script>