Vue 探索之旅:第五站 — Vue 的路由管理

本章涵盖知识点

  • Vue Router 的基本概念
  • 路由的配置和使用
  • 动态路由和嵌套路由
  • 路由守卫

回顾

在第四篇文章中,我们详细探讨了 Vue 的计算属性和侦听器,以及生命周期钩子函数。我们了解到计算属性如何基于它们的依赖进行缓存,侦听器如何帮助我们观察和响应 Vue 实例上的数据变化。

Vue Router 的基本概念

什么是 Vue Router?

Vue Router 是 Vue 官方的路由管理器,用于构建单页面应用。它允许你通过 URL 来映射不同的组件,实现页面的动态加载和导航

为什么需要 Vue Router?

在现代 Web 应用中,用户期望页面能够快速响应,无需重新加载整个页面。Vue Router 通过前端路由解决了这个问题,它使得组件的切换变得无缝,提升了用户体验

路由的配置和使用

安装 Vue Router

首先,你需要安装 Vue Router:

bash 复制代码
npm install vue-router

创建路由

在 Vue Router 中,路由是通过router.addRoute方法配置的:

javascript 复制代码
// router.js
import Vue from "vue";
import Router from "vue-router";
import Home from "@/components/Home";
import About from "@/components/About";

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: "/",
      name: "Home",
      component: Home,
    },
    {
      path: "/about",
      name: "About",
      component: About,
    },
  ],
});

在 Vue 实例中使用路由

javascript 复制代码
// main.js
import Vue from "vue";
import App from "./App.vue";
import router from "./router";

new Vue({
  router,
  render: (h) => h(App),
}).$mount("#app");

模板中的路由链接

在 Vue 模板中,你可以使用<router-link>来创建导航链接:

html 复制代码
<router-link to="/home">Home</router-link>

<router-link to="/about">About</router-link>

动态路由和嵌套路由

动态路由

动态路由是指路由的某些部分是动态的,例如用户 ID 或文章的 slug:

javascript 复制代码
{
  path: '/user/:id',
  name: 'User',
  component: User
}

嵌套路由

Vue Router 支持嵌套路由,这使得你可以创建模块化的组件结构:

javascript 复制代码
{
  path: '/dashboard',
  component: Dashboard,
  children: [
    {
      path: 'posts',
      component: Posts
    },
    {
      path: 'users',
      component: Users
    }
  ]
}

路由守卫

什么是路由守卫?

路由守卫用于在路由跳转前后执行代码,可以用来检查用户认证状态、获取数据等。

全局路由守卫

javascript 复制代码
router.beforeEach((to, from, next) => {
  if (to.path === "/login" && isUserAuthenticated()) {
    next({ path: "/" });
  } else {
    next();
  }
});

组件内路由守卫

javascript 复制代码
export default {
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
  },
  beforeRouteUpdate(to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
  },
  beforeRouteLeave(to, from, next) {
    // 导航离开该组件的对应路由时调用
  },
};

实例演示

创建一个简单的 SPA

我们将创建一个简单的单页面应用,包含首页、关于页和用户个人页。

  1. 安装 Vue Router

    bash 复制代码
    npm install vue-router
  2. 配置路由

    javascript 复制代码
    // router.js
    import Vue from "vue";
    import Router from "vue-router";
    import Home from "@/components/Home";
    import About from "@/components/About";
    import User from "@/components/User";
    
    Vue.use(Router);
    
    export default new Router({
      mode: "history",
      routes: [
        { path: "/", component: Home },
        { path: "/about", component: About },
        { path: "/user/:id", component: User },
      ],
    });
  3. 在 Vue 实例中使用路由

    javascript 复制代码
    // main.js
    import Vue from "vue";
    import App from "./App.vue";
    import router from "./router";
    
    new Vue({
      router,
      render: (h) => h(App),
    }).$mount("#app");
  4. 模板中的路由链接

    html 复制代码
    <!-- App.vue -->
    <template>
      <div id="app">
        <router-link to="/" exact>Home</router-link>
        <router-link to="/about">About</router-link>
        <router-link to="/user/1">User 1</router-link>
        <router-view></router-view>
      </div>
    </template>

结语

通过本篇文章,我们学习了 Vue Router 的基本概念、配置和使用,以及如何实现动态路由和嵌套路由 。我们还探讨了路由守卫的概念,并提供了如何在 Vue 组件中使用它们的示例。这些知识点将帮助你构建一个功能完备的单页面应用。

互动交流

欢迎在文章下方留言,分享学习 Vue Router 的心得体会,或提出在学习过程中遇到的问题。我们将在后续的文章中提供解答和指导。


注意:本文内容会根据 Vue.js 和 Vue Router 的最新版本进行更新,确保提供的信息是最新的。同时,为了提高文章的可读性,我们使用了清晰的代码块和图表。希望本文能够帮助你深入理解 Vue 的路由管理,并为你的 Vue 学习之旅添砖加瓦。

相关推荐
工业互联网专业10 分钟前
毕业设计选题:基于ssm+vue+uniapp的校园水电费管理小程序
vue.js·小程序·uni-app·毕业设计·ssm·源码·课程设计
豆豆23 分钟前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
计算机学姐38 分钟前
基于SpringBoot+Vue的在线投票系统
java·vue.js·spring boot·后端·学习·intellij-idea·mybatis
twins35201 小时前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky2 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~2 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
安冬的码畜日常2 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺
杨荧2 小时前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
l1x1n02 小时前
No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史
前端·http·html
昨天;明天。今天。3 小时前
案例-任务清单
前端·javascript·css