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

零基础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…...

使用 Let‘s Encrypt 和 OpenResty 实现域名转发与 SSL 配置

在搭建网站或服务时&#xff0c;确保域名的安全性和正确的流量转发是非常重要的。本文将介绍如何使用 Let’s Encrypt 获取免费的 SSL 证书&#xff0c;并将其配置到 OpenResty 中&#xff0c;同时实现特定的域名转发规则。这不仅可以提升网站的安全性&#xff0c;还能优化流量…...

Lambda 表达式

一、Lambda 表达式简介 Lambda 表达式是一种简洁的函数式编程方式&#xff0c;用于实现只有一个方法的接口&#xff08;例如函数式接口&#xff09;。 基本语法 (parameters) -> expression (parameters) -> { statements; } 参数&#xff1a;可以有零个或多个参数。…...

TCN时间卷积神经网络多变量多步光伏功率预测(Matlab)

代码下载&#xff1a;TCN时间卷积神经网络多变量多步光伏功率预测&#xff08;Matlab&#xff09; TCN时间卷积神经网络多变量多步光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机的加剧和环保意识的提升&#xff0c;可再生能源&#xff0c;尤其是太阳能&…...

【Elasticsearch】 Composite Aggregation 详解

1.什么是 Composite Aggregation&#xff1f; Composite Aggregation 是 Elasticsearch 中的一种特殊聚合方式&#xff0c;适用于需要分页展示的聚合结果。它与传统的聚合方式不同&#xff0c;采用了基于游标的分页模型。这种聚合方式可以高效地处理多级聚合中的所有桶&#x…...

如何通过 Logstash 将数据采集到 Elasticsearch

作者&#xff1a;来自 Elastic Andre Luiz 将 Logstash 与 Elasticsearch 集成以实现高效的数据提取、索引和搜索的分步指南。 什么是 Logstash&#xff1f; Logstash 是一种广泛使用的 Elastic Stack 工具&#xff0c;用于实时处理大量日志数据。它充当高效的数据管道&#x…...

mysql的cpu使用率100%问题排查

背景 线上mysql服务器经常性出现cpu使用率100%的告警&#xff0c; 因此整理一下排查该问题的常规流程。 1. 确认CPU占用来源 检查系统进程 使用 top 或 htop 命令&#xff0c;确认是否是 mysqld 进程导致CPU满载&#xff1a;top -c -p $(pgrep mysqld)2. 实时分析MySQL活动 …...

centos虚拟机迁移没有ip的问题

故事背景&#xff0c;我们的centos虚拟机本来是好好的&#xff0c;但是拷贝到其他电脑上就不能分配ip&#xff0c;我个人觉得这个vmware他们软件应该搞定这个啊&#xff0c;因为这个问题是每次都会出现的。 网络选桥接 网络启动失败 service network restart Restarting netw…...

接入 deepseek 实现AI智能问诊

1. 准备工作 注册 DeepSeek 账号 前往 DeepSeek 官网 注册账号并获取 API Key。 创建 UniApp 项目 使用 HBuilderX 创建一个新的 UniApp 项目&#xff08;选择 Vue3 或 Vue2 模板&#xff09;。 安装依赖 如果需要在 UniApp 中使用 HTTP 请求&#xff0c;推荐使用 uni.requ…...

用AVFrame + AVPacket 完成accede编码和直接用ffmpeg命令行实现acc编码的对比

在使用 FFmpeg 进行 AAC 音频编码时,可以选择两种方式:通过编程接口(如 AVFrame 和 AVPacket)实现 AAC 编码,或者直接使用 FFmpeg 命令行工具。这两种方式各有特点,适用于不同的场景。以下是对两种方法的详细分析,包括它们的区别、优缺点以及适用场景。 一、通过 AVFram…...

计算机网络笔记再战——理解几个经典的协议6——TCP与UDP

目录 先说端口号 TCP 使用序号保证顺序性和应答来保证有效性 超时重传机制 TCP窗口机制 UDP 路由协议 协议分类&#xff1a;IGP和EGP 几个经典的路由算法 RIP OSPF 链路状态数据库&#xff08;LSDB&#xff09; LSA&#xff08;Link State Advertisement&#xff0…...

【AI】在Ubuntu中使用docker对DeepSeek的部署与使用

这篇文章前言是我基于部署好的deepseek-r1:8b模型跑出来的 关于部署DeepSeek的前言与介绍 在当今快速发展的技术环境中&#xff0c;有效地利用机器学习工具来解决问题变得越来越重要。今天&#xff0c;我将引入一个名为DeepSeek 的工具&#xff0c;它作为一种强大的搜索引擎&a…...

openssl使用

openssl使用 提取密钥对 数字证书pfx包含公钥和私钥&#xff0c;而cer证书只包含公钥。提取需输入证书保护密码 openssl pkcs12 -in xxx.pfx -nocerts -nodes -out pare.key提取私钥 openssl rsa -in pare.key -out pri.key提取公钥 openssl rsa -in pare.key -pubout -ou…...

《语义捕捉全解析:从“我爱自然语言处理”到嵌入向量的全过程》

首先讲在前面&#xff0c;介绍一些背景 RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09; 是一种结合了信息检索与语言生成模型的技术&#xff0c;通过从外部知识库中检索相关信息&#xff0c;并将其作为提示输入给大型语言模型&#xff…...

HIVE如何注册UDF函数

如果注册UDF函数的时候报了上面的错误&#xff0c;说明hdfs上传的路径不正确&#xff0c; 一定要用下面的命令 hadoop fs -put /tmp/hive/111.jar /user/hive/warehouse 一定要上传到上面路径&#xff0c;这样在创建函数时&#xff0c;引用下面的地址就可以创建成功...

VsCode创建VUE项目

1. 首先安装Node.js和npm 通过网盘分享的文件&#xff1a;vsCode和Node&#xff08;本人电脑Win11安装&#xff09; 链接: https://pan.baidu.com/s/151gBWTFZh9qIDS9XWMJVUA 提取码: 1234 它们是运行和构建Vue.js应用程序所必需的。 1.1 Node安装&#xff0c;点击下一步即可 …...

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…...

如何使用iframe来渲染ThingsBoard仪表盘

1、概述 当我们在使用ThingsBoard的时候,有时候需要再自己的前端项目中展示大屏,thingsboard的仪表盘是可以来做大屏的,虽然界面达不到非常的美观,但是对比之前的版本,现在的版本仪表盘做了很多的优化了。可以实现将thingsboard的仪表板嵌入到自己的vue界面中作为大屏显示…...

退格法记单词(类似甘特图)

退格法记单词&#xff0c;根据记忆次数或熟练程度退格&#xff0c;以示区分&#xff0c;该方法用于短时高频大量记单词&#xff1a; explosion爆炸&#xff0c;激增 mosquito蚊子granary粮仓&#xff0c;谷仓 offhand漫不经心的 transient短暂的slob懒惰而邋遢的…...

计算 MySQL 表行的成本是多少?

当计算表中的所有行时&#xff0c;将使用什么索引&#xff1f;好吧&#xff0c;MySQL文档文档对此提供了一个直接的答案&#xff0c;引用&#xff1a; InnoDB 通过遍历最小的可用二级索引来处理 SELECT COUNT&#xff08;*&#xff09; 语句除非索引或优化器提示指示优化器使用…...

Pygame介绍与游戏开发

提供pygame功能介绍的文档&#xff1a;Pygame Front Page — pygame v2.6.0 documentation 基础语法和实现逻辑 与CLI不同&#xff0c;pygame提供了图形化使用界面GUI&#xff08;graphical user interface&#xff09;基于图像的界面可以创建一个有图像和颜色的窗口 要让py…...

webpack配置方式

1. 基本配置文件 (webpack.config.js)&#xff08;导出一个对象&#xff09; 最常见的方式是通过 webpack.config.js 文件来配置 Webpack&#xff0c;导出一个对象。你可以在这个文件中导出一个配置对象&#xff0c;指定入口、输出、加载器、插件等。 // webpack.config.js m…...

10. k8s二进制集群之Kube Scheduler部署

在开始之前需要准备什么?创建kube-scheduler证书请求文件【即证书的生成⓵】根据上面证书配置文件生成kube-scheduler证书【即证书的生成⓶】创建与关联kube-scheduler配置文件(为后面生成系统服务做准备)创建kube-scheduler服务配置文件【准备系统服务⓵】创建kube-schedul…...

java实现8583报文解析技术详解

文章目录 概要整体架构流程技术名词解释技术细节小结概要 ISO 8583协议是金融交易系统中广泛使用的通信协议,用于规范报文的格式和数据交换。解析8583报文是实现金融交易系统的关键技术之一。本文将详细介绍8583报文解析的核心实现,重点关注解析算法和关键代码逻辑。 8583报…...

k8s服务发现有哪些方式?

在 Kubernetes 中&#xff0c;服务发现是指如何让应用程序在集群内互相找到并通信。Kubernetes 提供了多种服务发现的方式&#xff0c;适应不同的使用场景。以下是 Kubernetes 中常见的服务发现方式&#xff1a; 1. 环境变量&#xff08;Environment Variables&#xff09; 概…...

【SqlServer】SQL Server Management Studio (SSMS) 下载、安装、配置使用及卸载——保姆级教程

超详细的 SQL Server Management Studio (SSMS) 下载、安装、连接数据库配置及卸载教程 SQL Server Management Studio (SSMS) 是微软提供的图形化管理工具&#xff0c;主要用于连接、管理和开发 SQL Server 数据库。以下是详细的 SSMS 下载、安装、连接数据库以及卸载的完整教…...

[ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别

前言 PlatformIO与Arduino在添加第三方库方面的原理存在显著差异 在PlatformIO中&#xff0c;第三方库的使用是基于项目&#xff08;工程&#xff09;的。具体而言&#xff0c;只有当你为一个特定的项目添加了某个第三方库后&#xff0c;该项目才能使用该库。这些第三方库的文…...

音频文件格式——AAC、OGG和FLAC

3.AAC文件格式 3.1 封装格式解析 高级音频编码 &#xff08;Advanced Audio Coding&#xff09; 是一种用于有损数字音频压缩的音频编码标准。它被设计为 MP3 格式的继承者&#xff0c;在相同比特率下通常可以获得比 MP3 更高的音质。AAC有两种封装格式&#xff1a; ADIF&am…...

BUU26 [极客大挑战 2019]HardSQL1

输入一些SQL关键词&#xff0c;发现空格&#xff0c;&#xff0c;union&#xff0c;and&#xff0c;by都被过滤了 被过滤&#xff0c;就用like替代 发现登录成功&#xff0c;可以注入 报错注入 注意 1.这里过滤了空格&#xff0c;就用()将内容包裹起来 比如说&#xff1a…...

多光谱成像技术在华为Mate70系列的应用

华为Mate70系列搭载了光谱技术的产物——红枫原色摄像头&#xff0c;这是一款150万像素的多光谱摄像头。 相较于普通摄像头&#xff0c;它具有以下优势&#xff1a; 色彩还原度高&#xff1a;色彩还原准确度提升约 120%&#xff0c;能捕捉更多光谱信息&#xff0c;使拍摄照片色…...