vue——路由之路由跳转、路由传参、路由嵌套、路由模式

2023-11-13

 相关认识:

后端路由:对于前端的网络请求,不同的pathname,去执行后端的不同业务

前端路由:不同的网址对应各自的页面

vue的前端路由:SPA应用要做出路由效果,就得判断当前网址,然后切换组件

vue-router就是专门做切换组件的功能,它是一个单独的技术,依赖vue 就像jQuery和dom操作一样

路由引入:

  1. cdn引入
  2. npm下载引入使用
  3. cli安装

一、路由跳转

router-view标签:

  • 当地址栏的网址改变时 如果新网址与router中注册的路由匹配就会加载注册的组件渲染到当前组件的这个标签上

(一)标签跳转

     只是普通的跳转页面,没有判断等逻辑控制

(1)a标签跳转

  • a标签会请求服务器 然后刷新页面 因此用在链接外部网络
  <a href="/login">go login-a标签跳转</a>

(2)router-link标签跳转

  • 渲染到页面也是a标签 但是只是改变了地址栏的网址并没有重新加载页面
  • router-link提供跳转到某个路由的功能 如果没有匹配到路由就会跳转失败
  • 路由的底层就是采用history去监听地址栏的变化 然后把当前App组件中的router-view切换了
  • 因此用在网站内部的路由跳转 
<router-link to="/login">go login-router-link标签跳转</router-link>
<router-link :to="{path:'/login'}">go login-router-link标签跳转</router-link>

二者区别:

        router-link用于跳路由 a用于跳网址  

        router-link传参可以传对象  a只能传字符串  

(二)编程式跳转-js代码

  • 编程式跳转: this.$router.push({path:"路由"})
  • 这种跳转方式用js代码写逻辑点击后跳转
<button @click="gologin">js代码写跳转--编程式跳转</button>

   在方法中设置跳转: 

gologin() {
      // this.$router:绑定在组件原型链上的路由对象
      this.$router.push("/login");
      //也可以是: this.$router.push({path:"/login"})
    }

 (三)示例

二、路由传参

(一)query传参

  • query传参:把参数放在querystring字段中  即 ? 之后

跳转传参:

跳转4种:

  • <router-link to="/info?id=1&pwd=123">go info</router-link>
  • <router-link :to="{path:'/info',query:{id:1,title:'标题'}}"></router-link>
  •  this.$router.push("/info?id=1&pwd=123")
  • this.$router.push({path:"/info",query:{id:1,title:'标题'}})

接收1种:

  • this.$route.query

在created之后的所有地方 接受获取数据,如果没有传参 这个值就没有

 (二)动态路由(params)传参

  •  params传参:把参数放在pathname中  即 / 之后

跳转传参:

跳转4种:

  • <router-link to="/news/参数">news</router-link>

  • <router-link :to="{name:"news",params:{id:参数}}">news</router-link>

  • this.$router.push("/news/参数")

  • this.$router.push({name:"news",params:{id:参数}})//必须用name跳路由 "id"处与注册路由时声明的变量名一致

接收1种:

  • this.$route.params

在created之后的所有地方 接受获取数据,如果没有传参 这个值就没有

三、路由嵌套

一个路由对象的设计中中包含:

  • path(路由匹配的路径)  
  • name(路由的名字,方便直接通过名字来匹配路由)
  • component(匹配路径时对应渲染的组件)  
  • redirect(匹配路径时重新匹配另外的路径)  
  • children(子路由们的数组)  

eg:

routes=[{path,name,component,redirect,children},{path,component,redirect,children,name}]

父路由中,一定要写 “<router-view></router-view>”才会加载子路由

子路由注册:

(1)path带“/”: 从父路由路径开始写到子路由路径  相当于绝对路径

(2)path不带“/”:直接写子路由路径  相当于相对路径

(3)星号路由/*:匹配所有  一般放在最下面 网址匹配错误(未注册的网址)时到指定路由路径

(4)重定向路由redirect:匹配路径时重新匹配另外的路径

{
    path: '/father',
    name: 'father',
    component: ()=>import("../views/father/child.vue"),
	children:[
        //直接写子路由路径  相当于相对路径
		{path:"child1",name:"child1",component:()=>import("../views/father/child1.vue")},
	    {path:"child2",name:"child2",component:()=>import("../views/father/child2.vue")},
        //从父路由路径开始写到子路由路径  相当于绝对路径
        {path:"/father/child3",name:"child3",component:()=>import("../views/father/child3.vue")},
		//星号路由:匹配所有 以上路由匹配不到就直接到父路由的第一个子路由界面
        {path:"/*",component:()=>import("../views/father/child1.vue")}
	],
     //用户输入的是/father父路由 帮他重定向到/father/child1 即自动跳转到第一个子路由界面
     redirect:"/father/child1",
  },

四、补充

this.$router.push({path:"/home"}) :向 history 添加新的历史记录
this.$router.replace({path:"/home"}):与push相似,但不会向 history 添加新记录,而是替换当前的history记录

this.$router.go(1):在浏览器记录中前进一步,等同于 history.forward()
this.$router.go(-1):后退一步记录,等同于 history.back()
this.$router.go(3):前进 3 步记录
this.$router.go(-100):如果 history 记录不够用,就失败

五、路由模式:

(1)history: 需要后端配合

history模式:

history采用HTML5的新特性;

提供了两个新方法:pushState(),replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。

history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致

底层切换组件的方式是使用H5的window.history的技术,当地址栏的history状态发生变化时,切换了router-view渲染的组件 来“欺骗”用户 达到切换新网页的效果

打包--托管静态页面--修改egg-static里面的prefix为/ --后端写个*路由匹配所有错的网址--返回给前端一个静态文件(SPA)--前端接收到就加载vue项目的js代码--跑路由代码根据网址判断显示组件

单页应用:SPA 整个网址只有一个页面(一个html文件)

(2)hash模式: #后都是hash值  无需后端配合 

hash模式:

在浏览器中符号“#”,#以及#后面的字符称之为hash,用window.location.hash读取

特点:hash虽然在URL中,但不被包括在HTTP请求中

用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。

hash 模式下,仅 hash 符号之前的内容会被包含在请求中

底层切换组件的方式是使用老技术hash值,当地址栏的hash状态发生变化时,切换了router-view渲染的组件 来“欺骗”用户 达到切换新网页的效果,hash值不会发送给后端,所以无需后端配合 。

(3)抽象模式:自己了解

六、VueRouter router route的区别:

  • VueRouter是一个nodejs识别的模块包
  • route是路由匹配时,携带了一些信息的对象,包括path,params,hash,query等等信息
  • router是路由实例对象,包含了路由的跳转方法,钩子函数等等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue——路由之路由跳转、路由传参、路由嵌套、路由模式 的相关文章

  • 浏览器视口大小(以设备像素为单位)

    Goal 我希望 Flash 能够获得有关浏览器视口宽度和高度 以设备像素为单位 的准确信息初始化 调整大小或浏览器缩放事件时 规格 我需要将 flash 嵌入到在 chrome safari firefox 等中运行的 html 页面中
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • 如何正确清理来自 AngularJS 控制器的无效输入的表单?

    我有一个 AngularJS 表单 其中包含 除其他字段之外 类型之一url 后者很重要 因为这会强制相应的输入成为有效的 URL 在某些条件下 例如 要关闭具有此类表单的模式对话框 我想以编程方式清除该表单 为此 我实现了方法reset基
  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容

随机推荐

  • 【三】springboot整合token(超详细)

    springboot篇章整体栏目 一 springboot整合swagger 超详细 二 springboot整合swagger 自定义 超详细 三 springboot整合token 超详细 四 springboot整合mybatis p
  • 【华为OD机试真题 python】组装新的数组【2023 Q1

    题目描述 组装新的数组 给你一个整数M和数组N N中的元素为连续整数 要求根据N中的元素组装成新的数组R 组装规则 1 R中元素总和加起来等于M 2 R中的元素可以从N中重复选取 3 R中的元素最多只能有1个不在N中 且比N中的数字都要小
  • python格式化输出,format,数据类型转换。

    输出 计算机给用户输出的内容 是一个由里到外的一个过程 例如python语言中的print函数 输入 则相反 例如input函数 一 输出有普通的输出 也有格式化输出 普通输出 类似于 print hello word 这样直接打印 格式化
  • 为高尔夫比赛砍树

    为高尔夫比赛砍树 你被请来给一个要举办高尔夫比赛的树林砍树 树林由一个 m x n 的矩阵表示 在这个矩阵中 0 表示障碍 无法触碰 1 表示地面 可以行走 比 1 大的数 表示有树的单元格 可以行走 数值表示树的高度 每一步 你都可以向上
  • 系统篇: squashfs 文件系统

    一 squashfs简介 Squashfs是一套基于Linux内核使用的压缩只读文件系统 该文件系统能够压缩系统内的文档 inode以及目录 文件最大支持2 64字节 特点 数据 data 节点 inode 和目录 directories
  • 虚幻C++ http请求

    直接上代码 Fill out your copyright notice in the Description page of Project Settings pragma once include CoreMinimal h inclu
  • 测试岗?从功能测试进阶自动化测试开发,测试之路不迷茫...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Mock框架应用(四)-Mock 重定向请求

    例一 先新建json配置文件重定向到www baidu com 启动mock服务 description 实现重定向的请求 request uri redirect redirectTo https www baidu com respon
  • Go并发(goroutine)及并发常用模型的实现

    前言 Go 语言最吸引人的地方是它内建的并发支持 作为天然支持高并发的语言 写并发比java和python要简单方便的多 在并发编程中 对共享资源的正确访问需要精确的控制 在目前的绝大多数语言中 都是通过加锁等线程同步方案来解决这一困难问题
  • 疯壳-MTK智能电话手表开发整板测试

    目录 内容简介 3 第一节 开机 4 第二节 绑定 5 第三节 功能测试 9 3 1 屏幕测试 9 3 2 SIM通信测试 11 3 3 SIM 测试 12 3 4 GPS测试 14 3 5 手表对时 18 官网地址 https www f
  • 1449 砝码称重 51NOD

    1449 砝码称重 题目来源 CodeForces 基准时间限制 1 秒 空间限制 131072 KB 分值 40 难度 4级算法题 现在有好多种砝码 他们的重量是 w0 w1 w2 每种各一个 问用这些砝码能不能表示一个重量为m的东西 样
  • flink中idea配置pom.xml

  • JS之预解析

    javascript 的预解析 个人理解 就是js代码在执行之前 会在相应的执行环境中 预先把 一些东西解析到内存 如果理解错误 请多多指正 一 那究竟预先解析哪些东西那 答 预先解析 function 和 var 二 还有就是预解析的顺序
  • 分布式一致算法

    一 拜占庭将军问题 拜占庭将军问题 拜占庭派多支军队去围攻一个敌人 将军不确定军队中是否有叛徒 叛徒可能擅自变更进攻决定 至少一半以上的军队同时进攻才可以取胜 在这种状态下 拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商 从而就进
  • go 进阶 go-zero相关: 二. 服务启动与路由,中间件注册,请求接收底层原理

    目录 一 问题概述 二 底层源码分析 涉及到的一些结构体简介 初始化 中间件的预设置 路由注册与中间件的处理 启动服务到触发net http 接收请求的处理 三 总结 一 问题概述 了解go zero底层也是基于net http标准库实现h
  • 【树莓派】Linux内核编译

    树莓派 Linux内核编译 树莓派的Linux内核编译有两种方法 一种是在树莓派上直接编译 另一种是利用交叉编译的方法 一般我们都推荐采用交叉编译的方式进行编译 这是因为通常交叉编译Pi内核的速度比Pi本身编译快得多 性能因素 下面就讲下如
  • Maya致命错误解决方法

    因 此故障可能是由于 OpenCL 解决方案 禁用 OpenCL 通过添加 MAYA DISABLE OPENCL 1 到Maya env 复制引号里面部分 文件位于以下位置 c users username documents maya
  • Python自动合并Word文件并添加分页符的方法

    Python自动合并Word文件并添加分页符的方法 在本篇文章中 我们将介绍如何使用Python自动合并多个Word文件 并在合并后的文档中添加分页符 我们将使用Python的python docx库来处理Word文档 该库提供了丰富的功能
  • CMake动态库生成及使用

    命令行生成动态库 现有hello h 和 hello cpp文件 生成动态库 g c fPIC hello cpp hello h c 生成 o文件 fPIC 生成与位置无关的代码 动态库 g shared fPIC o libhello
  • vue——路由之路由跳转、路由传参、路由嵌套、路由模式

    相关认识 后端路由 对于前端的网络请求 不同的pathname 去执行后端的不同业务 前端路由 不同的网址对应各自的页面 vue的前端路由 SPA应用要做出路由效果 就得判断当前网址 然后切换组件 vue router就是专门做切换组件的功