Vue-3.0路由

生活中的路由:设备和ip的映射关系

路由就是一种映射关系

Vue中路由:路径和组件的映射关系,根据路由就能知道不同路径的,应该匹配渲染哪个组件

VueRouter的介绍

作用:修改地址栏路径时,切换显示匹配的组件

说明:Vue官方的一个路由插件,是一个第三方包

官网:https://v3.router.vuejs.org/zh/

VueRouter的使用(5+2)

5个基础步骤(固定)

1)下载:下载VueRouter模块到当前工程,版本3.6.5

Vue2->VueRouter3.x Vuex3.x

Vue3->VueRouter4.x Vuex4.x

在终端中输入

yarn add vue-router@3.6.5

2)引入

import VueRouter from 'vue-router'

3)安装注册

Vue.use(VueRouter)//VueRouter插件初始化

4)创建路由对象

const router=new VueRouter()

5)注入,将路由对象注入到new Vue实例中,建立关联

new Vue({render:h=>h(App),router
}).$mount('#app')

2个核心步骤

1)在src文件夹下创建需要的组件(views目录),配置路由规则

views视图

错误信息:

错误原因:文件名称单一

解决方式:在组件文件中重命名name,或者本身就把文件名写成多单词命名

export default {name: "MyFriend",
};

在main.js中配置

import Find from './views/Find.vue'
import MyMusic from './views/MyMusic.vue'
import Friend from './views/Friend.vue'
Vue.use(VueRouter)
const router = new VueRouter({routes: [{ path: '/find', component: Find },{ path: '/mymusic', component: MyMusic },{ path: '/friend', component: Friend }]
})

2)配置导航,配置路由出口(路径匹配的组件显示的位置)

    <div class="footer_wrap"><a href="#/find">发现音乐</a><a href="#/mymusic">我的音乐</a><a href="#/friend">朋友</a></div><div class="top"><router-view></router-view>//页面切换的位置</div>

组件存放目录问题(组件分类)

组件分类:.vue文件分2类;页面组件&复用组件

分类开来更易维护

1)src/views文件夹:页面组件-页面展示-配合路由使用

2)src/components文件夹:复用组件-展示数据-常用于复用

路由的封装抽离

目标:将路由模块抽离出来。

好处:拆分模块,利于维护

 在index.js中除了router相关转移过去的,还要加入以下代码。

首先导入vue

import Vue from 'vue'

然后在文件结尾加上

export default router

注意最后要修改组件路径

可以写绝对路径,@标识符指代src目录,从src目录出发找组件,例如'@/views/Find.vue'。

声明式导航

声明式导航就是router-link,使用router-link替代a标签实现高亮

导航链接

需求:实现导航高亮效果

vue-router提供了一个全局组件router-link(取代a标签)

1)能跳转,配置to属性指定路径(必须)。本质还是a标签,to无需#

2)能高亮,默认就会提供高亮类名,可以直接设置高亮样式

    <div class="footer_wrap"><router-link to="/find">发现音乐</router-link><router-link to="/mymusic">我的音乐</router-link><router-link to="/friend">朋友</router-link></div>

 在css文件中,加入如下代码,可以实现选中高亮

  a.router-link-active {background-color: purple;}

 高亮使用router-link-active

 跳转传参

目标:在跳转路由时,进行传值

1.查询参数传参(比较适合传多个参数)

1)语法:to="/path?参数名=值&参数名2=值"

2)对应页面组件接收传递过来的值$route.query.参数名

在created中,使用this.$route.query.参数名获取

2.动态路由传参(优雅简洁,传单个参数比较方便)

1)配置动态路由

const router = new VueRouter({routes: [...,{ path: '/search/:参数名', component: Search }]
})

2)配置导航链接

to="/path/参数值"

3)对应页面组件接收传递过来的值

$route.params.参数名

在created中,使用this.$route.params.参数名获取

路由重定向

问题:网页打开,url默认是/路径,未匹配到组件时,会出现空白

说明:重定向->匹配path后,强制跳转path路径

语法:{path:匹配路径,redirect:重定向到的路径}

const router = new VueRouter({routes: [{ path: '/',redirect:'/home'},{ path: '/mymusic', component: MyMusic },{ path: '/friend', component: Friend }]
})

路由404

作用:当路径找不到匹配时,给个提示页面

位置:配在路由最后

语法:path:"*"(任意路径)-前面不匹配就命中最后一个

先在views文件夹下创建NotFind组件

import NotFind from '@/views/NotFind'const router = new VueRouter({routes: [{ path: '/',redirect:'/home'},{ path: '/mymusic', component: MyMusic },{ path: '/friend', component: Friend },{ path: '*', component: NotFind }]
})

 路由模式设置

问题:路由的路径看起来不自然,有#,能否切成真正路径形式?

hash路由(默认)例如:http://localhost:8080/#/home

history路由(常用)例如:http://localhost:8080/home(以后上线需要服务器端支持)

const router=new VueRouter({routes,mode:"history"
})

采用了history模式,地址栏就没有#,需要后台配置访问规则

编程式导航

编程式导航:用JS代码来进行跳转

基本跳转

两种语法:

1)path路径跳转(简易方便)

this.$router.push('路由路径')
this.$router.push({path:'路由路径'
})

2)name命名路由跳转(适合path路径长的场景)

this.$router.push({name:'路由名'
})
{name:'路由名',path:'/path/xxx',component:xxx}//在index.js文件VueRouter中添加
路由传参

 两种传参方式:查询参数+动态路由传参

两种跳转方式,对于两种传参方式都支持:

1)path路径跳转传参
query查询参数:
this.$router.push('/路径?参数名1=参数值1&参数名2=参数值2')
或
this.$router.push({path:'/路径',query:{    参数名1:'参数值1',参数名2:'参数值2'}
})
$route.query.参数名//接收参数
动态路由参数:

路由:

const router = new VueRouter({mode:'history',routes: [...,{ name:'search', path: '/search/:参数名?', component: Search }]
})
this.$router.push('/路径/参数值')
或
this.$router.push({path:'/路径/参数值'
})
$route.params.参数名//接收参数
2)name命名路由跳转传参
query查询参数:
this.$router.push({name:'路由名字',query:{参数名1:'参数值1',参数名2:'参数值2'}
})
$route.query.参数名//接收参数
动态路由参数:

路由:

const router = new VueRouter({mode:'history',routes: [...,{ name:'search', path: '/search/:参数名?', component: Search }]
})
this.$router.push({name:'路由名字',params:{参数名:'参数值'}
})
$route.params.参数名//接收参数

二级路由

通过children配置项,可以配置嵌套子路由

1.在children配置项中,配规则

const router = new VueRouter({routes: [{ path: '/',component:Layout,//通过children配置项,可以配置嵌套子路由children:[{path: '/article',component:Article,}]}]
})

2.准备二级路由出口,在父页面中添加

<router-view></router-view>

页面返回

@click="$router.back()"

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

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

相关文章

idea中父工程Project创建

1.file-->new-->Project 2.选择maven包和JavaSDK 3.填写项目名&#xff0c;选择文件目录&#xff0c;项目包等 4.配置maven tip&#xff1a;约定>配置>编码 5.设置项目编码 6.注解生效激活&#xff0c;便于项目中使用注解 7.Java编译版本选择8 8.File Type 过滤&a…

php74 安装sodium

下载编译安装libsodium wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-stable.tar.gz tar -zxf libsodium-1.0.18-stable.tar.gz cd libsodium-stable ./configure --without-libsodium make && make check sudo make install下载编译安装…

ChatGPT DALL-E 3的系统提示词大全

每当给出图像的描述时&#xff0c;使用dalle来创建图像&#xff0c;然后用纯文本总结用于生成图像的提示。如果用户没有要求创建特定数量的图像&#xff0c;默认创建四个标题&#xff0c;这些标题应尽可能多样化。发送给Dalle的所有标题都必须遵循以下策略&#xff1a;1.如果描…

GitLab 502问题解决方案

由于最近 gitlab 切换到另一台服务器上部署的 gitlab 后&#xff0c;经常出现 502。平时重启 gitlab 后都能解决&#xff0c;今天突然重启多次后都还是 502&#xff08;重启日志是正常的&#xff09;&#xff0c;遂通过 gitlab-ctl tail 查看日志进行排查。 gitlab-ctl tail通…

到底什么是5G-R?

近日&#xff0c;工信部向中国国家铁路集团有限公司&#xff08;以下简称“国铁集团”&#xff09;批复5G-R试验频率的消息&#xff0c;引起了行业内的广泛关注。 究竟什么是5G-R&#xff1f;为什么工信部会在此时批复5G-R的试验频率&#xff1f; 今天&#xff0c;小枣君就通过…

让ChatGPT等模型学会自主思考!开创性技术“自主认知”框架

ChatGPT、百度文心一言、Bard等大语言模型展现出了超强的创造能力&#xff0c;加速了生成式AI的应用进程。但AI模型只能基于训练数据执行各种任务&#xff0c;无法像人类一样利用生活知识、过往经验用于复杂的推理和决策。 例如&#xff0c;在玩游戏时&#xff0c;人类可以利用…

Python 控制语句

目录 1 选择结构1.1 单分支选择结构1.2 条件表达式详解1.3 条件表达式中&#xff0c;不能有赋值操作符“”1.4 双分支选择结构1.5 三元条件运算符1.6 多分支选择结构1.7 选择结构嵌套 2 循环结构2.1 while循环2.2 for循环和可迭代对象遍历2.3 可迭代对象2.4 range对象2.5 嵌套循…

2023年淘宝天猫双11红包领取活时间什么时候开始领天猫淘宝双十一红包优惠券?

2023年淘宝天猫双11红包领取活动开始与结束时间 2023年10月24日20:00开始领取至11月11日23:59结束&#xff1b; 2023年淘宝天猫双11红包活动使用开始与结束时间 第一波&#xff1a;2023年10月31日20:00开始使用至11月3日23:59 第二波&#xff1a;2023年11月10日20:00开始使用…

【Linux】使用timer_create()创建定时器发送信号并使用sigaction()处理信号

0x00 前言 最后更新时间&#xff1a;2023-10-16 0x01 主要函数及结构体介绍 1.sigaction函数 #include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact);功能&#xff1a; 用于改变进程接收到特定信号后的行为。 参数…

华为eNSP配置专题-ACL的配置

文章目录 华为eNSP配置专题-ACL的配置1、前置环境1.1、宿主机1.2、eNSP模拟器 2、基本环境搭建2.1、基本终端构成和连接2.2、各终端基本配置2.2.1、PC1和PC2的配置2.2.2、模拟互联网的路由器的配置2.2.3、财务部服务器的配置2.2.4、路由器AR1的配置 2.3、让各网段能够ping通互联…

ESP8266 Node Mcu开发板连接WIFI并上报数据到MQTT服务器——物联网应用开发

一、前言 本文主要介绍关于ESP8266 Node Mcu开发板如何连接WIFI并将本地采集的数据上传到MQTT服务器中。 大家调试可以使用MQTTBox 二、WIFI连接 首先&#xff0c;导入WIFI连接所需的头文件&#xff0c;引入所需库。 #include <ESP8266WiFi.h> 声明字符串常量&#xff0…

Vue项目路由加前缀

Vue项目路由加前缀 vue-cli3.0配置 1&#xff09;静态资源前缀 vue.config.js /module.exports 配置 publicPath&#xff1a;“/前缀” 2&#xff09;路由前缀 route/index.js export default new Router({ base:”/前缀" , }) 参考文章&#xff1a;https://blog.csd…

【00】神经网络之初始化参数

问题描述 #随机初始化权重 w12 np.random.randn(100, 784)/np.sqrt(784) 为什么除以28 回答 这里的代码是初始化一个深度学习模型中的权重矩阵w12。权重矩阵的形状是(100, 784)&#xff0c;这是一个从784个输入节点到100个隐藏节点的全连接层。 除以np.sqrt(784)是权重初始…

Qt QMovie和QLabel配合播放GIF表情包

文章目录 效果演示main函数创建MoviePlayer对象头文件movieplayer.h源文件movieplayer.cpp代码解释在Qt框架中,QMovie是用于处理动画和视频的类。所有源码已在本篇文章公布。 效果演示 main函数创建MoviePlayer对象 #include <QApplication>#include "movie

git pull and git fetch 到底有什么区别?

大家好这里是tony4geek 。 今天给大家介绍git pull and git fetch 有什么区别&#xff1f; 开发过程中大家肯定很多人都用到过git。获取代码有很多的git命令&#xff0c;最长用的命令是pull和fetch。那么问题来了他们之间到底有什么区别&#xff0c;该怎么使用呢&#xff1f;…

scratch身高统计 2023年9月中国电子学会图形化编程 少儿编程 scratch编程等级考试三级真题和答案解析

目录 scratch身高统计 一、题目要求 1、准备工作 2、功能实现 二、案例分析

docker容器内安装项目运行环境(python依赖包+allure)

目录 一、安装自动化项目依赖包1.导出项目依赖库2.上传到远程仓库3.进入jenkins容器内&#xff0c;检查是否安装git4.配置git用户信息5.生成秘钥6.把代码拉取下来7.安装python项目依赖8.运行项目 二、安装allure1.jenkins容器内安装allure&#xff0c;进入/usr/local/2.下载all…

MyBatisPlus的学习项目页面

MyBatisPlus通过扫描实体类&#xff0c;并基于反射获取实体类信息作为数据库表信息 类名驼峰转下划线作为表名 名为id的字段作为主键 变量名驼峰转下划线作为表的字段名 常见注解 TableName&#xff1a;用来指定表名 Tableld&#xff1a;用来指定表中的主键字段信息 Tabl…

修改http_charfinder.py使能在python311环境中运行

需要修改两个函数&#xff0c;第一个是init函数&#xff0c;修改如下&#xff1a; async def init(loop, address, port): # <1> # app web.Application(looploop) # <2> # app.router.add_route(GET, /, home) # <3> app web.Application(…

kong网关从入门到放弃

Kong网关是一个轻量级、快速、灵活的云名称API网关。Kong Gateway位于您的服务应用程序前面&#xff0c;可动态控制、分析和路由请求和响应。KongGateway通过使用灵活、低代码、基于插件的方法来实现您的API流量策略。 https://docs.konghq.com/gateway/latest/#features 架构…