Vue路由讲解-05

    这里的路由并不是指我们平时所说的硬件路由器,这里的路由就是SPA(single page application单页应用)的路径管理器。再通俗的说,vue-router就是WebApp的链接路径管理系统。

         vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。路由模块的本质 就是建立起url和页面之间的映射关系。

    (vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向,就是我在页面上点击一个按钮需要跳转到对应的页面,这就是路由跳转)

     如果想要使用我们vue的router需要在脚手架输入我们的命令引入,前面我们已经讲了基本使用,今天给大家讲解的是 如果通过router来传参,以及嵌套路由,编程式导航

   路由的两种传参方式

        1、query

           query 用于将请求参数放在 URL 中传递。它将请求参数作为键值对,用 “?” 符号分隔,放在 URL 的查询字符串中。query有点像ajax中的get请求,例如,GET 请求中通过 query 传递参数的方法如下:

   那需要如何实现路由跳转的时候进行参数的传递呢?

    首先我们需要定义一个 跳转的路由,router-link用来跳转路由,而我们跳转路由的方式没有变,只是添加了一点内容

    我们定义了一个跳转路由,path代表要跳转的路径,然后带上我们的query,用于传入我们的数据,以key:value的方式传递

<router-link :to="{path:'/about',query:{ name:'niuer' }}">About</router-link>

    我们跳转到 /about的页面肯定是需要接收内容的,这里只需要记住,怎么传就怎么接就可以

  $route是路由的实体,通过query传我们通过query接收就可以了

  {{$route.query.name}}

       

        2、params

         记住一点: query传参是可以通过 path 和 name 来指定要跳转的路由,而我们的params只能通过name来指定要跳转的路由

         如果query传参像是get请求的话,我们的params就像是post请求一样,他的原理是使用了占位符,在路径后占了几位用来传参

        params传参是必须要使用name来指定跳转的路由,要不后面是不会生效的

<router-link :to="{name:'main',params:{ name:'niuer' }}">Home</router-link>

我们还需要给main这个路由的路径定义一个占位符,代表我们这个路径后面需要传一个name属性

 

 还是那句话,怎么传的就怎么取

 

   编程式路由导航

    编程式路由导航是什么呢? 编程式路由导航就是我们可以根据一些判断条件再让他去跳转路由.比如登录成功,密码正确,才可以跳转,那不就是给按钮一个点击事件,然后通过点击按钮判断是否正确,才跳转路由,

    这里我们使用element-plus拿一个登录页面,这里不讲解使用,只需要编写登录按钮,来进行路由导航即可

<!-- src/components/Login.vue -->
<template>
  <div class="login-container">
    <el-form ref="loginForm" :model="loginForm" :rules="rules" label-width="80px">
      <el-form-item label="用户名" prop="username">
        <el-input v-model="loginForm.username"></el-input>
      </el-form-item>
      <el-form-item label="密码" prop="password">
        <el-input type="password" v-model="loginForm.password"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm('loginForm')">登录</el-button>
        <el-button @click="resetForm('loginForm')">重置</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loginForm: {
        username: '',
        password: ''
      },
      rules: {
        username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
        password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
      }
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          // 提交表单逻辑,这里可以调用API等操作
          console.log('submit!');
        } else {
          console.log('error submit!');
          return false;
        }
      });
    },
    resetForm(formName) {
      this.$refs[formName].resetFields();
    }
  }
};
</script>

<style scoped>
.login-container {
  width: 300px;
  margin: 100px auto;
}
</style>

  我们如果要在登录成功的方法内写跳转路由,找到提交按钮的点击事件,我们可以看到有一个打印的是 submit代表提交成功,我们在这里编写我们的路由导航

  this.$router也是我们的路由对象,push是我们的一个方法,他可以返回到浏览器的上一页, 里面的内容是和我们使用标签的写法是一样的   

 我们的push是代表我们点击之后,可以回退到登录页面,可以有历史记录的,而我们的还有一个方法是没有历史记录 replace方法

嵌套路由

       Vue的嵌套路由是指在Vue.js应用中,通过Vue Router实现的一个特性,允许在已被定义为路由的一个组件内部再次定义子路由。这意味着你可以在一个父路由所对应的组件内加载子组件,从而展示具有层级关系的内容。这种方式有利于构建具有复杂导航结构的单页应用(SPA),让URL能够反映应用的多级界面结构,同时保持用户界面的连贯性和导航的便捷性。

               具体实现上,你可以在Vue Router的配置中为某个路由添加一个children属性,该属性是一个数组,数组中的每个对象都是一个子路由配置。每个子路由都会对应一个组件,这些组件会显示在父路由组件中用<router-view>标记的位置。当访问相应的子路由URL时,对应的子组件就会在这个<router-view>位置被渲染出来,而父组件仍然保持不变,实现了页面部分区域的动态替换。

    我们来完成一个当登录成功的时候,进入主页面,点击一个菜单,只有一块发生变化

   这里是我们主页面的一个布局


	<template>
	  <div class="common-layout">
	    <el-container>
	      <el-aside width="200px">
			   <el-menu :default-openeds="['1', '3']">
			            <el-sub-menu index="1">
			              <template #title>
			                <el-icon><message /></el-icon>Navigator One
			              </template>
			              <el-menu-item-group>
			                <template #title>Group 1</template>
			                <el-menu-item index="1-1">Option 1</el-menu-item>
			                <el-menu-item index="1-2">Option 2</el-menu-item>
			              </el-menu-item-group>
			
			            </el-sub-menu>
			          </el-menu>
		  </el-aside>
	      <el-main>
			  主页
		  </el-main>
	    </el-container>
	  </div>
	</template>

<script>
</script>

<style>
</style>

当我们点击Option 1的时候,要展示到我们的另一个组件的内容,当然这里我们需要有一个router-view的 用来展示我们的数据

这里我们开启一下路由,让我们的导航栏支持路由 :router=true,我们的index写我们点击option 1的时候跳转到/stu这个页面,router-view是用来展示组件的, 

但我们发现点击之后,突然整个页面都变化了,当你点击的时候,他会将整个页面都换成 /stu这个指向的组件,我们需要把他定义成主页面路由的一个子路由,比主页面的路由小一级,现在他们是同级的

 效果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/717154.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一道全等三角形证明题

接着上次那道题 一道初中一年级几何题解析&#xff0c;再来做一道初中一年级下半学期几何题目&#xff1a; 傍晚丢垃圾散步时看到小小的学生学习群里丢了这个题目&#xff0c;想到一个解法。实在构造不出契合题干阅读材料结论的三角形&#xff0c;索性先根据这结论做一个推论…

云动态摘要 2024-06-17

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠&#xff0c;新用户1折起&#xff01; 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

从《2024年人工智能指数报告》 看AI的最新发展趋势

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 《2024年人工智能指数报告》是由斯坦福大学的“以人为本”人工智能研究所&#xff08;Stanford HAI&#xff09;发布的&#xff0c;具体发布时间…

使用宝塔面板部署Django应用(不成功Kill Me!)

使用宝塔面板部署Django应用 文章目录 使用宝塔面板部署Django应用 本地操作宝塔面板部署可能部署失败的情况 本地操作 备份数据库 # 备份数据库 mysqldump -u root -p blog > blog.sql创建requirements # 创建requirements.txt pip freeze > requirements.txt将本项目…

【unity笔记】三、冰山碰撞变成碎块效果

一、模型准备 共需准备两个模型&#xff0c;一个原始模型&#xff0c;一个破碎后的模型。 破碎后的模型制作教程&#xff1a; 下载Blender 导入原始模型在添加偏好设置中添加Cell Fracture插件&#xff0c;调整模型碎裂效果。导出&#xff0c;保存到项目预制体文件夹。 二、…

3d模型怎么加室外场景渲染的步骤---模大狮模型网

在进行3D模型渲染时&#xff0c;将其放置在室外场景中可以提高渲染效果和真实感。以下是将3D模型加入室外场景的步骤&#xff1a; 1. 选择合适的场景&#xff1a;首先需要选择合适的室外场景&#xff0c;例如城市街道、森林、海滩等等。选择场景时需要考虑模型的大小和比例&…

教育培训系统(FastAdmin+ThinkPHP+Unipp)

引领学习新风尚 &#x1f4da; 引言&#xff1a;教育新篇章 随着科技的不断发展&#xff0c;教育形式也在不断创新与变革。教育培训系统作为这一变革的重要载体&#xff0c;正逐渐改变着我们的学习方式。今天&#xff0c;就让我们一起探索教育培训系统的魅力&#xff0c;看看它…

Navicat和SQLynx功能比较三(数据导出:使用MySQL近千万数据测试)

数据导出的功能在数据库管理工具中是最普遍的功能之一。所以数据导出的功能稳定性和性能也是数据库管理工具是否能很好地满足应用需求的一个考虑因素。 目录 1. 整体比较 2. 示例 2.1 前置环境 2.2 Navicat导出 2.3 SQLynx导出 2.4 性能对比结果&#xff08;690万行数据&…

浙江电信联合中兴通讯取得新突破,完成融合边缘商用验证

前不久&#xff0c;浙江电信联合中兴通讯在融合边缘方面取得新突破&#xff0c;在嘉兴完成了融合边缘的商用验证&#xff0c;并发布了商用版本。接下来&#xff0c;双方在融合边缘方面正式进入商用阶段&#xff0c;有效赋能新质生产力。    随着数字经济的快速发展&#xff0…

github国内加速访问有效方法

这里只介绍实测最有效的一种方法&#xff0c;修改主机的Hosts文件&#xff0c;如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。 1、搜索一个IP查询网站 首先百度搜索选择一个IP查询的网站&#xff0c;这里我用下面这个网站&#xff08;如果该网站失效…

C#——类和对象详情

类和对象 类 类是一种数据结构&#xff0c;它可以包含数据成员&#xff08;常量和字段&#xff09;、函数成员&#xff08;方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数&#xff09;以及嵌套类型。类类型支持继承&#xff0c;继承是一种机制&…

【大分享04】OFD版式赋能政务服务电子文件归档和电子档案管理

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章&#xff0c;来自北京数科网维技术有限责任公司&#xff0c;作者&#xff1a;张严。 PART1 政务服务电子文件归档和电子档案管理背景 政务服务是政务服务机构…

3大法则教你高效制定奖励规则(含参考案例)

在实施全民分销的过程中&#xff0c;SaaS产品方和合作伙伴推广者之间的合作关系可以用河马与牛椋鸟之间的共生关系来形容——牛椋鸟以栖息在河马背上并清理其身上的昆虫为生。这种关系对两者来说都是极其有益的&#xff1a;牛椋鸟获得了稳定的食物来源&#xff0c;而河马则有效…

在线预览多类型文件_全栈

目录 一、下载运行项目 二、项目功能 三、前端项目引用 四、文件预览样式更改 在做项目时经常用到在线预览文件&#xff0c;给大家介绍一个好用的在线预览文件项目。使用技术是后端Java&#xff0c;前端Freemarker模板。 FreeMarker 特别适应与 MVC 模式的 Web 应用&#x…

全篇创新点!图像融合9大魔改创新方案,暴力涨点

在处理复杂图像数据和提升图像质量时&#xff0c;采用图像融合的技术是个更好的选择。 这是因为&#xff1a;图像融合能够整合来自不同图像源的信息&#xff0c;为我们提供比单一图像更丰富、更全面、更高质量的图像数据。这种技术不仅减少了数据冗余&#xff0c;还增强了图像…

Excel批量删除括号里内容,帮你轻松应对!

某次&#xff0c;刘小生从系统导出的人员信息中&#xff0c;“姓名”字段信息中包含了工号信息&#xff0c;需要将“原姓名”中的“工号、括号”信息删除&#xff0c;如果一个一个删除工作量很大&#xff0c;刘小生想到可以用“通配符*”批量替换&#xff0c;解放双手&#xff…

Java小结

# Java的特点 Java是一门面向对象的编程语言。面向对象和面向过程的区别参考下一个问题。 Java具有平台独立性和移植性。 Java有一句口号&#xff1a;Write once, run anywhere&#xff0c;一次编写、到处运行。这也是Java的魅力所在。而实现这种特性的正是Java虚拟机JVM。已…

【IPython使用技巧整理】内省功能历史命令执行Shell命令运行脚本导出为其他格式

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

【PyQt5】一文向您详细介绍 self.setWindowTitle() 的作用

【PyQt5】一文向您详细介绍 self.setWindowTitle() 的作用 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普…

部署远程控制台访问服务Rttys,第三部分服务端(安装Rttys)

安装服务端Rttys之前可选先在客户端安装rtty。服务端采用GO语言实现&#xff0c;前端界面采用vue实现。 CMAKE的安装和客户端RTTY的安装请参考前两篇文章&#xff1a; Linux远程连接程序工具选型 Webssh与Rtty 部署远程控制台访问服务Rttys&#xff0c;第一部分客户端&#…