Vue全流程--Vue2路由

devtools/2025/2/10 7:03:42/

引入路由的原因:

实现单页面应用(SPA)

什么是单页面应用:

1、点击跳转链接后直接在原本的页面展示路径发生相应改变

2、整个应用只有一个完整页面

3、数据需要通过ajax获取

Vue2中的路由是什么:

Vue2路由是一个插件库叫做vue-router

需要引入

npm i vue-router

应用方式

//插件引入
import VueRouter from 'vue-router'
//插件使用
Vue.use(VueRouter)

配置项

我们已经知道一些配置项,比如data、methods、watch、computed、props、store等等

路由也有其对应的配置项。router

实际应用:

一般我们会在src文件夹中创建router文件夹,在文件夹中创建index.js

index.js内容如下:

第一步肯定是先引入一个库

import VueRouter from 'vue-router'

第二步就是利用VueRouter这个构造函数创建实例

const router = new VueRouter
({})

第三步  填写路径,以及每个路径所使用的组件 

const router = new VueRouter
({routes:
[
{path:'about'component:About
},
{path:'home'component:Home
}
]
})

创建了一个列表,然后列表里面存储的每个对象都是一组路由(路径+组件) 

第四步 引入相关组件

import About from '组件路径'   //请按照具体项目进行修改
import Home from '组件路径'   //请按照具体项目进行修改

 第五步 暴露该路由器

export default Router 

 第六步 引入我们暴露出来的router在APP.vue中

import router from '../router'  //从路由文件夹中引入路由

第七步 写入配置项

new Vue({.....
router:router}) 

第八步 指定跳转路径   router-link  to 

<router-link to="/about">About</router-link>

 第九步 指定展示位置

<router-view></router-view>

组件分类

一般组件:直接写在".vue"组件中的比如

<start></start>

路由组件:使用<router-view></router-view>指定展示地区的。或者是写在路由中的组件

所以一般我们将路由组件放到pages文件夹中

将一般组件放到components文件夹中

组件切换:

组件切换Vue默认被切换的组件被销毁

多级路由:(嵌套路由)

在配置router文件夹的index.js文件时利用一个配置项children

const router = new VueRouter
({routes:
[{
path:'/about',
component:About
},
{path:'/home',component:Homechildren:
[{path:'message',component:Message},{{path:'news',component:News
}]
}]
})

当然相对应的router-link也要发生改变(要写完整路径)

<router-link to="/home/news">dnajksaj</router-link>

路由参数一:

类似于组件传参(在每个模板后面写入参数),路由也可以传参(在每个router-link后面写入参数)。并且路由传递参数时,使用的是query这么一个参数

这是传参

<template><div><ul><li v-for="m in messageList" :key="m.id"><!-- 跳转路由并携带query参数,to的字符串写法 --><!-- <router-link :to="`/home/message/detail?id=${m.id}&title=${m.title}`">{{m.title}}</router-link>&nbsp;&nbsp; --><!-- 跳转路由并携带query参数,to的对象写法 --><router-link :to="{path:'/home/message/detail',query:{id:m.id,title:m.title}}">{{m.title}}</router-link></li></ul><hr><router-view></router-view></div>
</template><script>export default {name:'Message',data() {return {messageList:[{id:'001',title:'消息001'},{id:'002',title:'消息002'},{id:'003',title:'消息003'}]}},}
</script>

这是接收使用参数

<template><ul><li>消息编号:{{$route.query.id}}</li><li>消息标题:{{$route.query.title}}</li></ul>
</template><script>export default {name:'Detail',mounted() {console.log(this.$route)},}
</script>

 命名路由:

可以简化路由的跳转。其实我们可以发现在上面的代码中路径已经比较长了

/home/message/detail

我们使用一个name属性即可重命名

我们先加入一个name属性值

routes:[{name:'guanyu',path:'/about',component:About}]

有了name后就可以直接调用 

 <!--简化后,直接通过名字跳转 --><router-link :to="{name:'hello'}">跳转</router-link>

路由参数二:

其实,通过路由传递参数还可以通过params。

传递参数

params传递参数首先需要在index.js文件中的path中给出占位符

例如

path:'detail/:id'

“:id”就是占位符

再在父级组件写入跳转的路径,以及要传递的参数

<!-- 跳转路由并携带params参数,to的对象写法 -->
<router-link :to="{name:'xiangqing',params:{id:m.id,title:m.title}}">{{m.title}}</router-link>

路由携带params参数时,若使用to的对象写法,则不能使用path配置项,必须使用name配置! 

接收参数

子组件接收并使用

{{$route.params.id}}

路由参数三:

通过props我们传递参数更加方便。

说实话我们并不需要将上述的路由参数全部都熟练学会,只是在我们学习他人思路的时候能流畅的看懂他人的代码。在日常的项目中我们只需要熟练使用某一种即可。毕竟我认为编程重要的的是一种思路。至于语法问题。多花点时间总会熟悉

我们只需要在router文件夹中index.js文件中要往哪个组件传递参数,就在哪个路由里写props

                    path:'message',component:Message,children:[{name:'xiangqing',path:'detail',component:Detail,props($route){return {id:$route.query.id,title:$route.query.title,}

接着在相应的名为detail组件接收即可

props:['id','title'],

总结

其实路由还有一些其他的知识点,比如缓存路由以及另外两个生命周期,路由守卫。这里再下一章节进行讲解


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

相关文章

Activity相关学习(二)

Activity启动流程(基于android-13.0.0_r83) 整体流程 启动方式 Activity主要有三种方式 从 Launcher 桌面上点击 App 图标启动一个App。App 启动后&#xff0c;按 Home 键退回到 Launcher 界面&#xff0c;再点击 App 图标。同个应用内启动&#xff0c;如从 Activity1 跳转…

redis中的list类型

可以看作一个双向链表结构&#xff0c;支持正向和反向检索&#xff0c;有序&#xff0c;元素可以重复&#xff0c;插入和删除快&#xff0c;查询速度一般 list类型常见命令&#xff1a; LPUSH key element... : 向链表左侧插入一个或多个元素 LPOP key&#xff1a;移除并返回…

工业 4G 路由器助力消防领域,守卫生命安全防线

在消防领域也在不断引入新技术以提升消防安全保障能力发展过程中。工业 4G 路由器为其数据传输、预警监控发挥着重要的通信作用。 工业 4G 路由器通过内置的 4G 模块&#xff0c;接入 4G 网络&#xff0c;将网络信号进行转换和分发。它能够适应复杂的工业环境&#xff0c;具备…

Redis存储⑤Redis五大数据类型之 List 和 Set。

目录 1. List 列表 1.1 List 列表常见命令 1.2 阻塞版本命令 1.3 List命令总结和内部编码 1.4 List典型使用场景 1.4.1 消息队列 1.4.2 分频道的消息队列 1.4.3 微博 Timeline 2. Set 集合 2.1 Set 集合常见命令 2.2 Set 集合间命令 2.3 Set命令小结和内部编码 2.…

笔灵ai写作技术浅析(五):强化学习

强化学习(Reinforcement Learning, RL)是笔灵AI写作中用于优化文本生成质量的关键技术之一。与传统的监督学习不同,强化学习通过与环境的交互,根据生成的文本质量反馈信号(如语法正确性、语义连贯性、与主题的相关性等),不断调整和优化模型参数,从而提升生成文本的质量…

深度学习 语音合成

以下将介绍几种不同方式实现深度学习语音合成的代码示例,分别是使用百度云语音合成 API、基于 PyTorch 的 Tacotron 2 和 WaveGlow 模型(本地实现)以及 OpenAI 的 TTS 服务。 方式一:使用百度云语音合成 API 1. 安装必要的库 pip install baidu-aip2. 代码实现 from ai…

无人机GPS模块概述!

一、GPS模块 原理&#xff1a;GPS模块通过接收来自卫星系统的信号&#xff0c;计算出无人机当前的位置、速度和时间等信息。它主要由接收天线、接收器、信号处理器和电源等组成。接收天线接收来自卫星的GPS信号&#xff0c;接收器将信号转换为数字信号并传输给信号处理器&…

【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter7-迭代器与生成器

七、迭代器与生成器 ECMAScript 6 规范新增了两个高级特性&#xff1a;迭代器和生成器。使用这两个特性&#xff0c;能够更清晰、高效、方便地实现迭代。 理解迭代 循环是迭代机制的基础&#xff0c;这是因为它可以指定迭代的次数&#xff0c;以及每次迭代要执行什么操作。每次…