Vue2(十三):路由
一、路由的简介
vue-rooter:是vue的一个插件库,专门用来实现SPA应用
1.对SPA应用的理解
1、单页 Web 应用(single page web application,SPA)。
2、整个应用只有一个完整的页面 index.html。
3、点击页面中的导航链接不会刷新页面,只会做页面的局部更新。
4、数据需要通过 ajax 请求获取。
2.什么是路由?
1、路由就是一组映射关系(key - value),多个路由需要路由器(router)进行管理。
2、key 为路径, value 可能是 function 或 component组件
3、vue 的一个插件库(vue-router),专门用来实现 SPA 应用
3.路由的分类
(1)前端路由
1、key是路径,value是组件component,用于展示页面内容。
2、工作过程:当浏览器的路径改变时, 对应的组件就会显示。
(2)后端路由
1、key是路径,value 是 function, 用于处理客户端提交的请求。(node.js)
2、工作过程:服务器接收到一个请求时, 根据请求路径找到匹配的函数来处理请求, 返回响应数据。
二、路由的基本使用
Vue2安装vue-router,命令:npm i vue-router@3
Vue3安装vue-router,命令:npm i vue-router
1.编写路由配置项
路径:src/router/index.js,该文件专门用于创建整个应用的路由器
这里要注意配置项里是routes:[]
噢
//引入vue-router
import VueRouter from 'vue-router';//引入组件
import Home from '../components/Home.vue';
import About from '../components/About.vue';//创建并导出一个路由器
export default new VueRouter({routes: [{path: '/about',component: About},{path: '/home',component: Home}]
});
2.main.js引入配置项并使用插件
这里和vuex
不一样的是,使用插件不用在引入配置项(import router from './router/index'
)之后,Vue.use(VueRouter);
直接写在main.js里就欧了
// 引入Vue
import Vue from 'vue';
// 引入App
import App from './App.vue';
Vue.config.productionTip = false;//引入路由器
import router from './router/index' //<=================//引入并使用VueRouter
import VueRouter from 'vue-router';//<===============
Vue.use(VueRouter);//<===============// 创建一个Vue实例
new Vue({el: '#app',render: h => h(App),router: router//<===============
});
3.实现路由切换
使用<router-link></router-link>
标签实现路由的切换 ,to=“/xxx”
是展示的路径, active-class
是当你点击这个的时候可展示的效果(高亮样式)
<!-- 利用a标签实现页面的跳转,模拟路由切换 --><!-- <a class="list-group-item active" href="./about.html">About</a><a class="list-group-item" href="./home.html">Home</a> --><!-- Vue中借助router-link标签实现路由的切换 --><router-link class="list-group-item" active-class="active" to="/about">About</router-link><router-link class="list-group-item" active-class="active" to="/home">Home</router-link>
4.指定展示的位置
使用这个标签决定组件展示的位置
<router-view></router-view>
5.几个注意点
1、路由组件通常存放在src/pages
文件夹,一般组件通常存放在src/components
文件夹。一般组件就按我们之前用法那么用,路由组件的话就是靠<router-link></router-link>
标签关联上index.js
里配置的路由规则,然后由<router-view></router-view>
放到指定位置。
2、通过切换,“隐藏”了的路由组件,默认是被销毁掉的,需要的时候再去挂载。所以切换的时候,路由组件一直是 其他的销毁-当前的挂载 => 其他的销毁-当前的挂载 =>. … …
3、每个组件都有自己的$route
属性,里面存储着自己的路由信息。
4、整个应用只有一个router,可以通过组件的$router
属性获取到
三、嵌套(多级)路由
1.先创建好子组件
路由组件创建在pages中,创建News.vue
和Message.vue
2.children配置项
路由套娃的话,首先要配置路由规则,使用children配置项:
//index.js:该文件专门用于创建整个应用的路由器
//引入vue-router
import VueRouter from 'vue-router';//引入组件
import Home from '../pages/Home.vue';
import About from '../pages/About.vue';
import Message from '../pages/Message.vue';
import News from '../pages/News.vue';//创建一个路由器
const router = new VueRouter({routes: [{path: '/about',component: About},{path: '/home',component: Home,children: [//通过children配置子级路由{path: 'message', //二级路由不加斜杠......component: Message},{path: 'news', //但是模板写的时候要/home/newscomponent: News}]},]
});
export default router;
3.模板上写路由跳转
要写完整路径而且加斜杠,例如:
<router-link to="/home/news">News</router-link>
App.vue是不变的,由于套娃是套在home里,所以要写在Home,vue中
四、路由的query参数
query参数是在组件的$route
上的一个嘎达,可以用来接收数据,类似的还有params参数
,在后面第六部分
1.传参的方式
(1)第一种方式::to中使用字符串拼接或者模板字符串,直接写在要转到的路由路径后面,使用?连接,&拼接
(2)第二种方式::to中使用对象的形式传参(推荐使用)
<ul><li v-for="m in messageList" :key="m.id"><!-- 1.跳转路由并携带query参数,to的字符串写法这个地方体会到了模板字符串真的很方便 --><router-link :to="`/home/message/msgdetail?id=${m.id}&title=${m.title}`">{{ m.title }}</router-link> <!-- 2.跳转路由并携带query参数,to的对象写法 --><router-link :to="{path: '/home/message/msgdetail',query: {id: m.id,title: m.title}}">{{ m.title }}</router-link></li><div><hr><router-view></router-view></div>
</ul>
2.接收参数的方式
可以看下$route
身上的东西(当点击消息2时)
所以去对应组件的模板中,使用$route.query
来接收
<template><ul><li>消息编号:{{ $route.query.id }}</li><li>消息标题:{{ $route.query.title }}</li></ul>
</template>
3.案例
在以上案例的基础上继续实现点击Message中的内容在下面显示对应的数据
(1)配置三级路由
首先建立路由组件msgDetail.vue
,然后去配置三级路由
(2)设置路由跳转
在Message
组件中先把路由跳转标签做好,使用v-for
生成路由标签<router-link>
,然后点击能够显示对应路径下的组件,并配置好<router-view></router-view>
目标。
(3)路由跳转并传参
建议使用第二种方式
(4)目标组件接收参数
传的时候都会传到目标组件的$route.query
身上
五、命名路由
作用:可以简化路由的跳转。
使用:先命名,使用name属性,然后简化后可以直接通过名字跳转,比较方便。
注意:传参时字符串写法没法这么用
<!--简化前,需要写完整的路径 -->
<router-link to="/home/message/msgdetail">跳转</router-link><!--简化后,直接通过名字跳转 -->
<router-link :to="{name:'xiangqing'}">跳转</router-link><!--简化写法配合传递参数 -->
<router-link :to="{name:'xiangqing',// 简化前:path:'/home/message/msgdetail',query:{id:666,title:'你好'}}"
>跳转</router-link>
六、路由的params参数
其实呢套娃时传数据不只可以用query参数,也可以用params
参数,params也是$route
上的玩意儿
1.占位符声明
这里要注意,占位符的名字要和传的params参数的属性名一致,否则url会不显示噢
2.传参:两种方式
<!--1.跳转路由并携带params参数,to的字符串写法-->
<router-link :to="`/home/message/detail/${m.id}/${m.title}`">{{ m.title }}
</router-link>
注意:路由携带params参数时
,若使用to的对象写法
,则不能使用path配置项,必须使用name配置!
<!-- 2.跳转路由并携带params参数,to的对象写法 --><router-link :to="{// path: '/home/message/detail',name: 'xiangqing', //params的话只能写name,不能写pathparams: {id: m.id,title: m.title}}">{{ m.title }}</router-link>
3.接收参数
<ul><li>消息编号:{{ $route.params.id }}</li><li>消息标题:{{ $route.params.title }}</li>
</ul>
七、路由的props配置
作用:让路由组件更方便的收到参数
1.写法1:死数据
值为对象,该对象中的所有key-value都会以props的形式传给Detail组件
缺点:这样值是死的
2.写法2:props:true
值为布尔值,若布尔值为真,就会把该路由组件收到的params参数
,以props的形式传给Detail组件
缺点:只能传params参数的,query参数不能用这个
3.写法3:函数
props值为函数,该函数返回的对象中每一组key-value都会通过props传给Detail组件,这个是最常用的,函数会受到参数,这个参数就是组件身上的$route
,我们可以通过它来获取query或者params里面的东西,然后传过去
相关文章:
Vue2(十三):路由
一、路由的简介 vue-rooter:是vue的一个插件库,专门用来实现SPA应用 1.对SPA应用的理解 1、单页 Web 应用(single page web application,SPA)。 2、整个应用只有一个完整的页面 index.html。 3、点击页面中的导航链…...
Java并发:互斥锁,读写锁,公平锁,Condition,StampedLock
阅读本文之前可以看一看 Java 多线程基础: Java:多线程(进程线程,线程状态,创建线程,线程操作) Java:多线程(同步死锁,锁&原子变量,线程通信&…...
在 Linux 中,要让某一个线程或进程排他性地独占一个 CPU
文章目录 1. CPU 亲和性(CPU Affinity)2. 中断隔离(IRQ Isolation)3. 系统 tickless 模式(NoHZ Mode)4. 实时调度策略5. CPU 隔离(CPU Isolation)和 Full CPU Isolation实现最低的延迟抖动在 Linux 中,要让某一个线程 排他性地独占一个 CPU,并且进一步隔离中断(包括…...
滚雪球学MySQL[7.3讲]:数据库日志与审计详解:从错误日志到审计日志的配置与使用
全文目录: 前言7.3 日志与审计1. 日志类型与配置1.1 错误日志(Error Log)配置错误日志使用场景案例演示 1.2 慢查询日志(Slow Query Log)配置慢查询日志使用场景案例演示 1.3 查询日志(General Query Log&a…...
网关的作用及其高可用性设计详解
引言 在现代分布式系统架构中,网关(Gateway)是一个关键组件。它作为客户端与后端服务之间的桥梁,不仅提供了请求路由、负载均衡、安全认证、流量控制等功能,还能够保护后端服务的安全和稳定性。网关的设计和高可用性对…...
Vortex GPGPU的github流程跑通与功能模块波形探索
文章目录 前言一、跟着官方文档走一遍二、cache子模块的波形仿真2.1 必要的文件内容解释2.2 cache子模块波形仿真——目前环境没啥问题了,就vcd因为配置问题出不来 总结 前言 看了那么久的verilog代码和文档,但还是没怎么接触过Vortex GPGPU全流程跑通与…...
10.2 Linux_并发_进程相关函数
创建子进程 函数声明如下: pid_t fork(void); 返回值:失败返回-1,成功返回两次,子进程获得0(系统分配),父进程获得子进程的pid 注意:fork创建子进程,实际上就是将父进程复制一遍作为子进程&…...
【深度学习基础模型】玻尔兹曼机BM|受限玻尔兹曼机RBM|深度置信网络DBN详细理解并附实现代码。
【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann machines (RBM)|深度置信网络Deep belief networks (DBN)详细理解并附实现代码。 【深度学习基础模型】玻尔兹曼机Boltzmann machines (BM)|受限玻尔兹曼机Restricted Boltzmann m…...
滑动窗口->dd爱框框
1.题目: 2.题解: 2.1为什么用滑动窗口优化: 因为元素都是大于0的 所以:当找到大于等于x的值时,right可以不用返回 两个指针都往后走;因此可以使用滑动窗口优化暴力解法 2.2:滑动窗口具体使用步…...
Python从入门到高手4.1节-掌握条件控制语句
目录 4.1.1 理解条件控制 4.1.2 if, elif, else 4.1.3 条件表达式 4.1.4 条件控制可以嵌套 4.1.5 if语句的三元运算 4.1.6 国庆节快乐 4.1.1 理解条件控制 在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果&qu…...
使用Qt实现实时数据动态绘制的折线图示例
基于Qt的 QChartView 和定时器来动态绘制折线图。它通过动画的方式逐步将数据点添加到图表上,并动态更新坐标轴的范围,提供了一个可以实时更新数据的折线图应用。以下是对代码的详细介绍及其功能解析: 代码概述 该程序使用Qt的 QChartView…...
【人人保-注册安全分析报告-无验证方式导致安全隐患】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...
Redis6 多线程模型
优质博文:IT-BLOG-CN 一、单线程的优缺点 对于一个请求操作Redis主要做3件事情:从客户端读取数据/解析、执行Redis命令、回写数据给客户端。所以主线程其实就是把所有操作的这3件事情串行一起执行,因为是基于内存,所以执行速度非…...
Python的异步编程
什么是协程? 协程不是计算机系统提供,程序员人为创造。 协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法: greenlet&…...
初识Linux · 进程等待
目录 前言: 进程等待是什么 为什么需要进程等待 进程等待都在做什么 前言: 通过上文的学习,我们了解了进程终止,知道终止是在干什么,终止的三种情况,以及有了退出码,错误码的概念ÿ…...
面向对象建模
UML 关系 UML 关系主要有:依赖、关联、聚合、组合、实现、继承。 类图 #mermaid-svg-jcAjcVcPmgmWDpcI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jcAjcVcPmgmWDpcI .error-icon{fill:#552222;}#m…...
MetaJUI v0.4 遇到的一些问题及解决办法记录
1、Unity3d 版本 2022.3.29f1。 2、MetaJUI v0.4 的下载,https://download.csdn.net/download/xingchengaiwei/89334848 3、将MetaJUI v0.4解压,用Unity3d 打开项目,会出现如下问题,按照图中提示操作即可。 4、打开工程后会出现…...
从零开始学习OMNeT++系列第二弹——新建一个OMNeT++的工程
上一篇第一弹介绍了OMNeT是什么以及如何安装OMNeT,现在来说一下如何新建一个自己的OMNeT的工程。 在 Omnet安装完成后,samples/tictoc 中有该例子的完整文件,你可以立刻运行该文件看他是怎么工作的,不过更推荐按接下来的步骤一步…...
【Android】布局优化—include,merge,ViewStub的使用方法
引言 1.重要性 在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度,…...
传奇外网架设教程带图文解说—Gee引擎
架设前准备工作: ①通过百度网盘下载版本、补丁、客户端和DBC2000。版本解压到D盘,客户端解压到D盘或是E盘,补丁先不解压 ②安装和配置DBC2000,有些版本不一定用的是DBC2000数据库,看引擎默认的数据库是哪个 DBC数据…...
MySQL | excel数据输出insert语句
需求 在日常生产运维过程中,有很多需要进行人工梳理的excel数据,到了研发这一侧需要转为sql语句进行数据修正,如何输出insert插入语句? 方案 在空白列插入,选择需要的列 "INSERT INTO tab_name1 (name, desc) …...
足球青训俱乐部管理:Spring Boot技术驱动
摘 要 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率…...
一次实践:给自己的手机摄像头进行相机标定
文章目录 1. 问题引入2. 准备工作2.1 标定场2.2 相机拍摄 3. 基本原理3.1 成像原理3.2 畸变校正 4. 标定解算4.1 代码实现4.2 详细解析4.2.1 解算实现4.2.2 提取点位 4.3 解算结果 5. 问题补充 1. 问题引入 不得不说,现在的计算机视觉技术已经发展到足够成熟的阶段…...
【docker学习】Linux系统离线方式安装docker环境方法
centos7-linux安装docker(离线方式) 下载docker的安装文件 https://download.docker.com/linux/static/stable/x86_64/ 下载的是:docker-18.06.3-ce.tgz 这个压缩文件 将docker-18.06.3-ce.tgz文件上传到centos7-linux系统上,用ftp工具上传即可 解压…...
vscode开发uniapp安装插件指南
安装vuets的相关插件 首先是vue的相关插件,目前2024年9月应该是vue-offical 安装uniapp开发插件 uni-create-view :快速创建 uni-app 页面 安装uni-create-view之后修改插件拓展设置 勾选第一个选择创建视图时创建同名文件夹 选择第二个创建文件夹中生…...
Elasticsearch7.7.1集群不能相互发现的问题解决以及Elasticsearch7.7.1安装analysis-ik中文分词插件的应用
一、Elasticsearch7.7.1集群不能相互发现的问题解决 在使用elasticsearch7.7.1搭建集群,使用了3台服务器作为节点,但在搭建的过程中发现每台服务器的elasticsearch服务都正常,但是不能相互发现,期间进行了一些配置的修改偶尔出现了…...
蓝牙Mesh介绍
蓝牙Mesh(Bluetooth Mesh)是一种基于蓝牙技术的无线通信网络拓扑,用于在设备之间创建大规模的多点到多点网络。蓝牙Mesh网络可以让多个蓝牙设备相互通信和协作,适合需要高覆盖范围和高可靠性的场景,例如智能家居、工业…...
Qt 窗口中鼠标点击事件的坐标探讨
// 鼠标点击事件 void Widget::mousePressEvent(QMouseEvent *event) {/*event->pos()、event->windowPos()和event->localPos()都表示鼠标点击位置在窗口中的位置,它们的值都是一样的,区别在于event->pos()是QPoint类型,event-&…...
服务器虚拟化的全面指南
1. 引言 在数字化转型的浪潮中,服务器虚拟化成为现代IT基础设施的核心组成部分。它通过将物理服务器资源分割成多个虚拟资源,极大地提高了资源利用率和灵活性。本篇文章将深入探讨服务器虚拟化的概念、优势、挑战、技术工具、最佳实践及未来发展趋势。 …...
Linux启动mysql报错
甲方公司意外停电,所有服务器重启后,发现部署在Linux上的mysql数据库启动失败.再加上老员工离职,新接手项目,对Linux系统了解不多,解决起来用时较多,特此记录。 1.启动及报错 1.1 启动语句1 启动语句1&a…...
市住房住房城乡建设委官方网站/重庆优化seo
softmax回归的从零开始实现 xiaoyao 动手学深度学习 tensorflow2.1.0 这一节我们来动手实现softmax回归。首先导入本节实现所需的包或模块。 import tensorflow as tf import numpy as np import sys print(tf.__version__)2.1.0获取和读取数据 使用Fashion-MNIST数据集&am…...
深圳做企业网站的公司推荐/自己的网站
说明:之前在CentOS7下配置过bridge,现在讲bridge模式改为普通模式后,查看网卡的时候还是可以看到很多垃圾信息,想彻底删除自己不想要的网卡配置信息,操作如下:[rootlinux-node1 ~]# ip add list 1: lo: <LOOPBACK,U…...
宝鸡网站建设的公司/什么时候友情链接
http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions001.htm#autoId2 本文内容 NLS 字符函数 附录 Oracle 字符函数包括: 返回字符值的字符函数 NLS 字符函数 返回数字值的字符函数 返回数字值的字符函数 返回数字值的函数可以把任何字符类型作为其参…...
wordpress4模板函数/googleplay安卓版下载
在IIS7.5选择要开启GZip压缩的网站,在功能视图中找到并双击"压缩"图标,在压缩界面中钩选"启用静态内容压缩"和"启用动态内容压缩",应用即可: 静态内容压缩和动态内容压缩的区别静态内容压缩&#x…...
网站建设公司要求什么/chrome浏览器官网入口
一、 打开终端(Terminal)下载源码: git clone https://github.com/Sunnyyoung/WeChatTweak- - macOS.git进入目录:cd WeChatTweak-macOS编译安装:sudo make install卸载动态库 sudo make uninstall打开微信客户端 二…...
天津集体建设用地出售 网站/怎么做优化关键词
文章目录1. 背景介绍2. 跨云商内网打通2.1 阿里云环境安装部署2.1.1 加载驱动模块2.1.2 添加 GRE 隧道开机启动脚本2.1.3 配置 iptalbes 规则2.1.4 在其他节点配置路由2.2 华为云上安装部署2.2.1 加载驱动模块2.2.2 添加 GRE 隧道开机启动脚本2.2.3 配置 iptalbes 规则2.2.4 在…...