Vue全流程--Vue2路由

ops/2025/2/10 20:27:13/

引入路由的原因:

实现单页面应用(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/ops/157349.html

相关文章

IDEA中Resolving Maven dependencies卡着不动解决方案

一、修改settings.xml Maven配置阿里云仓库主要通过修改Maven的settings.xml文件来实现‌。以下是具体步骤: ‌1、找到settings.xml文件‌: 通常位于Maven安装目录下的conf文件夹中,或者在用户目录下的.m2文件夹中(如果用户自定义了settings.xml的位置)。 2、‌编辑se…

体验 DeepSeek-R1:解密 1.5B、7B、8B 版本的强大性能与应用

文章目录 &#x1f34b;引言&#x1f34b;DeepSeek 模型简介&#x1f34b;版本更新&#xff1a;1.5B、7B、8B 的区别与特点&#x1f34b;模型评估&#x1f34b;体验 DeepSeek 的过程&#x1f34b;总结 &#x1f34b;引言 随着大规模语言模型的持续发展&#xff0c;许多模型在性…

web第二次作业

一.后台管理系统首页代码 1.html代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>实验&l…

DNS域名服务器的安装及配置

1.安装DNS域名服务器 sudo apt-get install bind9 2.安装完成后进入/etc/bind目录 cd /etc/bind 进入目录后修改named.conf.local文件 sudo vim named.conf.local 创建test.com文件 sudo touch test.com 修改test.com文件 sudo vim test.com 保存后启动bind9 # servic…

没有服务器和显卡电脑如何本地化使用deepseek|如何通过API使用满血版deepseek

目录 一、前言二、使用siliconflow硅基流动 API密钥1、注册硅基流动2、创建API密钥3、下载AI客户端4、使用API密钥5、效果演示三、使用deepseek官方API密钥1、创建API密钥2、使用API密钥3、效果演示四、总结一、前言 上篇文章我介绍了如何通过云服务器或者显卡电脑来本地化部署…

51单片机俄罗斯方块开机动画

/************************************************************************************************************** * 名称&#xff1a;Game_Star * 功能&#xff1a;开机动画 * 参数&#xff1a;NULL * 返回&#xff1a;NULL ******************************************…

【DeepSeek】DeepSeek小模型蒸馏与本地部署深度解析DeepSeek小模型蒸馏与本地部署深度解析

一、引言与背景 在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;如DeepSeek以其卓越的自然语言理解和生成能力&#xff0c;推动了众多应用场景的发展。然而&#xff0c;大型模型的高昂计算和存储成本&#xff0c;以及潜在的数据隐私风险&#xff0c;限制了…

IDEA启动项目慢问题处理

IDEA启动项目慢问题处理 一、问题现象二、问题排查排查点1&#xff1a;idea内存排查点2&#xff1a;应用内存排查点3&#xff1a;shorten command lineclasspath filejar manifest 排查点4&#xff1a;jstack排查 三、问题定位 一、问题现象 多模块工程&#xff0c;启动模块为…