DAY20240909 VUE:编程式导航,动态路由,命名路由

devtools/2024/9/20 13:25:22/ 标签: vue.js, javascript, 前端

VUE:编程式导航,动态路由,命名路由

  • 一、点击‘正在热映’列表能跳到对应详情
    • 1编程式导航
      • 创建新组件---详情Datail.vue组件
      • 模拟'正在热映'电影 列表页面
      • 为Datail.vue组件 配置路由、引入路由
      • 使用vue里的编程式导航方案实现点击列表跳转detail页面里
    • 2动态路由
      • 正在热映界面往详情界面url上拼接id
      • Detail页面接收id
    • 3命名路由
      • 以前通过路径跳转,现在通过命名路由跳转。
    • 4关于声明式导航和编程式导航
    • 5 参考资料


一、点击‘正在热映’列表能跳到对应详情

1编程式导航

列表跳详情Datail.vue

创建新组件—详情Datail.vue组件

请添加图片描述

模拟’正在热映’电影 列表页面

请添加图片描述
请添加图片描述

为Datail.vue组件 配置路由、引入路由

line 34-37 line 9
请添加图片描述
请添加图片描述
在url上验证:测试成功!
请添加图片描述

使用vue里的编程式导航方案实现点击列表跳转detail页面里

绑一个事件,编程式导航,点击列表可以跳到detail页面里。
this.$router.push('/detail'),它的优势是能自动识别是哪种模式,自动识别加没加#,能避免#导致的错误。
请添加图片描述请添加图片描述

辨析

  • 编程式导航写法只能用在列表中?❌ 也不是。只是它更适合列表场景。router-link 更适合少的时候。

    编程式导航(如 this.$router.push(…))并不仅仅限于列表场景,但它确实更适合在需要动态控制导航行为的情况下使用,例如根据用户点击不同列表项来决定导航的目标。相比之下, 更适合简单的静态场景,比如页面上只有少量导航链接且不需要复杂逻辑控制时使用。

  • router-link 只能写死?❌ ——> to 可以加冒号:

    router-link 并不只能写死(即指定固定的路径)。通过在 to 属性前加上冒号(:to),可以将其变为动态绑定,这样就可以根据变量或表达式的值来决定导航的目标。例如, 可以根据不同的 id 动态生成导航路径。

2动态路由

列表跳详情,detail组件怎么知道我该显示哪一项的信息?把电影的id带过来。后面的5678就是所点击的电影的id。后端根据id传回对应的详情信息。请添加图片描述
交互流程
1前端请求电影列表:用户进入电影列表页面,前端通过 axios 向后端的 /film/list 接口发送一个 GET 请求,以获取电影列表数据;后端接收到 /film/list 请求,查询数据库或数据源以获取电影列表数据,并将结果以 JSON 格式返回给前端

2用户点击某个电影项:前端接收到后端返回的电影列表数据,将数据渲染在页面上。每个列表项包括一个链接,用于点击后跳转到电影详情页面。用户点击某个电影项后,前端通过 location.hash 获取电影的 ID,并更新 URL 中的哈希部分(如 #/film/1)。

3.前端获取电影 ID 并请求详情信息:前端监听 location.hash 的变化,当哈希变化时,提取电影 ID,并向后端的 /film/detail 接口发送请求,获取对应的电影详情信息。

4.后端返回电影详情数据:后端接收到 /film/detail 请求,提取电影 ID,并查询数据库或数据源,获取该电影的详细信息,然后以 JSON 格式返回给前端

5前端渲染电影详情页面:前端接收到后端返回的电影详情数据,将数据渲染在电影详情页面上,展示该电影的详细信息。
请添加图片描述

正在热映界面往详情界面url上拼接id

把id传过来,这里用的是data,传过去然后

请添加图片描述
往路径上拼上id
请添加图片描述
二级路由不确定,是动态的,之前写死的方法肯定是不行的。line39的样式为写死的方式,我们应该把它改成动态路由。
请添加图片描述
line35 :myid是随便写的,用来路由占位的 line35 ,此时在地址栏里测试,只写/detai 不满足动态的二级路由,跳不过去到详情页了,/detail/111这种形式才符合二级路由的形式。
请添加图片描述
😀:举一反三,这样是三级路由
请添加图片描述
负责detail.vue的人怎么获取id发axios请求?我们希望每次进到detail页面之后拿到id,
想到created生命周期:每次进到页面都会执行一次。

Detail页面接收id

this. r o u t e r 拿到的是整个路由对象, t h i s . router拿到的是整个路由对象 ,this. router拿到的是整个路由对象,this.route只拿到的是当前匹配到的路由。

this.$router
定义: this.$router 是 Vue Router 的实例对象,代表整个路由器(router)实例。
作用: 提供了导航功能和路由配置的管理,可以用来编程式地导航到不同的路由或获取路由器的全局信息。
使用场景: 用于执行路由跳转、访问全局路由配置、控制路由行为等操作。
常用方法:
this.$router.push('/'): 用于导航到指定的路由路径。
this.$router.replace('/'): 导航到指定路由路径并替换当前历史记录(不会留下历史记录)。
this.$router.back(), this.$router.forward(), this.$router.go(n): 控制浏览器的前进和后退操作。this.$route
定义: this.$route 是当前激活(匹配到)的路由对象,表示当前路由的信息。
作用: 包含了当前路由的相关信息,比如路由的 path、params(参数)、query(查询参数)、name(命名路由)、meta(元信息)等。
使用场景: 用于访问当前路由的状态信息,如当前路由的路径、传递的参数、查询字符串等。
常用属性:
this.$route.path: 当前路由的路径(如 /film/1)。
this.$route.params: 动态路由参数对象(如 { id: '1' })。
this.$route.query: 查询参数对象(如 { search: 'keyword' })。
this.$route.name: 当前路由的名称(如果有命名路由的话)。总结
this.$router: 代表整个路由实例,主要用于执行路由跳转和路由操作。
this.$route: 代表当前匹配到的路由对象,主要用于访问当前路由的状态和参数。
通过 this.$router 你可以操作路由,而通过 this.$route 你可以获取当前路由的详细信息。
注意line 10处的id应该写成下面的myid。

请添加图片描述
请添加图片描述

请添加图片描述

3命名路由

以前通过路径跳转,现在通过命名路由跳转。

给路由起个名字 Line35请添加图片描述
前一个id应该写的是myid,后一个id是上面函数的参数。
请添加图片描述

4关于声明式导航和编程式导航

在 Vue.js 中, 是声明式导航,直接在模板中定义导航路径,适合简单的场景;

// 声明式导航
<template><div><!-- 使用声明式导航 --><router-link to="/detail">跳转到详情页</router-link></div>
</template>

而 this.$router.push(‘/detail’) 是编程式导航,通过 JavaScript 代码动态触发导航,适用于需要基于逻辑条件或用户操作进行灵活控制的场景。

// 编程式导航
<template><div><!-- 编程式导航示例 --><button @click="goToDetail">跳转到详情页</button></div>
</template><script>
export default {methods: {goToDetail() {// 使用编程式导航this.$router.push('/detail');}}
};
</script>

5 参考资料

【1】 https://b23.tv/Hhfpaz2


http://www.ppmy.cn/devtools/113156.html

相关文章

MATLAB 从 R2024B 开始支持树莓派 5

树莓派&#xff08;Raspberry Pi&#xff09;系列是一系列基于单板计算机的微型电脑&#xff0c;由英国的树莓派基金会于 2012 年开始发布。它的目标是提供一个低成本、易于学习和玩耍的平台&#xff0c;用于教育和初学者学习计算机科学和编程。 目前市面上&#xff0c;最新最…

el-table使用合计和固定列时,滚动条被覆盖区域无法拖拽问题

pointer-events文档 解决思路为通过pointer-events实现事件穿透&#xff0c;不响应固定列的拖拽&#xff0c;而是响应其子元素的拖拽事件 /deep/.el-table__fixed, /deep/.el-table__fixed-right {pointer-events: none; } /deep/.el-table__fixed *, /deep/.el-table__fixed-…

SQL,从每组中的 json 字段中提取唯一值

postgreySQL 库表的第 1 列是 ID&#xff0c;用于排序&#xff1b;第 2 列是分类&#xff1b;第 3 列类似 json&#xff08;非标准 json&#xff09;, 并存在重复项。 idcomponent_typecomponent_names1INGESTION{ingestiona,atul, ingestiona, ingestionb}2INGESTION{test_s3…

获取无人机经纬度是否在指定禁飞区内

1. 计算公式: (AB X AE ) * (CD X CE) >= 0 && (DA X DE ) * (BC X BE) >= 0 参考: 判断点是否在矩形框(多边形)内_qt opencv 判断一点是否在矩形内-CSDN博客 2.测试结果: 3.实现完整代码: #include<cstd

【MySQL】了解并操作MySQL的缓存配置与信息

目录 一、查看缓存配置 二、查看缓存信息 查询MySQL的缓存相关信息&#xff0c;一般我们用两个命令&#xff1a; show variables like %query_cache%; show status like %qcache%; 一、查看缓存配置 查看缓存配置的相关的系统变量变量&#xff0c;返回给我们服务器缓存的配置…

数据结构——串的定义及存储结构

串的定义 串&#xff08;string&#xff09;——零个或多个任意字符组成的有限序列串是内容受限的线性表 串的几个术语 子串&#xff1a;串中任意几个连续字符组成的子序列称为该串的子串&#xff08;真子串是指不包含自身的所有子串&#xff09;主串&#xff1a;包含子串的串…

图算法 | 图算法的分类有哪些?(下)

图算法的分类有哪些&#xff1f;综合当前学术界和工业界图计算领域目前最新的发展情况&#xff0c;把图算法划分为了以下六大类&#xff1a; ❑中心性(Centrality)算法&#xff1a;如节点出入度、全图出入度、接近中心性、中介中心性、图中心性、调和中心性等。 ❑相似度(Simil…

结构体初始和嵌套

1.介绍了各种基本类型(如整型、实型、字符型)、构造数据类型(如数组)和指针类型。但是,在解决一些较复杂的实际问题时,只使用这些数据类型是不够的。例如,在描述一本图书的信息时,图书编号、书名、专业领域、作者、出版社、单价等都是和图书相关的基本信息,这些信息是作为一个整…

【 前端优化】Vue 3 性能优化技巧

Vue 3 性能优化技巧&#xff1a;让你的应用飞起来&#xff01; 大家好&#xff01;今天我想跟大家分享一些关于Vue 3性能优化的实用技巧。Vue 3带来了很多新的特性和改进&#xff0c;但只有了解并应用这些优化技巧&#xff0c;我们才能真正发挥它们的优势&#xff0c;打造更高…

Java企业面试题3

1. break和continue的作用(智*图) break&#xff1a;用于完全退出一个循环&#xff08;如 for, while&#xff09;或一个 switch 语句。当在循环体内遇到 break 语句时&#xff0c;程序会立即跳出当前循环体&#xff0c;继续执行循环之后的代码。continue&#xff1a;用于跳过…

《论软件需求管理》写作框架,软考高级系统架构设计师

论文真题 软件需求管理是一个对系统需求变更了解和控制的过程。需求管理过程与需求开发过程相互关联&#xff0c;初始需求导出的同时就要形成需求管理规划&#xff0c;一旦启动了软件开发过程&#xff0c;需求管理活动就紧密相伴。 需求管理过程中主要包含变更控制、版本控制、…

【PostgreSQL】安装及使用(Navicat/Arcgis),连接(C#)

简介 PostgreSQL 是一个功能强大的开源对象关系数据库系统 下载地址 PostgreSQL: Downloads 由于我电脑上安装的是arcgispro3.1所以需要下载对应的postgresql版本 PostgreSQL 12 对应的 PostGIS 版本主要是 3.5.0 或更高版本。 安装 一般设置为postgresql 安装扩展插件 此…

Linux下的gcc与gdb

目录 Linux下的gcc与gdb 代码编译与链接 函数库 gdb介绍和安装 gdb基本使用指令 示例代码 debug模式和release模式 基本指令 进入gdb调试与显示调试代码 创建断点与删除断点 启用和禁用断点 执行代码 逐语句和逐过程调试 断点跳转 显示指定变量以及对应内容 打印变量的值 执行到…

《论负载均衡技术在Web系统中的应用》写作框架,软考高级系统架构设计师

论文真题 负载均衡技术是提升Web系统性能的重要方法。利用负载均衡技术&#xff0c; 可将负载(工作任务) 进行平衡、分摊到多个操作单元上执行&#xff0c; 从而协同完成工作任务&#xff0c; 达到提升Web系统性能的目的。 请围绕“负载均衡技术在Web系统中的应用”论题&…

C++比大小游戏

目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好&#xff0c;我叫这是我58。 程序 #include <iostream> #include <Windows.h> using namespace std; int main() {int ir 1;char chparr[2] { 0 };int ip1 0;int ip2 0;int i 1;c…

手势识别&手势控制系统-OpenCV&Python(源码和教程)

项目特点 手部手势识别&#xff1a; 项目利用计算机视觉技术来识别手部的各种手势。这种技术可以应用于多种场景&#xff0c;比如人机交互、游戏控制、无障碍技术等。 自定义手势&#xff1a; 用户可以自定义手势&#xff0c;这意味着可以通过训练新的手势模式来扩展系统的功能…

Mybatis-plus-Generator 3.5.5 自定义模板支持 (DTO/VO 等) 配置

随着项目节奏越来越快&#xff0c;为了减少把时间浪费在新建DTO 、VO 等地方&#xff0c;直接直接基于Mybatis-plus 这颗大树稍微扩展一下&#xff0c;在原来生成PO、 DAO、Service、ServiceImpl、Controller 基础新增。为了解决这个问题&#xff0c;网上找了一堆资料&#xff…

【加密社】Solidity 中的事件机制及其应用

加密社 引言 在Solidity合约开发过程中&#xff0c;事件&#xff08;Events&#xff09;是一种非常重要的机制。它们不仅能够让开发者记录智能合约的重要状态变更&#xff0c;还能够让外部系统&#xff08;如前端应用&#xff09;监听这些状态的变化。 本文将详细介绍Solidity中…

数据中台建设(六)—— 数据资产管理

数据资产管理 随着企业数据越来越大&#xff0c;企业意识到数据是一种无形的资产&#xff0c;通过对企业各业务线产生的海量数据进行合理管理和有效应用&#xff0c;能盘活并充分释放数据的巨大价值。如果不能对海量数据进行有效管理和应用&#xff0c;企业堆积如山的数据给企…

day20JS-axios数据通信

1. 什么是axios axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端&#xff0c;简单的理解就是ajax的封装&#xff0c;只不过它是Promise的实现版本。 特性&#xff1a; 从浏览器中创建 XMLHttpRequests从 node.js 创建 http 请求支持 Promise API拦截请求和响应转…