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…...
运营商二要素认证 API 接口具有哪些的好处?
目录 一、提高认证准确性 1.数据真实性可靠 2.实时验证效率高 3.双重验证更精准 4.多场景适用性强 5.动态更新数据准 二、增强安全性 1.防止身份冒用 2.抵御欺诈行为 3.保障数据安全 4.强化业务安全 5.支持安全审计与追溯 三、提升用户体验 1.操作简便快捷 2.认…...
从GPT到Gemini 大模型进化史
从GPT到Gemini:大模型进化史 在过去的几年里,人工智能领域经历了翻天覆地的变化,其中最引人注目的莫过于大规模语言模型的发展。从最初的GPT系列到最近的Gemini,这些模型不仅在技术上取得了重大突破,还在实际应用中展…...
大模型时代下全场景数据消费平台的智能BI—Quick BI深度解析
一、前言 在数字化转型浪潮中,BI工具已成为企业数据驱动决策的核心引擎。Quick BI作为阿里云旗下的全场景数据消费平台,以其"让业务决策触手可及"的理念在市场中占据一席之地。通过Quick BI可以让企业的数据资产快速的流动起来,通…...
高防ip的原理
高防IP(高防御IP地址)是一种专门用于抵御大规模网络攻击的防护服务,其核心原理是通过流量清洗、协议分析与智能调度等技术,将恶意流量与正常业务流量分离,保障目标服务器或应用的可用性。以下是其核心技术原理…...
微服务4--服务网关
网关 在微服务架构中,一个系统会被拆分为很多个微服务,那么作为客户端要如何去调用 这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。 这样的架构,会存在着诸…...
容器docker入门学习
这里写目录标题 容器容器的软件厂商 dockerdocker引擎 虚拟化虚拟化技术 docker安装详解1、安装检查2、安装yum相关的工具3、安装docker-ce软件4、查看docker版本5、启动docker服务6、设置docker开机启动7、查看有哪些docker容器运行进程8、查看容器里有哪些镜像9、下载nginx软…...
Flink调优面试题及参考答案20道
1. 如何优化Flink的Checkpoint机制? 答案: 增大Checkpoint间隔:减少对作业吞吐量的影响(如从1分钟调整为5分钟)。 使用增量Checkpoint(RocksDB状态后端):仅上传变化的文件,降低IO压力。 调整超时时间:checkpointTimeout避免因短暂反压导致失败。 对齐优化:使用非对…...
【音视频】MP4解封装
一、概述 实现了读取mp4文件,提取出h264和aac文件,可以直接播放 二、实现过程 准备文件 在build路径下添加mp4文件 同时,添加main函数参数,表示输入文件和输出文件 打开文件 打开输入文件,初始化格式上下文 char…...
全球6G大会 | 紫光展锐用“芯”推动空天地一体创新纪元
近日,全球6G技术与产业生态大会(简称“全球6G技术大会”)在南京召开。紫光展锐应邀出席“空天地一体化与数字低空”平行论坛,并从6G通信、感知、定位等多方面分享了紫光展锐在6G前沿科技领域的创新理念及在空天地一体化技术方面的…...
C++学习:六个月从基础到就业——面向对象编程:虚函数与抽象类
C学习:六个月从基础到就业——面向对象编程:虚函数与抽象类 本文是我C学习之旅系列的第十四篇技术文章,主要探讨C中的虚函数与抽象类,这是实现多态性的核心机制。查看完整系列目录了解更多内容。 引言 多态性是面向对象编程的三大…...
git分支操作
一、git branch:分支管理 1. 查看分支 git branch # 查看本地分支(* 表示当前分支) git branch -a # 查看所有分支(本地远程) git branch -vv # 查看分支跟踪关系 2. 创建/删除分支…...
IDEA 中 Scala 项目远程连接虚拟机 Spark 环境
IDEA 中 Scala 项目远程连接虚拟机 Spark 环境 1. 环境准备 确保虚拟机 Spark 环境正常运行 虚拟机中已安装并启动 Spark记录虚拟机的 IP 地址和 Spark 端口(默认 7077)确保虚拟机防火墙允许相关端口访问 本地 IDEA 环境配置 安装 Scala 插件安装 Spar…...
2. 判断列表元素的单一性
【问题描述】编写程序,判断一个列表中的各个元素如果相同(例如[2,2,2,2,2]),则输出True,不相同(例如[1,2,3,2,3])则输出False。 【输入形式】ainput() 【输出形式】用print()函数 【样例输入】 [2,2,2,2,2] 【样例输出】 True 【样例输入】 [1,2,…...
King3399(ubuntu文件系统)GDB/GDBServer调试配置
0 引言 最近在用king3399进行驱动开发,即使是一些简单的外设也不免反复修改与烧录,若仅仅通过printk这种方法对程序进行打印调试,其过程也是相当复杂,因此想通过GDB/GDBServer的方式进行调试,本文主要是记录配置过程的…...
机器学习简介
目录 机器学习简介机器学习的大致分类监督学习 (Supervised learning)RegressionClassification / Predict categories 无监督学习 (Unsupervised learning)Clustering algorithmAnomaly DetectionDimensionality Reduction对比总结 强化学习 (Reinforcement learning)强化学习…...
k8s调度器:如何控制Pod的分布
引言:从“随机分配”到“智能调度” 想象你的Kubernetes集群是一个繁忙的物流中心,节点(Node)是仓库,Pod是货物。 默认调度器 就像一名普通分拣员,简单地将货物塞进最近的仓库,可能导致某些仓…...
机器学习在催化剂设计中的应用理论加实操
背景介绍 数据智能驱动,催化理性设计新纪元 催化材料设计是能源转化、化工合成及环境治理等领域的核心挑战。传统催化研究主要依赖密度泛函理论(DFT)计算与实验试错法,通过量子力学模拟揭示活性位点电子结构,结合高通量实验筛选候选…...
Spring Cloud Alibaba微服务-微服务介绍和搭建
1. 课程介绍 单体服务中有订单,用户,库存, 两个缺陷: a. 是以应用的维度进行负载均衡,资源占用大 b. 当其中一个模块宕机,整个应用就不能用了; nacos;ribbon,loadBa…...
量子通信应用:量子安全物联网(三)协议融合
第一部分:引言与概述 1.1 量子安全物联网的背景与必要性 随着物联网(IoT)设备的爆炸式增长(预计2030年全球连接设备超750亿台),传统安全机制(如RSA、ECC加密)正面临量子计算的颠覆性威胁。量子计算机的Shor算法可在多项式时间内破解非对称加密体系,而Grover算法则对…...
JUC学习(1) 线程和进程
2.线程和进程 线程,进程进程:一个程序。 一个进程往往可以包含多个线程,至少包含一个! Java默认有2个线程 mainGC 对于Java而言,三种开启线程的方式 ThreadRunnableCallable Java真的可以开启线程吗 不可以&am…...
Java基础系列-LinkedList源码解析
文章目录 简介LinkedList 插入和删除元素的时间复杂度?LinkedList 为什么不能实现 RandomAccess 接口? LinkedList 源码分析Node 定义初始化获取元素插入元素删除元素遍历链表 简介 LinkedList 是一个基于双向链表实现的集合类,经常被拿来和…...
pycharm无法识别到本地python的conda环境解决方法
问题一 现象描述: 本地已经安装了conda,但在pycharm中选择conda环境却识别不到, 解决方法:手动输入conda path,点击R eload environments基本就能修复,比如我的路径如下 /Users/test/conda/miniconda3/b…...
【机器人创新创业应需明确产品定位与方向指南】
机器人领域的创新创业, 需要对公司和产品的定位和生态进行深入思考, 明确其定位与发展目标, 明确产品在是为G、为B还是为C进行服务。 本文引用地址:https://www.eepw.com.cn/article/202504/469401.htm 超前的、探索性的创新技术一般是面向G端, 而不是面向B端或者C…...
《似锦》:画饼之—你画给我我画给你
甄珩,看似刚正不阿,正得发邪,一板一眼的严肃角色 可是每次余七和甄珩在一起,就是一部行走的喜剧,众网友称他们为“甄儿八锦” 《似锦》剧集精彩片段:甄珩余七爆笑修罗场(四) 谁懂这…...
鸿蒙系统开发中路由使用详解
鸿蒙系统提供了两种主要的路由机制:传统的Router模块和组件化的Navigation容器。下面我将详细介绍这两种路由方式的使用方法、区别以及实际应用示例。 一、Router模块基础使用 Router是鸿蒙早期提供的页面路由模块,通过URL实现页面跳转和数据传递。 1…...
拖拉拽效果加点击事件
<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>自由拖拽点击元素</title><style>body {margin: 0;height: 100vh;display: flex;justify-content: center;align-items: center;backgr…...
Ubuntu利用docker搭建Java相关环境记录(二)
Ubuntu利用docker搭建Java相关环境记录(二) 接上篇:Ubuntu利用docker搭建Java相关环境记录(一) 启动Docker 1. 查看Docker容器 已启动的容器 docker ps所有容器 docker ps -a本人很懒并不想一直敲命令操作&#…...
2025华中杯B题——AI实现
以下内容全文由以下网站AI实现,内容和代码仅供参考 如需实现自己的需求和目标,请使用网站自行调试。 参考写作 1. 共享单车数量与分布估算 问题分析 本题要求根据校园共享单车在各停车点的不同时段统计数据,估算校园内共享单车总量&#…...
【软考-系统架构设计师】OSI体系解析
一、OSI体系的核心定义 OSI(Open System Interconnection)模型是国际标准化组织(ISO)于1984年提出的网络通信分层框架,旨在解决异构网络系统间的兼容性问题。它将复杂的网络通信过程划分为七层,每层独立完…...
用手机也能打《无畏契约》?登录ToDesk即可开玩
《无畏契约》火到出圈!但手机玩家只能干瞪眼? 作为拳头游戏继《英雄联盟》后的又一爆款,《无畏契约》凭借快节奏的战术对抗和全球化的地图设计(比如东京“霓虹町”、百慕大“微风岛屿”),迅速成为电竞圈的顶…...
jmeter提取返回值到文件
前言 如何将请求的返回值,保存到本地文件,有具体以下3种方式。 保存到响应文件BeanShell 取样器BeanShell 后置处理程序 一、监听器–保存响应到文件 1、提取全部返回值,(.json)格式 2、保存到响应文件 添加----…...
iPaaS集成平台在电商行业的五大核心应用场景
在电商行业“多平台运营、多系统并行”的竞争格局下,订单激增、数据割裂、跨系统协作低效等问题成为企业增长的隐形阻碍。谷云科技作为国内领先的iPaaS(集成平台即服务)技术厂商,通过低代码、高扩展的集成能力,帮助电商…...
猪行为视频数据集
猪行为数据集包含 23 天(超过 6 周)的日间猪行为视频,这些视频由近乎架空的摄像机拍摄。视频已配准颜色和深度信息。数据以每秒 6 帧的速度捕获,并以 1800 帧(5 分钟)为一批次进行存储。大多数帧显示 8 头猪。 这里可以看到颜色和深度图像的示例: 喂食器位于图片底部中…...
在conda环境下使用pip安装库无法import
安装seleniumwire包,conda环境没有,pip之后安装不到当前conda环境 网上的方法都试过了,包括强制安装等 python -m pip install --upgrade --force-reinstall selenium-wire 最后定位应该是没有安装到当前conda的环境下,使用list…...
[net 6] udp_chat_server基于udp的简单聊天室(多线程的服务器与业务相分离)
目录 1. 网络聊天室的意义 2. 网络聊天室了解 2.1. 网络聊天室模块分析 2.2. 目标 3. 基本框架 3.1. 文件基本框架 3.2. 设计回调函数解耦 4. Route.hpp 模块(消息转发) 4.1. 头文件包含 4.2. 基本类框架 4.3. Route::Forward() 转发 4.3.1. 函数头设计 4.3.2. 维护…...
驱动-自旋锁
前面原子操作进行了讲解, 并使用原子整形操作对并发与竞争实验进行了改进,但是原子操作只能对整形变量或者位进行保护, 而对于结构体或者其他类型的共享资源, 原子操作就力不从心了, 这时候就轮到自旋锁的出场了。 两个…...
TDengine 存储引擎剖析:数据文件与索引设计(二)
TDengine 索引设计 索引设计关键特性 TDengine 的索引设计采用了多种技术和策略,以满足时序数据高效存储和快速查询的需求,具有以下关键特性: 多级时间戳压缩索引:TDengine 使用了时间戳压缩索引技术,能够有效减少索…...
基于Python的医疗质量管理指标智能提取系统【2025代码版】
系统概述 本系统旨在帮助医疗质量管理部从医院信息系统(HIS)中智能提取《2025年国家医疗质量安全改进目标》中的关键指标数据。系统采用Python编程语言,结合现代数据处理库,实现高效、准确的数据提取与分析功能。 import json import logging import logging.handlers impo…...
中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)是一种行为型设计模式。它通过引入一个中介者对象,来封装一系列对象之间的交互,使这些对象之间不再直接相互引用和通信,而是通过中介者进行间接通信,从而降低对象之间的耦合度,提高系统的可维护性和可扩展性。 一、基础 1. 意图 核心目的…...
Hbuilder 上的水印相机实现方案 (vue3 + vite + hbuilder)
效果 思路 通过 live-pusher 这个视频推流的组件来获取摄像头拿到视频的一帧图片之后,跳转到正常的 vue 页面,通过 canvas 来处理图片水印 源码 live-pusher 这个组件必须是 nvue 的 至于什么是 nvue,看这个官方文档吧 https://uniapp.dcl…...
聊聊Spring AI Alibaba的PdfTablesParser
序 本文主要研究一下Spring AI Alibaba的PdfTablesParser PdfTablesParser community/document-parsers/spring-ai-alibaba-starter-document-parser-pdf-tables/src/main/java/com/alibaba/cloud/ai/parser/pdf/tables/PdfTablesParser.java public class PdfTablesParser…...
二分查找-LeetCode
题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解释: …...
StarRocks Community Monthly Newsletter (Mar)
版本动态 3.4.1 版本更新 核心功能升级 数据安全与权限管控 支持「安全视图」功能,严格管控视图查询权限 MySQL协议连接支持SSL认证,保障数据传输安全 存算分离架构增强 支持自动创建Snapshot(集群恢复更便捷) Storage Volu…...
STM32+dht11+rc522+jq8400的简单使用
1.dht11的使用 硬件:3v3,gnd,data数据线接一个gpio,三根线即可 软件: ①dht11.c #include "dht11.h" #include "delay.h" #include "stdbool.h"static STRUCT_DHT11_TYPEDEF dht11;…...
mpstat指令介绍
文章目录 1. 功能介绍2. 语法介绍3. 应用场景4. 实际举例 1. 功能介绍 mpstat 英文全称( Multi-Processor Statistics),多处理器统计信息的含义。 下面大致说一下功能作用: 多核性能监控 可实时监控每个 CPU 核心的利用率、中断频率、上下文切换等指标&…...
网络层IP协议知识大梳理
全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的IP协议笔记吧~ 自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多) 网路基础3 网路层 TCP并没有把数据发到网路…...
Linux-codec
codec原理图 codec接口 ①音频输入接口,连接mic ②音频输出接口,连接speaker ③sai/i2s接口,连接soc,soc和codec互发音频数据 ④i2c接口,连接soc,soc配置codecsai音频接口 MCLK:主时钟&#x…...
HTTP协议与web服务器
HTTP协议与web服务器 目录 一、浏览器与服务器通信过程 1.1 域名解析与连接建立 1.2 数据交互 1.3 连接管理 二、HTTP请求报头 2.1 请求行 2.2 请求报头 2.3 空行 2.4 请求体 三、HTTP应答报头 3.1 http应答报文头部信息 1. 状态行 2. 服务器名称 3. 数据长度 4…...
ECharts散点图-散点图7,附视频讲解与代码下载
引言: ECharts散点图是一种常见的数据可视化图表类型,它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图,包括图表效果预览、视频讲解及代码下载,让你轻松掌握…...