vue-router 4汇总

一、vue和vue-router版本:

"vue": "^3.4.29",
"vue-router": "^4.4.0"

二、路由传参:

方式一:

路由配置:/src/router/index.ts

import {createRouter,createWebHistory
} from "vue-router";const routes = [{path: "/",component: () => import("../Home.vue")},{path: "/map",component: () => import("../Map.vue")},{path: "/login",component: () => import("../Login.vue")}
];const router = createRouter({history: createWebHistory(),routes
});export default router;
  {path: "/map",component: () => import("../Map.vue")}

传递参数:src/components/Today.vue

<template><el-table:data="tableData"style="width: 100%":row-style="tableRowStyle"@row-click="onClickRow"><el-table-column prop="licensePlate" label="车牌号" width /><el-table-column prop="startLongitude" label="起始经度" width /><el-table-column prop="startDimension" label="起始纬度" width /><el-table-column prop="endLongitude" label="终点经度" /><el-table-column prop="endDimension" label="终点纬度" /><el-table-column prop="kilometerDriven" label="行程公里数" width /><el-table-column prop="averageVehicleSpeed" label="平均车速" width><template #default="scope"><el-buttonsize="small"type="info"@click="handleGetLocation(scope.$index, scope.row)">定位</el-button></template></el-table-column></el-table>
</template><script lang="ts" setup>
import { useRouter } from "vue-router";
const Router = useRouter();const handleGetLocation = (index: number, row: any) => {Router.push({path: "/map",query: {lon: 1.1,lat: 2.2}});
};
</script>
import { useRouter } from "vue-router";
const Router = useRouter();Router.push({path: "/map",query: {lon: 1.1,lat: 2.2}});

接收参数:/src/components/Map.vue

<template><div id="map">test</div>
</template><script setup>
import { useRoute } from "vue-router";
const route = useRoute();console.log(route.query.lon);
console.log(route.query.lat);
</script>

方式二:

路由配置:/src/router/index.ts

import {createRouter,createWebHistory
} from "vue-router";const routes = [{path: "/",component: () => import("../Home.vue")},{path: "/map/:lon/:lat",component: () => import("../Map.vue")},{path: "/login",component: () => import("../Login.vue")}
];const router = createRouter({history: createWebHistory(),routes
});export default router;
  {path: "/map/:lon/:lat",component: () => import("../Map.vue")}

传递参数:src/components/Today.vue

<template><el-table:data="tableData"style="width: 100%":row-style="tableRowStyle"@row-click="onClickRow"><el-table-column prop="licensePlate" label="车牌号" width /><el-table-column prop="startLongitude" label="起始经度" width /><el-table-column prop="startDimension" label="起始纬度" width /><el-table-column prop="endLongitude" label="终点经度" /><el-table-column prop="endDimension" label="终点纬度" /><el-table-column prop="kilometerDriven" label="行程公里数" width /><el-table-column prop="averageVehicleSpeed" label="平均车速" width><template #default="scope"><el-buttonsize="small"type="info"@click="handleGetLocation(scope.$index, scope.row)">定位</el-button></template></el-table-column></el-table>
</template><script lang="ts" setup>
import { useRouter } from "vue-router";
const Router = useRouter();const handleGetLocation = (index: number, row: any) => {window.open("/map/1.1/2.2", '_blank');
};
</script>
window.open("/map/1.1/2.2", '_blank');

接收参数:/src/components/Map.vue

<template><div id="map">test</div>
</template><script setup>
import { useRoute } from "vue-router";
const route = useRoute();console.log(route.params.lon);
console.log(route.params.lat);
</script>

三、路由鉴权:

路由配置:/src/router/index.ts

import {createRouter,createWebHistory
} from "vue-router";const routes = [{path: "/",component: () => import("../Home.vue")},{path: "/map/:lon/:lat",component: () => import("../Map.vue")},{path: "/login",component: () => import("../Login.vue")}
];const router = createRouter({history: createWebHistory(),routes
});router.beforeEach((to, from, next) => {// 根据token判断是否登录 并且判断token是否过期if (localStorage["userToken"] === "fake-token") {// 登录了就不允许回到login页面if (to.path == '/login') {// 返回到login页面就会强制跳转到首页next({ path: '/' })} else {// 没有强制跳转到login页面就放行next()}} else {// 未登录// 判断路径if (to.path == '/login') {// 如果本来就在login页面就放行next()} else {// 如果不在login页面就放行到login页面next({ path: '/login', query: { redirect: to.path } })}}});export default router;

登录页:/src/Login.vue

<template><div class="login-wrapper"><div class="title">欢迎登录<b style="color: rgb(27, 85, 226);">xxx平台</b></div><div class="login"><div class="form-wrapper"><input type="text" class="form-control" placeholder="请输入账户" /></div><div class="form-wrapper"><input type="password" class="form-control" placeholder="请输入密码" /></div><button class="login-btn btn-block" @click="handleLogin"><el-icon style="font-size: 18px;"><Avatar /></el-icon> 登 录</button></div><div class="copyright">Copyright © 2024 All right reserved</div></div><canvas id="canvas"></canvas>
</template><script lang="ts" setup>
import { onMounted } from "vue";
import { useRouter } from 'vue-router'
const router = useRouter()const handleLogin = () => {console.log("登录开始")// 模拟登录请求,实际应用中替换为API调用// const response = await loginService(username, password)// const userToken = response.data.tokenconst userToken = "fake-token"; // 模拟的用户令牌// 存储用户令牌localStorage.setItem("userToken", userToken);// 重定向到主页router.push("/");
};</script><style scoped></style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索 WebKit 的缓存迷宫:深入理解其高效缓存机制

探索 WebKit 的缓存迷宫&#xff1a;深入理解其高效缓存机制 在当今快速变化的网络世界中&#xff0c;WebKit 作为领先的浏览器引擎之一&#xff0c;其缓存机制对于提升网页加载速度、减少服务器负载以及改善用户体验起着至关重要的作用。本文将深入探讨 WebKit 的缓存机制&am…

代码随想录leetcode200题之额外题目

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题之额外题目相关题目。 2 训练 题目1&#xff1a;1365. 有多少小于当前数字的数字 解题思路&#xff1a;二分查找。 C代码如下&#xff0c; class Solution { public:vector<int> smallerNumb…

卷积神经网络(CNN)和循环神经网络(RNN) 的区别与联系

卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;是两种广泛应用于深度学习的神经网络架构&#xff0c;它们在设计理念和应用领域上有显著区别&#xff0c;但也存在一些联系。 ### 卷积神经网络&#xff08;CNN&#xff09; #### 主要特点…

解决C++编译时的产生的skipping incompatible xxx 错误

问题 我在编译项目时&#xff0c;产生了一个 /usr/bin/ld: skipping incompatible ../../xxx/ when searching for -lxxx 的编译错误&#xff0c;如下图所示&#xff1a; 解决方法 由图中的错误可知&#xff0c;在编译时&#xff0c;是能够在我们指定目录下的 *.so 动态库的…

python函数和c的区别有哪些

Python有很多内置函数&#xff08;build in function&#xff09;&#xff0c;不需要写头文件&#xff0c;Python还有很多强大的模块&#xff0c;需要时导入便可。C语言在这一点上远不及Python&#xff0c;大多时候都需要自己手动实现。 C语言中的函数&#xff0c;有着严格的顺…

Java基础(六)——继承

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

【Web】

1、配仓库 [rootlocalhost yum.repos.d]# vi rpm.repo ##本地仓库标准写法 [baseos] namemiaoshubaseos baseurl/mnt/BaseOS gpgcheck0 [appstream] namemiaoshuappstream baseurlfile:///mnt/AppStream gpgcheck0 2、挂载 [rootlocalhost ~]mount /dev/sr0 /mnt mount: /m…

QT操作各类数据库用法详解

文章目录 创建内存SQLITE数据库QSqlTableModel操作数据库表连接国产数据库多线程数据处理不指定数据库名打开数据库QT对各种数据库的支持情况处理数据库表名QT连接各种数据库Qt提供了一个名为QtSQL模块的强大组件, 使得在Qt应用程序中连接和操作多种类型的数据库变得相对简单。…

Vulnhub-Os-hackNos-1(包含靶机获取不了IP地址)

https://download.vulnhub.com/hacknos/Os-hackNos-1.ova #靶机下载地址 题目&#xff1a;要找到两个flag user.txt root.txt 文件打开 改为NAT vuln-hub-OS-HACKNOS-1靶机检测不到IP地址 重启靶机 按住shift 按下键盘字母"E"键 将图中ro修改成…

Github 2024-07-06 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-06统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3TypeScript项目2Rust项目2非开发语言项目1C++项目1QML项目1MDX项目1JavaScript项目1Assembly项目1免费编程书籍和学习资源清单 创建…

JS 四舍五入使用整理

一、Number.toFixed() 把数字转换为字符串,结果的小数点后有指定位数的数字,重点返回的数据类型为字符串 toFixed() 方法将一个浮点数转换为指定小数位数的字符串表示,如果小数位数高于数字,则使用 0 来填充。 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。…

Vue 3集成krpano 全景图展示

Vue 3集成krpano 全景图展示 星光云全景系统源码 VR全景体验地址 星光云全景VR系统 将全景krpano静态资源文件vtour放入vue项目中 导入vue之前需要自己制作一个全景图 需要借助官方工具进行制作 工具下载地址&#xff1a;krpano工具下载地址 注意事项&#xff1a;vuecli…

Hook 实现 Windows 系统热键屏蔽(二)

目录 前言 一、介绍用户账户控制&#xff08;UAC&#xff09; 1.1 什么是 UAC &#xff1f; 2.2 UAC 运行机制的概述 2.3 分析 UAC 提权参数 二、 NdrAsyncServerCall 函数的分析 2.1 函数声明的解析 2.2 对 Winlogon 的逆向 2.3 对 rpcrt4 的静态分析 2.4 对 rpcrt4…

YOLOv8_obb数据集可视化[旋转目标检测实践篇]

先贴代码,周末再补充解析。 这个篇章主要是对标注好的标签进行可视化,虽然比较简单,但是可以从可视化代码中学习到YOLOv8是如何对标签进行解析的。 import cv2 import numpy as np import os import randomdef read_obb_labels(label_file_path):with open(label_file_path,…

探索 IPython 的环境感知能力:详解 %env 命令的妙用

探索 IPython 的环境感知能力&#xff1a;详解 %env 命令的妙用 在数据科学和编程的海洋中&#xff0c;环境变量扮演着至关重要的角色。IPython&#xff0c;这一强大的交互式计算工具&#xff0c;通过其内置的魔术命令 %env&#xff0c;为我们提供了与环境变量交互的强大能力。…

git基础指令总结持续更新之git分支简介和基本操作,解决合并和冲突,回退和rebase(变基),分支命名和分支管理,学习笔记分享

git 分支简介和基本操作 Git 分支是 Git 的核心特性之一&#xff0c;它允许开发者在不同的开发线上工作&#xff0c;而不会影响主代码库。以下是 Git 分支的简介和一些基本操作&#xff1a; 分支的概念&#xff1a; 分支是 Git 中的一个独立开发线。创建分支时&#xff0c;G…

rtt设备驱动框架学习——内核对象基类object

内核对象基类object 这个基类是内核所有对象的基类 在rt-thread/include/rtdef.h文件里有对内核对象基类object的定义 /*** Base structure of Kernel object*/ struct rt_object {char name[RT_NAME_MAX]; /**< name of kernel object */rt…

清新简约之美,开源个人博客:Jekyll Theme Chirpy

Jekyll Theme Chirpy&#xff1a;简约不简单&#xff0c;Chirpy 让你的博客焕发新意- 精选真开源&#xff0c;释放新价值。 概览 Jekyll Theme Chirpy 是为Jekyll静态网站生成器设计的现代主题&#xff0c;以其清新、简约的设计风格和用户友好的交互体验受到开发者和博客作者的…

为企业知识库选模型?全球AI大模型知识库RAG场景基准测试排名

大语言模型常见基准测试 大家对于AI模型理解和推理能力的的基准测试一定非常熟悉了&#xff0c;比如MMLU&#xff08;大规模多任务语言理解&#xff09;、GPQA&#xff08;研究生级别知识问答&#xff09;、GSMSK&#xff08;研究生数学知识考察&#xff09;、MATH&#xff08…

Zabbix监控软件

目录 一、什么是Zabbix 二、zabbix监控原理 三、zabbix 安装步骤 一、什么是Zabbix ●zabbix 是一个基于 Web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 ●zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全运营&#xff1b;并提供灵活的…