前端基础(Vue Router路由的使用)

前言:很多网站都有页面的跳转,那具体页面跳转是怎样实现的?今天学习前端SPA(Single page Application)单页面应用,不反复请求后端资源,而是通过路由实现页面的跳转。

目录

路由的创建

main.ts导入路由

App.vue文件

展示效果

子路由

router文件导入

子路由创建

链接式

编程式

页面的跳转

展示效果

获取路由信息

路由传参方式

参数传参

路由传参 

完整代码


安装vue-router

npm install vue-router

路由的创建

在router文件夹下创建一个index.ts文件,默认导出

路由的动态导入

import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({history: createWebHistory(),routes: [{path: "/home",component: () => {return import("@/views/Home.vue");},},{path: "/test",component: () => {return import('../views/Test.vue');},},]
})
export default router;

其中Home.vue文件

<template><div><h1>欢迎来到MRJJ_9的路由学习之旅</h1></div>
</template><script setup>
</script><style lang="scss" scoped>
</style>

Test.vue文件 

<template><div><h1>这是MRJJ_9的学习记录</h1><ul><li>step</li><li>result</li></ul></div>
</template><script setup>
</script><style lang="scss" scoped>
</style>

main.ts导入路由

在main.ts文件中导入使用,一定要保存!!!

import router from './router'
createApp(App).use(router).mount('#app')

 

App.vue文件

<template>
<main><router-link to="/home">首页</router-link><br/><router-link to="/test">详情</router-link><RouterView></RouterView>
</main>
</template><script setup>
</script><style scoped></style>

展示效果

子路由

router文件导入

import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({history: createWebHistory(),routes: [{path: '/home',component: () => {return import('@/views/Home.vue')}},{path: '/test',component: () => import('../views/Info/Test.vue'),children: [{path: 'step',component: () => import('../views/Info/step.vue')},{path: 'result',component: () => import('../views/Info/result.vue')}]}]
})
export default router

子路由创建

链接式

使用RouterLink元素 

<template><div><h1>这是MRJJ_9的学习记录</h1><ul><li><RouterLink to="/test/step">测试过程</RouterLink></li><li><RouterLink to="/test/result">测试结果</RouterLink></li></ul><RouterView></RouterView></div>
</template><script setup>
</script><style lang="scss" scoped>
</style>

编程式

<template><div><h1>这是MRJJ_9的学习记录</h1><ul><li @click="toStep">测试过程</li><li @click="toResult">测试结果</li></ul><RouterView></RouterView></div>
</template><script setup>
// import router from '@/router'
import { useRouter } from 'vue-router'
const router = useRouter()
function toStep() {router.push('test/step')
}
function toResult() {router.push('test/Result')
}
</script><style lang="scss" scoped>
</style>

页面的跳转

function backwordRouter() {router.back()
}
function forwordRouter() {router.forward()
}
function jumpRouter() {router.go(-3)
}

展示效果

获取路由信息

useRoute() 当前页面的路由信息

useRouter() 整个项目的路由信息

路由传参方式

参数传参

query urlencoded参数传参 键=值&键=值

<li><router-link to="/test/step?name=mrjj&stage=10">通过routerLink传参调用测试过程</router-link></li>

通过query调用

<li>UI测试:{{ route.query.name }}</li>

<li>接口测试:{{ route.query.stage }}</li>

路由传参 

<li><router-link to="/test/step/mrjj/100">通过Params传参</router-link></li>

通过params调用 

<li>UI测试:{{ route.params.name }}</li>

<li>接口测试:{{ route.params.stage }}</li>

通过props接受参数

{path: 'result/:result1?/:result2?',
props:true,
component: () => import('../views/info/result.vue')}
<li><router-link to="/test/result/success/fail">result通过Params传参</router-link></li>
<template><ul><li>测试通过:{{ result1 }}</li><li>测试不通过:{{ result2 }}</li></ul>
</template><script setup>
const props = defineProps(['result1', 'result2'])
</script><style lang="scss" scoped>
</style>

完整代码

router/index.ts

import { createRouter, createWebHistory } from 'vue-router'
const router = createRouter({history: createWebHistory(),routes: [{path: '/home',component: () => {return import('@/views/Home.vue')}},{path: '/test',component: () => import('../views/info/Test.vue'),children: [{path: 'step/:name?/:stage?',component: () => import('../views/info/step.vue')},{path: 'result/:result1?/:result2?',props:true,component: () => import('../views/info/result.vue')}]}]
})
export default router

views/Test.vue 

<template><div><h1>这是MRJJ_9的学习记录</h1><ul><li><router-link to="/test/step?name=mrjj&stage=10">通过routerLink传参</router-link></li><li><router-link to="/test/step/mrjj/100">通过Params传参</router-link></li><li><router-link to="/test/result/success/fail">result通过Params传参</router-link></li><li @click="toStep">测试过程</li><li @click="toResult">测试结果</li><li @click="backwordRouter">后退</li><li @click="forwordRouter">前进</li><li @click="jumpRouter">跳几步</li></ul><RouterView></RouterView></div>
</template><script setup>
// import router from '@/router'
import { useRouter } from 'vue-router'
const router = useRouter()
function toStep() {router.push('test/step')
}
function toResult() {router.push('test/Result')
}
function backwordRouter() {router.back()
}
function forwordRouter() {router.forward()
}
function jumpRouter() {router.go(-3)
}
</script><style lang="scss" scoped>
</style>

views/Step.vue

<template><ul><li>UI测试:{{ route.query.name }}</li><li>接口测试:{{ route.query.stage }}</li><li>_______________________________</li><li>UI测试:{{ route.params.name }}</li><li>接口测试:{{ route.params.stage }}</li></ul>
</template><script setup>
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
console.log('router是:', router)
console.log('route是:', route)
</script><style lang="scss" scoped>
</style>

views/Result.vue

<template><ul><li>测试通过:{{ result1 }}</li><li>测试不通过:{{ result2 }}</li></ul>
</template><script setup>
const props = defineProps(['result1', 'result2'])
</script><style lang="scss" scoped>
</style>

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

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

相关文章

用户中心笔记-leovany

1. 安装 官方地址&#xff1a;https://pro.ant.design/zh-CN/docs/getting-started 1.1 Mac系统 1.1.1 安装yarn 安装yarn brew install yarn查看版本 brew -v 1.1.2 安装node // 安装node brew install node // 关联 brew unlink node && brew link node // 查看版…

《代码随想录》刷题笔记——数组篇【java实现】

*二分查找 题目链接 https://leetcode.cn/problems/binary-search/ 左闭右闭区间实现 时间复杂度&#xff1a;O(log n)空间复杂度&#xff1a;O(1) /*** 左闭右闭写法** param nums* param target* return*/ public static int search1(int[] nums, int target) {if (nums…

攻防世界-WEB-php_rce

打开靶机链接 搜村ThinkPhP V5存在远程命令执行的漏洞 构建payload /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]ls 查询当前目录文件&#xff0c;没有发现flag。调整payload 得到flag文件&#xff0c;修…

springBoot-使用idea创建项目添加依赖并实现数据查询

一、使用idea创建springBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mave…

【Java基础】深入理解反射、反射的应用(工厂模式、代理模式)

文章目录 1. Java反射机制是什么&#xff1f;1.2 Java反射例子 2. Java反射机制中获取Class的三种方式及区别&#xff1f;3. Java反射机制的应用场景有哪些&#xff1f;3.1. 优化静态工厂模式&#xff08;解耦&#xff09;3.1.1 优化前&#xff08;工厂类和产品类耦合&#xff…

剑指 Offer 04. 二维数组中的查找

题目描述 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 解题思路 注意每…

Android 状态栏显示运营商名称

Android 原生设计中在锁屏界面会显示运营商名称&#xff0c;用户界面中&#xff0c;大概是基于 icon 数量长度显示考虑&#xff0c;对运营商名称不作显示。但是国内基本都加上运营商名称。对图标显示长度优化基本都是&#xff1a;缩小运营商字体、限制字数长度、信号图标压缩上…

案例聚焦:F5怎么样提升游戏玩家体验?

对手机游戏市场有过了解的小伙伴&#xff0c;定然对Deltatech Gaming Limited这个公司不会陌生。作为印度在线游戏和娱乐行业的领跑者&#xff0c;两个最受欢迎的多人游戏应用分别为多人游戏的 “Addagames” 和扑克类游戏 “Adda52” &#xff0c;它们会定期举办在线联赛。而这…

php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法非常简单

php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法&#xff0c;主要使用到了 php 的时间函数 mktime。下面首先还是以示例说明如何使用 mktime 获取今日、昨日、上周、本月的起始时间戳和结束时间戳&#xff0c;然后在介绍一下 mktime 函数作用和用法。非常简单哦…

Windows云服务器 PHP搭建网站外网无法访问的问题

前言&#xff1a;本人在华为云上租了一台windows的云主机&#xff0c;可以远程访问桌面的那种&#xff0c;然后想搭个网站&#xff0c;最开始想到的是IIS&#xff0c;测试了下用html的文件&#xff0c;没有问题。但是&#xff0c;php文件却不能用&#xff0c;因为少了PHP环境。…

Layer 2盛夏已至,StarkNet如何实现价值跃迁?

作者&#xff5c;Jason Jiang Layer 2概念在2023年夏天迎来爆发。Coinbase、ConsenSys等加密巨头纷纷下场&#xff0c;其部署的原生L2解决方案Base、Linea在过去两个月内相继完成主网上线&#xff1b;被誉为L2 四大天王之一的StarkNet也在夏天顺利完成“量子跃迁”升级&#x…

JavaSE,无框架实现贪吃蛇

JavaSE&#xff0c;无框架实现贪吃蛇 文章目录 JavaSE&#xff0c;无框架实现贪吃蛇1.整体思考2.可能的难点思考2.1 如何表示游戏界面2.2 如何渲染游戏界面2.3 如何让游戏动起来2.4 蛇如何移动 3.流程图制作4.模块划分5.模块完善5.0常量优化5.1监听键盘服务i.输入存储ii.键盘监…

Direct3D颜色

在Direct3D中颜色用RGB三元组来表示&#xff0c;RGB数据可用俩种不同的结构来保存&#xff0c;第一种是D3DCOLOR&#xff0c;它实际上与DWORD类型完全相同&#xff0c;共有32位&#xff0c;D3DCOLOR类型种的各位被分成四个8位项&#xff0c;每项存储了一种颜色分量的亮度值。 由…

JDK7多线程并发环境HashMap死循环infinite loop,CPU拉满100%,Java

JDK7多线程并发环境HashMap死循环infinite loop&#xff0c;CPU拉满100%&#xff0c;Java HashMap底层数据实现是数组链表&#xff0c;链表在哈希碰撞后装入新数据&#xff0c;像是一个桶。 HashMap在JDK7的实现中&#xff0c;并发环境存在死循环infinite loop问题。导致的结果…

DAY-01--分布式微服务基础概念

一、项目简介 了解整体项目包含后端、前端、周边维护。整个项目的框架知识。 二、分布式基础概念 1、微服务 将应用程序 基于业务 拆分为 多个小服务&#xff0c;各小服务单独部署运行&#xff0c;采用http通信。 2、集群&分布式&节点 集群是个物理形态&#xff0c;…

Redis:StringRedisTemplate简介

&#xff08;笔记总结自b站黑马程序员课程&#xff09; 为了在反序列化时知道对象的类型&#xff0c;JSON序列化器会将类的class类型写入json结果中&#xff0c;存入Redis&#xff0c;会带来额外的内存开销。 为了减少内存的消耗&#xff0c;我们可以采用手动序列化的方式&am…

【Python】【Fintech】用Python和蒙特卡洛法预测投资组合未来收益

【背景】 想利用蒙特卡洛方法和yahoo,stooq等财经网站上的数据快速预测特定portfolio的收益。 【分析】 整个程序的功能包括 读取json中的portfolio组合创建蒙特卡洛模拟预测收益的算法创建从财经网站获得特定投资组合数据,并根据2的算法获得该Index或Portfolio收益预测结…

机器学习的第一节基本概念的相关学习

目录 1.1 决策树的概念 1.2 KNN的概念 1.2.1KNN的基本原理 1.2.2 流程&#xff1a; 1.2.3 优缺点 1.3 深度学习 1.4 梯度下降 损失函数 1.5 特征与特征选择 特征选择的目的 1.6 python中dot函数总结 一维数组的点积&#xff1a; 二维数组&#xff08;矩阵&#xff09;的乘法&am…

Python代码雨

系列文章 序号文章目录直达链接1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏表白代码https://want595.blog.csdn.net/article/details/1297945183跳动的爱心https://want595.blog.csdn.net/article/details/1295031234漂浮爱心https://want…

python通过docker打包执行

背景 正常情况下,python脚本执行需要安装有python环境,那python环境虽然也可以通过移植的方法来安装,那总归是比较麻烦的,下面通过docker打包的方式来执行python脚本 1、安装python镜像 准备两个文件即可,dockerfile、requirements.txt两个文件的内容分别如下 同目录下…