VueRouter的使用技巧和最佳实践

Vue.js 是一款轻量级MVVM框架,可以帮助我们非常方便的构建单页应用,而 Vue Router 可以帮助我们实现单页应用的路由功能。

一、路由基础

1、创建Router实例

在使用Vue Router 之前,我们需要先创建一个Router实例。在main.js文件中引入Vue和Vue Router,并使用use()方法安装插件

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

Vue.use(VueRouter)

const router = new VueRouter({
    routes: [...] // 路由配置
})

代码解释:

  • 首先我们需要引入Vue和VueRouter
  • 然后调用Vue.use()方法安装VueRouter插件
  • 创建一个VueRouter实例,并传递routes参数,routes是一个路由配置数组,包含多个路由对象配置
  • 在最后导出VueRouter实例,以便在其他地方使用

2、路由配置

在创建Router实例的时候,我们需要配置routes参数。routes是一个路由配置数组,包含多个路由对象配置

const routes = [
  {
    path: '/home',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: About
  }
]

代码解释:

  • 我们定义了2个路由对象,即 /home 和 /about
  • 每个路由对象包含3个属性:path、name和component
  • path代表路由路径,name代表路由名称,component代表路由要渲染的组件

3、路由嵌套

在一些大型的应用中,我们需要使用到路由嵌套,这样能够更好的管理我们的路由配置。Router 嵌套还可以实现多人协同作业,路由规则按组或模块分开,不同的人维护不同的文件,避免人为冲突。

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
    children: [
      {
        path: 'profile',
        name: 'Profile',
        component: Profile
      },
      {
        path: 'dashboard',
        name: 'Dashboard',
        component: Dashboard
      }
    ]
  }
]

代码解释:

  • 在主路由下,我们添加了children数组,包含两个子路由
  • 每个子路由不再以/开头,而是以父路由的路径/作为前缀,同时子路由的component也是自己的组件。
  • 比如在这个例子中,子路由的路径就是 /profile 和 /dashboard ,对应的组件是 Profile 和 Dashboard

二、导航

1、跳转到路由

我们可以通过 router-link 标签在 Vue 模板中声明一个链接,使用户跳转到不同的路由。Vue Router 根据 link 的 href 属性自动激活对应的路由,Vue 会自动阻止默认事件的发生,所以不需要使用 v-on:click.prevent

<router-link to="/home">Home</router-link>

代码解释:

  • router-link 是Vue Router 提供的组件,to属性是路由路径,对应的是上文配置的 path 属性

2、编程式导航

我们也可以在代码中进行路由导航,比如跳转到另外一个路由,并且路径可以动态设置。这种方式叫做编程式导航

router.push('/home')

代码解释:

  • 使用 router.push 进行编程式导航,以 /home 为例

3、参数传递

在 Vue Router 中,可以通过在路由路径中加入参数来传递参数。这些参数可以是必须的,也可以是可选的。在路由配置项中,可以通过:来指定参数名,如 /user/:id 中的 :id

const routes = [
  {
    path: '/user/:id',
    name: 'User',
    component: User
  }
]

代码解释:

  • 在路由配置中,我们使用 /user/:id 定义了一个路由,其中 :id 表示参数
  • 在路由链接中,可以使用 $route.params.id 获取传递的参数
  • 在编程式导航中,可以使用 params 属性传递参数
// links
<router-link :to="'/user/' + user.id">{{ user.name }}</router-link>

// programmatic navigation
this.$router.push({ name: 'User', params: { id: this.userId } })

三、路由钩子

路由钩子就是在路由导航过程中的一些钩子函数,可以控制路由跳转、路由数据变化等方面的行为

1、全局前置守卫

全局前置守卫是在路由导航之前调用的,可以用于身份验证,日志记录等。多个全局前置守卫会按照注册顺序依次执行

router.beforeEach((to, from, next) => {
  // to 和 from 都是路由对象
  // to 是导航到的路由对象
  // from 是导航来源的路由对象
  // next 是一个函数,调用该函数,才会执行导航操作
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // 判断是否需要身份验证,未登录则跳转到登录页
    if (!auth.loggedIn()) {
      next({
        path: '/login',
        query: { redirect: to.fullPath }
      })
    } else {
      next()
    }
  } else {
    next() // 不需要身份验证
  }
})

代码解释:

  • 在全局前置守卫中,我们可以根据 to 和 from 来判断是否需要身份验证
  • 如果需要身份验证,且未登录,则跳转到登录页面,可以使用 next({path: ‘/login’}) 转到登录页面
  • 如果不需要身份验证,直接调用 next()

2、全局后置钩子

全局后置钩子是在路由导航之后调用的,无法取消导航行为,也无法控制路由跳转。只能接收到路由导航的成功或失败。

router.afterEach((to, from) => {
  // to 和 from 都是路由对象
  // 这里可以添加一些日志记录等操作
})

3、组件内路由钩子

除了全局路由钩子,Vue Router 还提供了多个组件内的路由钩子函数,它们是定义在组件内部的方法,可以在特定组件内使用

export default {
  beforeRouteEnter (to, from, next) {
    // 在路由进入该组件前调用
    // 无法访问组件实例 this
    next() // 通过调用next()执行路由操作
  },

  beforeRouteUpdate (to, from, next) {
    // 在当前组件重新渲染时调用
    // 可以访问组件实例 this
    next()
  },

  beforeRouteLeave (to, from, next) {
    // 在路由离开该组件时调用
    // 可以访问组件实例 this
    next()
  }
}

四、代码拆分

在一个单页应用中,随着应用变得越来越大,JS 文件也会越来越大,这时候我们可以将不同的路由拆分成不同的代码块,仅在需要的时候再加载对应的组件。

const Home = () => import('./views/Home.vue')
const About = () => import('./views/About.vue')

const routes = [
  {
    path: '/home',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    component: About
  }
]

代码解释:

  • 在路由组件中使用动态导入语法,即使用 () => import(…) 的方式导入组件,在需要的时候才会加载。

结语

以上是关于VueRouter使用技巧和最佳实践的详细阐述,包括路由基础、导航、路由钩子、代码拆分等方面。通过灵活使用VueRouter,能够让我们更好的构建单页应用。

原创文章,作者:JIQH,如若转载,请注明出处:https://www.506064.com/n/149358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JIQHJIQH
上一篇 2024-11-04 17:51
下一篇 2024-11-04 17:51

相关推荐

  • Vue ref和v-for的使用技巧

    本文将从多个方面对Vue中的ref和v-for进行详细阐述,以帮助读者更好地掌握相关知识。 一、ref的使用 在Vue中,ref用于给某个元素或组件注册引用信息,可以在其他方法中通…

    编程 2025-04-25
  • Unity Normalized的使用技巧

    Unity是一款非常流行的游戏引擎,它可以用来制作各种不同类型的游戏。其中,Normalized这个概念在Unity中是非常重要的,它对于游戏的运动学、物理模拟等方面都有很大的影响…

    编程 2025-04-24
  • 安装IntelliJ IDEA教程及使用技巧

    一、下载安装 IntelliJ IDEA是一款功能强大的Java集成开发环境。下载安装前,需要确认所下载版本适合你的操作系统。下载完成后,简单的一步步安装即可。 1. 下载 在id…

    编程 2025-04-24
  • jQuery创建节点的使用技巧

    一、高效创建节点的基础知识 jQuery是建立在JavaScript之上的一个强大而灵活的库,它通过一些简单的API,简化了JavaScript DOM操作的繁琐和复杂度。通过使用…

    编程 2025-04-22
  • 深入了解rebar:从框架搭建到使用技巧

    一、rebar是什么 rebar是一个erlang程序的构建工具,它使用erlang的make系统对erlang的应用程序进行编译和管理。与makefile相比,rebar使用简单…

    编程 2025-02-01
  • 使用技巧|如何提高WordPress后台页面访问量

    WordPress是一个世界范围内广泛使用的网站创建工具。使用WordPress管理博客和网站是常见的任务之一,WordPress后台是管理博客和网站的一个关键页面。如何提高Wor…

    编程 2025-02-01
  • 启动台快捷键的使用技巧

    启动台快捷键是操作系统中的一个非常重要的快捷键,通过启动台快捷键可以快速启动应用程序。本文将介绍一些有关启动台快捷键的使用技巧,帮助你更加高效地使用它。 一、创建启动台快捷键 在 …

    编程 2025-01-21
  • Python中的map及get方法使用技巧

    一、map函数 在Python中,map()函数是一个非常强大且有用的函数,它可以将一个函数作用于一个序列中的所有元素,并将结果作为新的序列返回。 例如,如果你有一个数值列表,并希…

    编程 2025-01-16
  • Google高级搜索的使用技巧

    一、搜索结果的过滤 Google高级搜索提供了许多过滤搜索结果的选项,让用户可以更加精确地找到自己需要的信息。其中常用的过滤选项有: 语言:用户可根据自己的语言需求选择搜索结果的语…

    编程 2025-01-14
  • Linux运维工程师必备:Shell循环语句使用技巧

    Shell脚本编程是Linux运维工程师必备的一项技能。Shell提供了许多类型的循环,如for、while、until等,可以帮助我们在处理大批量任务时减少代码量,提高工作效率。…

    编程 2025-01-13

发表回复

登录后才能评论