当前位置: 首页 > article >正文

零基础Vue入门6——Vue router

本节重点:

  1. 路由定义
  2. 路由跳转

前面几节学习的都是单页面的功能(都在专栏里面https://blog.csdn.net/zhanggongzichu/category_12883540.html),涉及到项目研发都是有很多页面的,这里就需要用到路由(vue router)。学习本节之后就可以写一个小型的项目了。

跟着练习一定带你可以上手开发vue项目。

我在gitcode上也建了了对应的vue学习项目,会跟随我的专栏进行定期代码更新,有需要可以克隆下载GitCode - 全球开发者的开源社区,开源代码托管平台

Vue Router

Vue Router 是 Vue.js 的官方路由。功能包括:

  • 路由跳转、传参、查询、通配符
  • 嵌套路由
  • 动态路由
  • 路由切换过滤效果
  • HTML5 history 模式或 hash 模式
  • .......

入门项目开发,可以先从掌握基础的路由跳转开始。

浏览器url上  /    之后的就是页面路由,后面的就是页面传递的参数,多层的/就是嵌套路由的概念。例如:

所谓客户端路由,就是把你应用中的页面和浏览器的URL绑定起来,实现:

用户浏览不同页面——URL更新——组件更新。

通过配置路由来告诉 Vue Router 为每个 URL 路径显示哪些组件。

例如下面的例子,有3个页面通过一个导航来切换不同的页面。

路由定义

想要实现上述效果,第一步创建一个路由实例,在你项目的src目录下面新建router文件夹,之后新建一个index.ts文件。

import { createRouter, createWebHistory } from 'vue-router'
import Home from '@/views/home/index.vue'const router = createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{path: '/',name: 'index',redirect: '/home',},{path: "/home",name: "home",component: Home,children: [{path: 'homeLayout',name: '首页',component: () => import('@/views/home/HomeView.vue')},{path: 'vue01',name: '第一节',component: () => import('@/views/vue01/index.vue')},{path: 'vue02',name: '第二节',component: () => import('@/views/vue02/index.vue')}]}],
})export default router

上面就定义了一个嵌套路由,/home就是项目的入口文件,/home/homeLayout就是首页,以此类推。其中:

  •  routes 选项定义了一组路由,把 URL 路径映射到组件
  • component 参数指定要渲染的组件
  • 在main.ts中注册路由
  • 在 App.vue 中添加路由渲染容器组件 <RouterView> 渲染

这些路由组件通常被称为视图,本质上它们只是普通的 Vue 组件。

路由的不同历史模式

  1. Hash模式:用 createWebHashHistory() 创建, URL 之前使用了一个井号(#
  2. HTML5模式:用 createWebHistory() 创建 ,URL 会看起来很 "正常",官网也比较推荐这种模式。

路由访问

在首页定义了一个导航

  • 导航跳转(也就是声明式路由)可以使用routerLink组件的to属性定义
  • 通过方法跳转(也就是编程式路由)的话可以使用router.push('对应的路由url')方法实现
<template><div class="ln_container"><nav><RouterLink v-for="item in menu" :to="item.path">{{ item.name }}</RouterLink></nav><div class="ln_main"><RouterView /></div></div>
</template><script setup lang="ts">
import { RouterLink, RouterView,useRouter } from 'vue-router';
import { ref,watch } from 'vue';const menu = ref([{name: '首页',path: '/',},{name: 'vue01',path: '/home/vue01',}, {name: 'vue02',path: '/home/vue02',},
]);const router = useRouter();
// 监听路由变化,如果跳转到/home,则跳转到/home/homeLayout
watch(() => router.currentRoute.value.path, (to) => {if (to === '/home') {router.push('/home/homeLayout');}
}, { immediate: true });</script><style scoped lang="scss">
.ln_container {width: 100%;height: 100%;nav {display: flex;padding: 10px;font-size: 16px;border-bottom: 1px solid #e0e0e0;margin-bottom: 10px;a {display: inline-block;padding: 10px;line-height: 20px;text-decoration: none;color: #333333;&:hover{background-color: #f0f0f0;}}}
}nav a:first-of-type {border: 0;
}.ln_main {padding: 10px;
}
</style>

通过 useRouter() 和 useRoute() 来访问路由器实例和当前路由。

常用api

重定向 redirect

const routes = [{ path: '/home', redirect: { name: 'homepage' } }]

路由传参params

// 定义
const routes = [{ path: '/users/:id', component: User },
];// 使用<template><div>User {{ router.params.id }}</div>
</template>

导航守卫

简单项目基本这些就够用了,项目要求比较高的话,例如需要检查用户是否已经登录,没有登录的需要先跳转到登录页等等权限方面的需求的,就需要用到导航守卫了。

 router.beforeEach(async (to, from) => {if (// 检查用户是否已登录!isAuthenticated &&// ❗️ 避免无限重定向to.name !== 'Login') {// 将用户重定向到登录页面return { name: 'Login' }}})

更多路由导航学习:导航守卫 | Vue Router

路由切换过渡效果:过渡动效 | Vue Router

404页面

如果客户在浏览器上写了一个没有对应路由的url,怎么显示呢?可以提供一个默认的没找到的页面,匹配所有未找到路径的页面。

const router = createRouter({history: createWebHistory(),routes: [{...},// 正常的路由页面{ path: '/:pathMatch(.*)',  // 未匹配的页面component: NotFoundComponent }
],
})


以上就是全部内容了。

若碰到其他的问题 可以私信我 一起探讨学习
如果对你有所帮助还请 点赞 收藏 谢谢~!
关注收藏博客 持续更新中。

从零开始轻松掌握Vue.js,欢迎订阅我的博客专栏!https://blog.csdn.net/zhanggongzichu/category_12883540.html?utm_medium=notify.im.notify-business-fans.20250124.a&username=zhanggongzichu

相关文章:

零基础Vue入门6——Vue router

本节重点&#xff1a; 路由定义路由跳转 前面几节学习的都是单页面的功能&#xff08;都在专栏里面https://blog.csdn.net/zhanggongzichu/category_12883540.html&#xff09;&#xff0c;涉及到项目研发都是有很多页面的&#xff0c;这里就需要用到路由&#xff08;vue route…...

关于JS继承的七种方式和理解

1.原型链继承 function Fun1() {this.name parentthis.play [1, 2, 3] } function Fun2() {this.type child }Fun2.prototype new Fun1()let s1 new Fun2() let s2 new Fun2() s1.play.push(4) console.log(s1.play, s2.play) // [1, 2, 3, 4] [1, 2, 3, 4]可以看到两个…...

Elasticsearch的使用场景、数据量级及选择原因?为什么没有用Hbase?

目录 Elasticsearch 的使用场景、数据量级及选择原因 1. Elasticsearch 的使用场景 2. 数据量级 3. 选择 Elasticsearch 的原因 4. 为什么选择 Elasticsearch 而不是 HBase 5. 数据量级对比 6. 总结 Elasticsearch 的使用场景、数据量级及选择原因 1. Elasticsearch 的…...

Oracle迁移到MySQL

Oracle迁移到MySQL业务需要全面改造适配&#xff0c;数据库对象和业务SQL语法需要一对一映射分析如何改写&#xff0c;根据业务使用实际情况评估改造适配成本较高。 目前&#xff0c;已有数据库产品能力缺少自动化迁移工具&#xff0c;需要依赖生态产品能力&#xff0c;比如云和…...

.Net Core笔记知识点(跨域、缓存)

设置前端跨域配置示例&#xff1a; builder.Services.AddCors(option > {option.AddDefaultPolicy(policy > {policy.WithOrigins(originUrls).AllowAnyMethod().AllowAnyHeader().AllowCredentials();});});var app builder.Build();app.UseCors(); 【客户端缓存】接…...

【Vue】在Vue3中使用Echarts的示例 两种方法

文章目录 方法一template渲染部分js部分方法一实现效果 方法二template部分js or ts部分方法二实现效果 贴个地址~ Apache ECharts官网地址 Apache ECharts示例地址 官网有的时候示例显示不出来&#xff0c;属于正常现象&#xff0c;多进几次就行 开始使用前&#xff0c;记得先…...

每日Attention学习18——Grouped Attention Gate

模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Grouped Attention Gate (GAG) 模块作用 轻量特征融合 模块结构 模块特点 特征融合前使用Group…...

Qt —— 加载百度离线地图、及简单绘图(附源码)

效果 说明 软件代码已下载了某区域的离线瓦片地图,通过百度离线api进行调用的地图效果。 源码 void PointMapTEST...

124,【8】buuctf web [极客大挑战 2019] Http

进入靶场 查看源码 点击 与url有关&#xff0c;抓包 over...

源路由 | 源路由网桥 / 生成树网桥

注&#xff1a;本文为 “源路由” 相关文章合辑。 未整理去重。 什么是源路由&#xff08;source routing&#xff09;&#xff1f; yzx99 于 2021-02-23 09:45:51 发布 考虑到一个网络节点 A 从路由器 R1 出发&#xff0c;可以经过两台路由器 R2、R3&#xff0c;到达相同的…...

c#中lock的经典示例

lock 是 C# 中的一种用于同步线程执行的机制&#xff0c;它帮助确保多个线程在访问共享资源时不会发生冲突或数据损坏。其作用是通过给临界区&#xff08;即多线程访问共享资源的代码段&#xff09;加锁&#xff0c;使得在同一时刻只能有一个线程进入执行该代码段。 1、lock 的…...

python编程-集合内置函数和filter(),集合常见操作

在Python中&#xff0c;列表、集合、字典是三种常用的数据结构&#xff0c;它们各自拥有一些内置函数&#xff0c;用于执行各种操作。 一、列表的常用内置函数 #‌1、append(obj)‌: 在列表末尾添加新的对象。list_a [1, 2, 3] list_a.append(4) print(list_a) # 输出: [1,…...

蓝桥杯Java之输入输出练习题

题目 1&#xff1a;多组AB&#xff08;基础版&#xff09; 题目描述&#xff1a; 输入多组数据&#xff0c;每组数据包含两个整数 A 和 B&#xff0c;计算它们的和。输入以 文件结尾&#xff08;EOF&#xff09; 结束。 输入格式&#xff1a; 每行包含两个整数 A 和 B&#x…...

FPGA的IP核接口引脚含义-快解

疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…...

Linux的循环,bash的循环

Linux的循环,bash的循环 在 Linux 系统中&#xff0c;Bash 循环是最常用的循环实现方式&#xff08;Bash 是 Linux 默认的 Shell&#xff09;&#xff0c;但广义上“Linux 的循环”可能涉及其他 Shell 或编程语言的循环结构。以下是 Bash 循环的详细解析及其在 Linux 环境中的…...

Qwen2-VL-2B-Instruct 模型 RK3576 板端部署过程

需要先在电脑上运行 RKLLM-Toolkit 工具&#xff0c;将训练好的模型转换为 RKLLM 格式的模型&#xff0c;然后使用 RKLLM C API 在开发板上进行推理。 在安装前先查看板端的内存容量&#xff0c;和自己模型占用大小比较一下&#xff0c;别安装编译好了不能用。 这里我就是先尝试…...

如何设计光耦电路

光耦长这样&#xff0c;相信小伙伴们都见过&#xff0c;下图是最为常用的型号PC817 怎么用&#xff1f;我们先看图&#xff0c;如下图1&#xff1a; Vin为输入信号&#xff0c;一般接MCU的GPIO口&#xff0c;由于这里的VCC1为3.3V&#xff0c;故MCU这边的供电电源不能超过3.3V…...

ADC模数转换器概念函数及应用

ADC模数转换器概念函数及应用 文章目录 ADC模数转换器概念函数及应用1.ADC简介2.逐次逼近型ADC2.1逐次逼近型ADC2.2stm32逐次逼近型2.3ADC基本结构2.4十六个通道 3.规则组的4种转换模式3.1单次转换&#xff0c;非扫描模式3.2连续转换&#xff0c;非扫描模式3.3单次转换&#xf…...

DFX(Design for eXcellence)架构设计全解析:理论、实战、案例与面试指南*

一、什么是 DFX &#xff1f;为什么重要&#xff1f; DFX&#xff08;Design for eXcellence&#xff0c;卓越设计&#xff09;是一种面向产品全生命周期的设计理念&#xff0c;旨在确保产品在设计阶段就具备**良好的制造性&#xff08;DFM&#xff09;、可测试性&#xff08;…...

【LeetCode】152、乘积最大子数组

【LeetCode】152、乘积最大子数组 文章目录 一、dp1.1 dp1.2 简化代码 二、多语言解法 一、dp 1.1 dp 从前向后遍历, 当遍历到 nums[i] 时, 有如下三种情况 能得到最大值: 只使用 nums[i], 例如 [0.1, 0.3, 0.2, 100] 则 [100] 是最大值使用 max(nums[0…i-1]) * nums[i], 例…...

Doris更新某一列数据完整教程

在Doris,要更新数据,并不像mysql等关系型数据库那样方便,可以用update set来直接更新某个列。在Doris只能进行有限的更新,官方文档如下: UPDATE - Apache Doris 1、使用Doris自带的Update功能 描述​ 该语句是为进行对数据进行更新的操作,UPDATE 语句目前仅支持 UNIQUE…...

《云夹:让书签管理变得轻松又高效》

在当今数字化的生活与工作场景中&#xff0c;我们畅游于网络的浩瀚海洋&#xff0c;每天都会邂逅各式各样有价值的网页内容。而如何妥善管理这些如繁星般的书签&#xff0c;使其能在我们需要时迅速被找到&#xff0c;已然成为众多网络使用者关注的焦点。云夹&#xff0c;作为一…...

Microsoft Fabric - 尝试一下在pipeline中发送请求给web api(获取数据和更新数据)

1.简单介绍 Microsoft Fabric中的Pipeline支持很多种activity&#xff0c;分成数据转换和控制流两种类型的activitly。 这边将尝试一下发送web请求的activity&#xff0c;要做成的pipeline大概如下图所示&#xff0c; 上图中有4个Activity&#xff0c;作用如下 Web - 从一个…...

Ruby:从宝石到编程语言的奇妙联系(中英双语)

Ruby&#xff1a;从宝石到编程语言的奇妙联系 在珠宝世界中&#xff0c;红宝石&#xff08;Ruby&#xff09;是一种象征热情、力量和高贵的珍贵宝石&#xff1b;而在编程世界中&#xff0c;Ruby则是一门灵活、优雅且富有创造力的编程语言。那么&#xff0c;这两者究竟有何联系…...

如何对java 源码进行分析, 统计出每个方法被引用的次数

使用 JavaParser 统计源码中每个方法的引用次数是一个可行且有效的方法。JavaParser 是一个用于解析 Java 源代码并生成抽象语法树&#xff08;AST&#xff09;的库&#xff0c;它提供了丰富的 API 来遍历和操作 AST。下面是一个详细的指南&#xff0c;说明如何使用 JavaParser…...

数据完整性与约束的分类

一、引言 为什么需要约束&#xff1f;为了保证数据的完整性。 &#xff08;1&#xff09;数据完整性 数据完整性指的是数据的精确性和可靠性。 为了保证数据的完整性&#xff0c;SQL对表数据进行额外的条件限制&#xff0c;从以下四方面考虑&#xff1a; ①实体完整性&…...

docker安装nacos2.x

本文为单机模式&#xff0c;非集群教程&#xff0c;埋坑 nacos2.x官方强制条件 64 bit OS&#xff0c;支持 Linux/Unix/Mac/Windows&#xff0c;推荐选用 Linux/Unix/Mac。 64 bit JDK 1.8 Maven 3.2.x 环境介绍 centos 7 maven 3.9.9 jdk 17 nacos 2.3.1 1. 拉取docker镜像 d…...

git代理设置

在 Git 中&#xff0c;可以通过以下命令查看当前设置的代理配置&#xff1a; 查看 HTTP 代理 git config --get http.proxy查看 HTTPS 代理 git config --get https.proxy查看全局代理设置 如果你设置了全局代理&#xff0c;可以通过以下命令查看&#xff1a; git config …...

python编程-内置函数bin(),bool(),abs() ,all(),any(),ascii(),max(),min() 详解

1、bin()函数用于将整数转换为其二进制字符串表示。并返回一个以0b开头的字符串&#xff0c;表示该整数的二进制形式。 # 十进制数转换为二进制字符串 decimal_number 42 binary_string bin(decimal_number) print(f"Decimal {decimal_number} is {binary_string} in b…...

GB/T28181 开源日记[8]:国标开发速知速会

服务端源代码 github.com/gowvp/gb28181 前端源代码 github.com/gowvp/gb28181_web 介绍 go wvp 是 Go 语言实现的开源 GB28181 解决方案&#xff0c;基于GB28181-2022标准实现的网络视频平台&#xff0c;支持 rtmp/rtsp&#xff0c;客户端支持网页版本和安卓 App。支持rts…...