vue入门:路由 router
文章目录
- 介绍
- 安装
- 配置
- 路由模式
- 嵌套路由
- 路由传参
- 编程式导航
- 路由懒加载
- 底层原理
介绍
vue2 vue router API
vue3 vue router API
Vue Router 是 Vue.js 的官方路由管理器,它允许你通过不同的 URL 显示不同的组件,从而实现单页面应用(SPA)。
Vue Router 是构建单页面应用的核心工具,通过路由管理不同的页面组件,实现页面的切换而无需重新加载整个页面,从而提高用户体验和性能。
路由(Route) :路由是 Vue Router 中的基本单元,它定义了路径与组件之间的映射关系。
例如,当用户访问 /home 路径时,路由会将对应的 Home 组件渲染到页面上。路由可以包含路径参数、查询参数等,用于传递动态数据。
路由表(Routes) :路由表是一个数组,包含了所有路由的定义。
每个路由对象通常包含 path(路径)和 component(组件)两个属性。例如:
const routes = [{ path: '/', component: Home },{ path: '/about', component: About },{ path: '/user/:id', component: User }
];
在这个例子中,
Home 组件对应根路径 /,About 组件对应/about 路径,而/user/:id是一个带有动态参数的路由,id 是路径参数,可以通过 this.$route.params.id 在组件中获取。
导航守卫(Navigation Guards) :导航守卫是 Vue Router 提供的一种机制,用于在路由跳转过程中执行一些逻辑判断或操作。
它可以在路由跳转之前(前置守卫)、跳转之后(后置守卫)或在路由跳转过程中(全局守卫)进行拦截和处理。
例如,可以使用前置守卫 beforeEach 来实现登录验证,如果用户未登录,则跳转到登录页面
const router = new VueRouter({ ... });
router.beforeEach((to, from, next) => {if (to.path === '/login') {next(); // 如果目标路径是登录页面,直接放行} else {const isAuthenticated = checkAuth(); // 假设有一个函数用于检查用户是否登录if (isAuthenticated) {next(); // 如果用户已登录,放行} else {next('/login'); // 如果用户未登录,跳转到登录页面}}
});
安装
npm install vue-router
配置
在 Vue 项目中,通常会在一个单独的文件(如 router/index.js)中配置路由。以下是基本配置的步骤:
- 引入 Vue 和 Vue Router,并使用 Vue.use() 将 Vue Router 安装为 Vue 的插件:
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
- 定义路由组件:
import Home from '../components/Home.vue';
import About from '../components/About.vue';# 创建路由表:
const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];# 创建并配置路由实例,然后挂载到 Vue 实例上:
const router = new VueRouter({mode: 'history', // 设置路由模式,默认是 hash 模式routes // (缩写)相当于 routes: routes
});
export default router;
在 Vue 实例中使用路由:
import Vue from 'vue';
import App from '../App.vue';
import router from './router';
new Vue({router,render: h => h(App)
}).$mount('#app');
路由模式
hash 模式 :
这是 Vue Router 的默认模式。在这种模式下,URL 中会包含一个 #,例如 http://example.com/#/home。它的原理是利用浏览器的 hashchange 事件来监听 URL 的变化,并且不会向服务器发送请求。优点是兼容性好,不需要服务器配置支持;缺点是 URL 中的 # 可能会影响美观。
history 模式 :
这种模式下,URL 是正常的路径形式,例如 http://example.com/home。它利用了 HTML5 的 History API(pushState 和 replaceState)来实现 URL 的变化,而不会重新加载页面。优点是 URL 更美观,符合传统的网页路径形式;缺点是需要服务器配置支持,因为服务器需要正确处理所有路由对应的路径,否则可能会返回 404 错误。
嵌套路由
Vue Router 支持嵌套路由,允许在一个组件内部定义子路由。例如,有一个 User 组件,它包含多个子页面,如 Profile 和 Posts,可以通过嵌套路由来实现:
const routes = [{// 当 /user/:id/profile 匹配成功,// UserProfile 会被渲染在 User 的 <router-view> 中path: '/user/:id',component: User,children: [{ path: 'profile', component: Profile },{ path: 'posts', component: Posts }]}
];
在 User 组件中,可以通过 <router-view> 来渲染子路由对应的组件:
<template><div><h1>User</h1><router-view></router-view></div>
</template>
这样,当访问
/user/1/profile时,Profile组件会被渲染到User组件的<router-view>中。
路由视图 <router-view>
<template><div id="app"><router-view/></div>
</template>
导航链接 <router-link>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link><!-- 使用命名路由 -->
<router-link :to="{ name: 'About' }">About</router-link><!-- 路由导航到 /user/123 路径 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
路由传参
路径参数 :通过在路由路径中定义参数来传递数据,例如 /user/:id。在组件中可以通过 this.$route.params 获取路径参数。例如:
// 路由定义
{ path: '/user/:id', component: User }// 在 User 组件中获取参数
export default {mounted() {const userId = this.$route.params.id;console.log(userId);}
};
查询参数 :通过 URL 的查询字符串来传递参数,例如 /user?id=1。在组件中可以通过 this.$route.query 获取查询参数。例如:
// 在组件中获取查询参数
export default {mounted() {const userId = this.$route.query.id;console.log(userId);}
};
编程式导航
Vue Router 提供了编程式导航的方法,允许在代码中直接操作路由跳转,而不仅仅是通过 <router-link>。例如:
// 跳转到指定路径
this.$router.push('/about');
// 带参数的跳转
this.$router.push({ path: '/user', query: { id: 1 } });
// 带路径参数的跳转
this.$router.push({ name: 'user', params: { id: 1 } });
// 替换当前路由,不会添加到历史记录
this.$router.replace('/home');
// 后退到上一个路由
this.$router.go(-1);
路由懒加载
为了提高应用的性能,可以通过路由懒加载来实现按需加载组件。这样可以减少初始加载时间,只在需要时才加载对应的组件代码。例如:
const routes = [{path: '/',component: () => import('../components/Home.vue')},{path: '/about',component: () => import('../components/About.vue')}
];
底层原理

相关文章:
vue入门:路由 router
文章目录 介绍安装配置路由模式嵌套路由路由传参编程式导航路由懒加载 底层原理 介绍 vue2 vue router API vue3 vue router API Vue Router 是 Vue.js 的官方路由管理器,它允许你通过不同的 URL 显示不同的组件,从而实现单页面应用(SPA&a…...
JVM详解(曼波脑图版)
(✪ω✪)ノ 好哒!曼波会用最可爱的比喻给小白同学讲解JVM,准备好开启奇妙旅程了吗?(๑˃̵ᴗ˂̵)و 📌 思维导图 ━━━━━━━━━━━━━━━━━━━ 🍎 JVM是什么?(苹果式比…...
Prometheus thanos架构
Thanos 是一个用于扩展 Prometheus 的高可用性和长期存储的解决方案。它通过整合多个 Prometheus 实例,提供了全局查询、长期存储、以及高可用性的能力。Thanos 的架构主要由以下几个核心组件组成: 1. Sidecar 功能: Sidecar 是与每个 Prom…...
进程(Process)和进程管理
李升伟 整理 进程和进程管理是操作系统的核心概念之一,涉及计算机资源的分配、调度和执行控制。以下是详细的解释: 1. 进程的定义 进程(Process)是正在执行的程序实例,是操作系统进行资源分配和调度的基本单位。它包…...
更强的视觉 AI!更智能的多模态助手!Qwen2.5-VL-32B-Instruct-AWQ 来袭
Qwen2.5-VL-32B-Instruct 是阿里巴巴通义千问团队于 2025 年 3 月 24 日开源的多模态大模型,基于 Apache 2.0 协议发布。该模型在 Qwen2.5-VL 系列的基础上,通过强化学习技术优化,以 32B 参数规模实现了多模态能力的突破。 核心特性升级&…...
Linux系统中的Perf总结
Linux系统中的Perf总结 Perf 是一个集成在 Linux 内核中的强大性能分析工具,在 Ubuntu 系统上尤为实用。它可以帮助用户监控和分析 CPU、内存、I/O 等性能指标。本文将一步步详解 Perf 在 Ubuntu 系统中的安装、使用方法及进阶技巧,带你从入门走向精通。…...
每日算法-250417
每日算法 - 20250417 记录今天的算法学习过程,包含三道 LeetCode 题目。 1005. K 次取反后最大化的数组和 题目 思路 贪心 解题过程 想要获得最大的数组和,我们的目标是尽可能地增大数组元素的总和。一种有效的贪心策略是:每次选择数组中绝…...
16.4B参数仅激活2.8B!Kimi-VL-A3B开源:长文本、多模态、低成本的AI全能选手
近日,月之暗面(Moonshot AI)开源了Kimi-VL系列模型,包含Kimi-VL-A3B-Instruct(指令调优版)和Kimi-VL-A3B-Thinking(推理增强版)。这两款模型以总参数16.4B、激活参数仅2.8B的轻量化设…...
山东大学软件学院创新项目实训开发日志(17)之中医知识历史问答历史对话查看功能完善
本次完善了历史对话的查看功能,可以让其正常显示标题 后端:在conversationDTO功能构造方法添加title 前端:在历时会话按钮添加标题title即可 前端效果展示,成功(^-^)V:...
关于Java集合中对象字段的不同排序实现方式
📊 关于Java集合中对象字段的不同排序实现方式 #Java集合 #排序算法 #Comparator #性能优化 一、排序基础:两种核心方式对比 方式Comparable接口Comparator接口实现位置目标类内部实现独立类或匿名内部类排序逻辑自然排序(固定规则…...
ZKmall开源商城静态资源管理:Nginx 配置与优化
ZKmall开源商城作为电商平台,其商品图片、前端资源等静态内容的高效管理与分发直接影响用户体验和系统性能。基于Nginx的静态资源管理方案,结合动静分离、缓存优化、安全加固、性能调优四大核心策略,可显著提升平台响应速度与稳定性。以下是具…...
Google Gemini 系列AI模型 的详细解析,涵盖其技术特点、版本差异、应用场景及优势
以下是 Google Gemini 系列AI模型 的详细解析,涵盖其技术特点、版本差异、应用场景及优势: 1. Gemini 系列概述 发布背景: Google于2023年推出 Gemini 系列模型,作为其多模态大模型的里程碑,旨在结合文本、图像、音频…...
量子通信应用:量子安全物联网(三)协议融合
第一部分:引言与概述 1.1 量子安全物联网的背景与必要性 随着物联网(IoT)设备的爆炸式增长(预计2030年全球连接设备超750亿台),传统安全机制(如RSA、ECC加密)正面临量子计算的颠覆性威胁。量子计算机的Shor算法可在多项式时间内破解非对称加密体系,而Grover算法则对…...
鸿蒙API15 “一多开发”适配:解锁黄金三角法则,开启高效开发新旅程
一、引言 在万物互联的时代浪潮中,鸿蒙操作系统以其独特的 “一多开发” 理念,为开发者打开了一扇通往全场景应用开发的新大门。“一多开发”,即一次开发,多端部署 ,旨在让开发者通过一套代码工程,就能高效…...
量子计算:开启未来科技之门的钥匙
在当今科技飞速发展的时代,量子计算正逐渐从实验室走向实际应用,成为全球科技领域的焦点之一。它有望为众多行业带来前所未有的变革,从密码学、药物研发到金融风险评估等,量子计算的潜力不可限量。 一、量子计算的原理 量子计算基…...
k230学习笔记-疑难点(1)
1.出现boot failed with exit code 19: 需要将k230开发板的btoot0拨到ON 2.出现boot failed with exit code 13: 说明k230开发板的固件烧录已经丢失,需要重新烧录 *** 注意重新烧录时需要将btoot0重新拨到OFF,才会弹出加载固件需要的通用串行总线&…...
驱动-自旋锁
前面原子操作进行了讲解, 并使用原子整形操作对并发与竞争实验进行了改进,但是原子操作只能对整形变量或者位进行保护, 而对于结构体或者其他类型的共享资源, 原子操作就力不从心了, 这时候就轮到自旋锁的出场了。 两个…...
10.(vue3.x+vite)div实现tooltip功能(css实现)
1:效果截图 2:代码实现 <template><div><div class="tooltip" style="margin-top: 20%; margin-left: 20%; background-color: blueviolet; color: white;...
使WebSocket 稳定可靠,需要考虑的方向
文章目录 1. 连接管理2. 心跳检测3. 重连机制4. 消息队列5. 错误处理6. 资源管理7. 安全性8. 状态同步 示例代码1. 添加依赖2. WebSocket 客户端实现代码注释功能标注3. 安卓端使用MainActivity.java布局文件(activity_main.xml) 4. 后端(Fla…...
Linux:进程:进程调度
进程在CPU上运行具有以下特性: 竞争、独⽴、并⾏、并发 竞争性:系统进程数⽬众多,⽽CPU资源很少甚至只有一个,所以进程之间是具有竞争属性的。为 了⾼效完成任务,更合理竞争相关资源,便具有了优先级 独⽴性: 为了避…...
Stable Diffusion 图像生成 GUI 应用:图像缩放等五个优化——SD界面学习记录
本篇续前面Stable DiffusionPyqt5实现图像生成和管理界面,链接如下: Stable DiffusionPyqt5: 实现图像生成与管理界面(带保存 历史记录 删除功能)——我的实验记录(结尾附系统效果图)-CSDN博客…...
职坐标解码互联网行业转型发展新动能
当前,互联网行业正以前所未有的速度重塑全球产业格局。工信部最新数据显示,我国互联网企业营收连续三年保持双位数增长,其中百强企业在人工智能、物联网等领域的投入强度同比提升40%,展现出强劲的技术引领力。与此同时,…...
【含文档+PPT+源码】基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现
课程目标: 教你从零开始部署运行项目,学习环境搭建、项目导入及部署,含项目源码、文档、数据库、软件等资料 课程简介: 本课程演示的是一款基于微信小程序的非遗文化黄梅戏宣传平台的设计与实现,主要针对计算机相关…...
Causal Attention的底层原理
Causal Attention Transformer的Decoder中最显著的结构是Casual Attention。 通过本篇文章,你将学会 Casual Attention的机制原理 Casual Attention在TensorFlow中的实现原理 如何快速地保存并打印TensorFlow中模型已经训练好的参数 如何实现Transformer的Dec…...
深入理解类:ArkTS面向对象编程的核心概念
# 深入理解类:ArkTS面向对象编程的核心概念 在编程世界里,面向对象编程(OOP)是一种强大的编程范式,而类则是OOP的核心构建块。在ArkTS语言中,类的设计和使用对于构建复杂、可维护的应用程序至关重要。今天…...
AI 驱动下的后端开发架构革命:从智能协同体系
AI 驱动下的后端开发架构革命:从智能协同体系 一、引言:AI 重构后端开发范式 在 2025 年的企业级技术演进中,人工智能正从辅助工具升级为核心架构要素。根据 Gartner《2025 智能技术栈成熟度报告》,传统 "人力编码 硬规则…...
vue3 Ts axios 封装
vue3 Ts axios 封装 axios的封装 import axios, { AxiosError, AxiosInstance, InternalAxiosRequestConfig, AxiosResponse, AxiosRequestConfig, AxiosHeaders } from axios import qs from qs import { config } from ./config import { ElMessage } from element-plus// …...
CyberAgentAILab 开源数字人项目TANGO,heygen的开源版来了~
简介 TANGO 是 CyberAgentAILab 开源的一项前沿研究成果,其初衷在于探索高效生成模型在实际应用场景中的表现。项目诞生于 CyberAgent 在整合创意与人工智能的实践中,旨在为数字内容生成、交互和实时渲染等领域提供一个高性能、模块化、可扩展的解决方案…...
ROS ROS2 机器人深度相机激光雷达多传感器标定工具箱入门教程(一)
系列文章目录 目录 系列文章目录 前言 一、安装 1.1 ROS 2 官方软件包 二、教程 2.1 标定配置器 2.1.1 机器人选项 2.1.2.1 外参相机-激光雷达标定 2.1.2.2 外参激光雷达-激光雷达标定 2.1.2.3 外参相机参照标定 2.1.2.4 外参激光雷达-参考标定 2.2 外参照相机-激…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(6):ながら 一边。。一边
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(6):ながら 一边。。一边 1、前言(1)情况说明(2)工程师的信仰 2、知识点(1)ながら1)一边。。一边2࿰…...
