【vue教程】五. Vue 的路由管理

server/2024/9/24 14:53:10/

目录

    • 往期列表
    • 本章涵盖知识点
    • 回顾
    • Vue Router 的基本概念
      • 什么是 Vue Router?
      • 为什么需要 Vue Router?
    • 路由的配置和使用
      • 安装 Vue Router
      • 创建路由
      • 在 Vue 实例中使用路由
      • 模板中的路由链接
    • 动态路由和嵌套路由
      • 动态路由
      • 嵌套路由
    • 路由守卫
      • 什么是路由守卫?
      • 全局路由守卫
      • 组件内路由守卫
    • 实例演示
      • 创建一个简单的 SPA
    • 结语

往期列表

  • 【vue教程】一. 环境搭建与代码规范配置
  • 【vue教程】二. Vue特性原理详解
  • 【vue教程】三. 组件复用和通信(7 种方式)
  • 【vue教程】四. Vue 计算属性和侦听器

本章涵盖知识点

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

回顾

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

Vue Router 的基本概念

什么是 Vue Router?

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

为什么需要 Vue Router?

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

路由的配置和使用

安装 Vue Router

首先,你需要安装 Vue Router:

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>来创建导航链接:

<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

    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. 模板中的路由链接

    <!-- 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 组件中使用它们的示例。这些知识点将帮助你构建一个功能完备的单页面应用。


http://www.ppmy.cn/server/99726.html

相关文章

如何确保场外个股期权交易的安全?

如何确保场外个股期权交易的安全&#xff1f;投资者可以采取以下措施&#xff0c;以提高交易的安全性和减少风险&#xff1a; 增强知识储备&#xff1a;深入学习期权的基础知识&#xff0c;包括不同类型的期权、它们的权利和义务、定价方式以及风险特性&#xff0c;从而提升自…

Linux安全与高级应用(七)深入Linux Shell脚本编程:循环与分支结构的高级应用

文章目录 深入Linux Shell脚本编程&#xff1a;循环与分支结构的高级应用一、循环结构详解1. for循环1.1 应用示例&#xff1a;检查主机状态 2. while循环2.1 应用示例&#xff1a;猜价格游戏 二、分支结构详解1. if语句1.1 单分支结构1.2 双分支结构1.3 多分支结构 2. case语句…

C语言 ——— 写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串

目录 题目要求 代码思路 代码实现 题目要求 写一个函数&#xff0c;判断一个字符串是否为另外一个字符串旋转之后的字符串 例如 s1 "AABCD" &#xff1b;s2 "BCDAA" &#xff0c;返回1 s1 "AABcd" &#xff1b;s2 "BCDAA" …

Java 多线程练习 (2024.8.12)

MultiProcessingExercise1 package MultiProcessingExercise20240812;public class MultiProcessingExercise1 {public static void main(String[] args) {// 设置、获取线程名称// 如果使用继承Thread类的方式实现多线程&#xff0c;那么可以直接通过set和get方法进行设置和获…

初识自然语言处理NLP

文章目录 1、简介2、自然语言处理的发展简史3、语言学理论句法学&#xff08;Syntax&#xff09;语义学&#xff08;Semantics&#xff09;语用学&#xff08;Pragmatics&#xff09;形态学&#xff08;Morphology&#xff09; 4、统计与机器学习方法n-gram 模型隐马尔可夫模型…

AI大模型开发——2.深度学习基础(1)

学习大模型开发之前&#xff0c;我们需要有足够的储备知识&#xff0c;类似于基础的python语法相信大家也都是十分熟悉了。所以笔者也是考虑了几天决定先给大家补充一些深度学习知识。 首先问大家一个问题&#xff0c;学习大模型之前为什么要先学习深度学习知识呢&#xff1f; …

Spring Boot 常用设计模式

在Spring Boot中&#xff0c;常用的设计模式多种多样&#xff0c;这些设计模式不仅帮助维护了代码的清晰度和灵活性&#xff0c;还使得框架易于扩展和维护。以下是一些在Spring Boot中常用的设计模式&#xff1a; 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1…

坐标变换矩阵

在高级驾驶辅助系统&#xff08;ADAS&#xff09;领域&#xff0c;存在多种常用的坐标系&#xff1a;雷达Lidar坐标系、车辆坐标系、相机坐标系、图像坐标系。 旋转变换矩阵&#xff08;Rotation Matrix&#xff09; 在二维平面xoy上&#xff0c;由绿色坐标系逆时针旋转θ到蓝…