📜  vue-router dev (1)

📅  最后修改于: 2023-12-03 15:21:05.152000             🧑  作者: Mango

Vue Router Dev

Vue Router 是 Vue.js 的官方路由管理器。它和 Vue.js 核心深度集成,让构建单页面应用更容易。

背景

在单页面应用中,会在一个 HTML 页面中加载不同的组件,这样可以提高页面响应速度,不需要刷新整个页面。

但是,这也会带来一个问题:如何管理不同组件之间的跳转和状态呢?这就需要一个路由管理器。

Vue Router 正是为此而生,它提供了简单和灵活的 API,可以轻松管理单页面应用中的路由。

安装

在安装 Vue.js 的同时,也会安装 Vue Router。如果你是手动安装的,可以通过以下命令安装:

npm install vue-router
使用
基本用法

在使用 Vue Router 之前,需要先把它引入到你的项目中:

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

然后,定义一些路由:

const routes = [
  { path: '/foo', component: Foo },
  { path: '/bar', component: Bar }
]

其中,每一个路由都有一个 path 和 component 属性。path 表示路由的路径,component 表示路由对应的组件。

最后,创建一个 Router 实例,传入路由配置:

const router = new VueRouter({
  routes
})

最后一步是将 Router 实例注入到 Vue 根实例中:

const app = new Vue({
  router
}).$mount('#app')

这样,就可以在组件中使用路由了:

<template>
  <div>
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
    <router-view></router-view>
  </div>
</template>

这里,router-link 组件表示一个链接,to 属性表示链接的目标路径。router-view 组件表示要渲染的组件。

动态路由

有时,我们需要根据实际情况生成路由。这时,可以使用动态路由。

const router = new VueRouter({
  routes: [
    { path: '/user/:id', component: User }
  ]
})

在上面的配置中,:id 表示一个动态参数,可以通过 this.$route.params.id 获取。

嵌套路由

有时,一个路由还会有子路由。这时,可以使用嵌套路由。

const router = new VueRouter({
  routes: [
    {
      path: '/user/:id',
      component: User,
      children: [
        {
          path: 'profile',
          component: Profile
        },
        {
          path: 'posts',
          component: Posts
        }
      ]
    }
  ]
})

这里,User 是父组件,它有两个子组件 Profile 和 Posts。子组件的路径是相对于父组件的路径而言的。

导航守卫

有时,我们需要在路由切换之前或之后执行一些操作,比如登录检查、数据加载等。这时,可以使用导航守卫。

导航守卫有三个钩子函数:beforeEach、beforeRouteUpdate 和 afterEach。其中,beforeEach 表示在路由切换之前执行,beforeRouteUpdate 表示在当前路由复用时执行,afterEach 表示在路由切换之后执行。

const router = new VueRouter({
  routes: [
    { path: '/foo', component: Foo },
    { path: '/bar', component: Bar }
  ]
})

router.beforeEach((to, from, next) => {
  // ...
})

router.beforeRouteUpdate((to, from, next) => {
  // ...
})

router.afterEach((to, from) => {
  // ...
})

其中,to 表示将要跳转的路由,from 表示当前路由,next 表示执行下一步操作。

总结

Vue Router 是 Vue.js 的官方路由管理器,可以提高单页面应用的响应速度,提供了简单和灵活的 API,可以轻松管理不同组件之间的跳转和状态,支持动态路由和嵌套路由,同时还提供了导航守卫,方便实现登录检查、数据加载等功能。