位置: IT常识 - 正文

Vue--》Vue 3 路由进阶——从基础到高级的完整指南(vue的路由实现)

编辑:rootadmin
Vue--》Vue 3 路由进阶——从基础到高级的完整指南

推荐整理分享Vue--》Vue 3 路由进阶——从基础到高级的完整指南(vue的路由实现),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue路由的几种方式,vue路由用法,vue的路由实现,vue路由详解,vue路由详解,vue路由的几种方式,vue3.0路由,vue3的路由,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

Vue3中路由讲解与使用

路由的安装与使用

路由模式的使用

编程式路由导航

路由传参

嵌套路由

命名视图

重定向与别名


Vue3中路由讲解与使用

Vue 路由是 Vue.js 框架提供的一种机制,它用于管理网页上内容的导航。Vue 路由可以让我们在不刷新页面的情况下,根据浏览器地址栏中的路径显示不同的页面内容。

Vue 路由通常用于单页应用程序(SPA)开发,它可以将应用程序划分成多个视图(view)和组件(component),并根据 URL 中的参数来动态地加载这些组件和页面。Vue 路由具有简单、灵活、可扩展等特点,它可以极大地提高 Web 应用程序的用户体验和交互效果。Vue 路由在 Vue.js 3.x 版本中有了一些新的特性,在使用时最好使用 Vue Router 组件库。详情可参考:官方文档

在学习vue3路由之前,你也可以简单了解一下vue2使用路由的方式:vue2路由版本 。在开局讲解vue3路由知识之前,我先透个底简单说明一下vue2与vue3路由之间发生了哪些变化,抱着先了解这些内容的前提下在接着看文章,获取会有醍醐灌顶的感觉。

vue2与vue3路由使用方式的区别:

路由实例的创建方式

● vue2:使用 new VueRouter 创建实例

● vue3:使用 createRouter 工厂函数创建路由实例

路由实例的挂载方式

● vue2:使用 router 选项将路由实例挂载到根 Vue 实例上

● vue3:使用 app.use(router) 将路由实例挂载到根 Vue 应用上

路由钩子函数的变化

● vue2:在路由组件中使用 beforeRouteEnter、beforeRouteUpdate 和 beforeRouteLeave                钩子函数来拦截页面跳转或修改路由参数。

● vue3:引入了新的路由钩子函数 beforeEach、beforeResolve 和 afterEach,同时还支持                  传统的 beforeRouteEnter、beforeRouteUpdate 和 beforeRouteLeave 钩子函数。

动态路由的变化

● vue2:手动使用 router.addRoutes() 方法添加动态路由。

● vue3:引入了新的 routes 选项,可以直接在路由配置中定义动态路由。

路由懒加载的改进

● vue2:使用 import 加载异步路由组件。

● vue3:引入了新的 import() 语法,可以更方便地进行路由懒加载。

总的来说:Vue3 的路由模式相对于 Vue2 更加灵活和易用,同时还加入了一些新的功能和钩子函数。

路由的安装与使用

这里我使用vite构建工具创建的vue3+ts项目,不了解vite的可以看一下本专栏对vite讲解的文章。

终端执行如下命令,按照vue路由:注意:如果你是vue2项目的话就安装vue-router@3版本的,如果你是vue3就默认安装4版本的就好了。

npm install vue-router -S

安装完成之后,一般我们都会在src目录下新建一个router文件夹,里面存放着路由文件,这里注册组件我采用的是路由懒加载方式,只有在需要时才动态加载相应的代码,从而提高应用程序的性能和加载速度。这种方式下,在路由被访问时,对应的组件才会被加载。

import { createRouter,createWebHistory,RouteRecordRaw } from 'vue-router'const routes:Array<RouteRecordRaw> = [ { path: '/',component:()=>import("../components/login.vue") }, { path: '/reg',component:()=>import("../components/reg.vue") },]const router = createRouter({ history: createWebHistory(), routes})export default router

在 main.ts 入口文件,进行router路由的挂载:

import { createApp } from 'vue'import App from './App.vue'import router from "./router"createApp(App).use(router).mount('#app')

如果想把写好的路由进行展示的话,需要通过 router-view 作为路由出口,路由匹配到的组件将进行响应的渲染。

当然我们也可以通过 router-link 作为导航按钮进行路由的动态切换,如下:

路由模式的使用

路由的三种形式如下:

history 模式:

使用 HTML5 的 History API 来管理路由状态,在这种模式下,URL 中不包括 # 符号。优点是 URL 看起来更加干净,缺点是需要服务器端配置,否则刷新页面会 404。

hash 模式:

URL 中包含 # 符号,后面跟着具体的路径信息。在这种模式下,路由状态是通过监听 hashchange 事件来更新的。它的优点是兼容性好,缺点是 URL 看起来比较丑陋。

abstact 模式:

是一种特殊的路由模式,它用于将嵌套路由与其父级路由相分离,具体来说,抽象路由模式使用一个不对应实际 URL 的“空路径”路由作为父路由。这个“空路径”路由没有对应的组件渲染,只起到一个容器的作用,它的下级路由的路径是基于该路由的路径计算的。

Vue3在路由模式方面的改变并不是很大,只是引入了一些新的API和功能来提高应用程序的性能。

vue2采用 mode history ;vue3采用createWebHistory

vue2采用 mode hash    ;vue3采用createWebHashHistory

vue2采用 mode abstact;vue3采用createMemoryHistory

比如说我采用的是createWebHashHistory方式,浏览器url地址就会出现一个 # ,如下:

那么在日常开发过程中,我们该如何选择路由模式呢?这需要考虑你的应用程序的类型和需求。如果你正在构建一个单页应用程序,那么hash模式可能更适合你。如果你需要更传统的URL路径,并且愿意付出服务器端配置的代价,那么history模式可能更适合你。 

编程式路由导航Vue--》Vue 3 路由进阶——从基础到高级的完整指南(vue的路由实现)

编程式路由导航是指通过代码来控制应用程序中的页面之间的跳转。在前端框架中,路由导航是实现单页面应用 (Single Page Application) 的关键之一,它可以帮助用户快速地在不同的页面之间进行切换,从而提高了用户的体验。

在编程式路由导航中,开发者可以通过调用框架提供的 API 来实现页面跳转。这些 API 包括但不限于以下几种:

push: 将新的路由添加到浏览器历史记录中,并显示相应的组件。

replace: 用新的路由替换当前路由,并显示相应的组件。

go: 在浏览器历史记录中向前或向后移动若干步。

back: 在浏览器历史记录中向后移动一步。

forward: 在浏览器历史记录中向前移动一步。

通过使用这些 API,开发者可以非常方便地实现页面的跳转,并且可以根据业务逻辑来进行灵活的控制,从而实现更好的用户体验。举个简单的例子:

路由传参

在编程式路由导航中,我们也可以进行路由传递参数,如下设置场景模拟数据:

定义一个json文件,存放我们模拟的json数据:

{ "data":[ { "name":"小张", "age":20, "address":"北京" }, { "name":"小王", "age":25, "address":"上海" }, { "name":"小李", "age":40, "address":"南京" } ]}

这里可以安利一个插件 JSON to TS 用来将json代码转换成 TS 接口,插件安装完成之后,全选json代码,然后 按住 ctrl+shift+alt+s即可,如下生成对应的接口:

接下来开始将数据渲染到页面上:

模拟好数据之后,接下来开始着重讲解几种用户数据传参的方式,如下:

query传参方式

params传参方式

使用该传参方式,传递对象中不再是和query传参方式一样是一个path属性,而是一个name属性,其属性值就是我们定义好的routes属性值,如下:

在进行params传参时,传递的需是一个对象,然后要用name名称而不是path,如下:

我目前下载的是最新版本的vue-router,如下,该版本有个恶心的地方就是你用params传参是,routes的路径也必须动态跟上,少一个参数就不显示该参数对应的内容,也是为了安全性的考虑,没办法,只能如此:

嵌套路由

嵌套路由是指在一个路由路径下再嵌套另一个子路由,用于组织和管理应用程序的不同部分或模块。这种路由方式可以提高代码可读性和可维护性,同时也可以更好地控制页面渲染和用户导航。

凡是在当前路由下有一个children属性,children下的路由就是该路由下的子路由,如下:

在父路由也通过 router-view 的方式显示子路由的内容:

命名视图

重定向与别名

当然我们也可以进行设置重定向的方式,如下重定向必须用在嵌套路由才能使用:

当然官方也给我们提供其他的方式:

设置别名的意思就是,你给这路径设置一些其他的名字,你访问这些名字也能访问这个组件的内容

Vue3路由的基本操作就讲解到这,下一篇文章会继续讲解vue3导航守卫的相关内容,喜欢的朋友可以点击关注一键三联,您的支持就是博主创作的最大动力!!!

本文链接地址:https://www.jiuchutong.com/zhishi/292407.html 转载请保留说明!

上一篇:VScode 调试教程 tasks.json和launch.json的设置(超详细)(vscode调试在哪)

下一篇:HTML小游戏8 —— 小霸王游戏机网页版(附完整源码)(html简单的游戏)

  • 公众号原创文章这么玩效果放大十倍!(公众号原创文章怎样改成自己的)

    公众号原创文章这么玩效果放大十倍!(公众号原创文章怎样改成自己的)

  • 荣耀平板v7pro有耳机孔吗(荣耀平板v7Pro有云电脑吗)

    荣耀平板v7pro有耳机孔吗(荣耀平板v7Pro有云电脑吗)

  • 荣耀x10max有红外线功能吗(荣耀x10有红外功能)

    荣耀x10max有红外线功能吗(荣耀x10有红外功能)

  • 爱奇艺没有字幕怎么调出来(爱奇艺没有字幕设置)

    爱奇艺没有字幕怎么调出来(爱奇艺没有字幕设置)

  • oppor11通话声音很小(oppor11通话声音小怎么办)

    oppor11通话声音很小(oppor11通话声音小怎么办)

  • 钉钉怎么提前录播(钉钉怎么提前录播课)

    钉钉怎么提前录播(钉钉怎么提前录播课)

  • 苹果ld邮件是什么意思(苹果id的邮件格式怎么弄)

    苹果ld邮件是什么意思(苹果id的邮件格式怎么弄)

  • icloud照片是什么意思(icloud照片是什么的)

    icloud照片是什么意思(icloud照片是什么的)

  • 为什么手机只能充到百分之80的电(为什么手机只能拨打紧急电话了)

    为什么手机只能充到百分之80的电(为什么手机只能拨打紧急电话了)

  • 华为可以给苹果手机反向充电吗(华为可以给苹果隔空投送吗)

    华为可以给苹果手机反向充电吗(华为可以给苹果隔空投送吗)

  • 百家号发视频有收益吗(百家号发视频有时间长短要求吗)

    百家号发视频有收益吗(百家号发视频有时间长短要求吗)

  • 微信缴纳电费怎么退(微信缴纳电费怎么开票)

    微信缴纳电费怎么退(微信缴纳电费怎么开票)

  • 内存条怎么擦(内存条怎么擦没有橡皮)

    内存条怎么擦(内存条怎么擦没有橡皮)

  • wx2100相当于什么显卡(wx2100显卡什么级别)

    wx2100相当于什么显卡(wx2100显卡什么级别)

  • 华为手机会自动升级5G(华为手机会自动更新系统吗)

    华为手机会自动升级5G(华为手机会自动更新系统吗)

  • 1000兆流量是1g吗(一千兆流量)

    1000兆流量是1g吗(一千兆流量)

  • 苹果所有软件突然打不开(苹果所有软件突然没有相机权限了怎么办)

    苹果所有软件突然打不开(苹果所有软件突然没有相机权限了怎么办)

  • vue怎么做字幕(vue视频添加说话字幕)

    vue怎么做字幕(vue视频添加说话字幕)

  • 菜鸟裹裹啥意思(菜鸟裹裹啥意思啊)

    菜鸟裹裹啥意思(菜鸟裹裹啥意思啊)

  • 小米cc9e防水不(小米cc9防水等级)

    小米cc9e防水不(小米cc9防水等级)

  • 金山文档手机版如何编辑(金山文档手机版怎么手写签名)

    金山文档手机版如何编辑(金山文档手机版怎么手写签名)

  • 手机显示可打紧急电话怎么回事(手机显示可打紧急电话什么意思)

    手机显示可打紧急电话怎么回事(手机显示可打紧急电话什么意思)

  • oppo手机怎么调出农历(oppo手机怎么调4g网络)

    oppo手机怎么调出农历(oppo手机怎么调4g网络)

  • 虾米音乐如何切歌(虾米音乐怎么用耳机切歌)

    虾米音乐如何切歌(虾米音乐怎么用耳机切歌)

  • 自动换行在哪(office365自动换行在哪)

    自动换行在哪(office365自动换行在哪)

  • 苹果系统能降吗(苹果系统能降级吗)

    苹果系统能降吗(苹果系统能降级吗)

  • 华为mate x3最新消息(华为mate x3最新价格)

    华为mate x3最新消息(华为mate x3最新价格)

  • 公司出售房产缴纳税金如何凭证
  • 投资收益纳税调整明细表怎么填
  • 托收承付和委托收款的含义和相同之处
  • 在校大学生可以考教师资格证吗
  • 残保金计入管理费用还是营业税金及附加
  • 跨年租赁费如何处理
  • 如何自己开小公司
  • 自产委托加工用于简易计税
  • 公司给员工租的宿舍怎么交税
  • 个人取得什么收入不交税
  • 购销合同印花税优惠政策
  • 收购企业账务处理
  • 免征增值税对应的进项税额怎么处理
  • 去税务局交的社保能退么
  • 非营利组织取得稳岗补贴收入要交税吗
  • 留抵税额怎么计算
  • 股东向公司借款需要交税吗
  • 公司注销后是不是就不再接受诉讼
  • 外贸企业出口退税计算公式
  • 非公司员工缴纳社保有什么影响
  • 转正工资和试用工资区别
  • 公益性捐赠所得税处理
  • 王者荣耀中吕布的克星
  • 入库单的金额填不填价税合计
  • 施工组织评审会谁组织
  • 增值税税率简易征收
  • php add
  • 利润表中的收入是按什么确认的
  • 男人喜欢什么样的女人最容易动心
  • 相关企业之间的竞争
  • 哈雷6号
  • 收到债劵利息会减少吗
  • 以摊余成本计量且其变动计入当期损益
  • vue后端框架推荐
  • 如何写煎荷包蛋过程
  • 金税盘减免税款留抵
  • 数据挖掘期末考试大纲
  • mkdir命令怎么用
  • 增值税进项税抵扣凭证
  • 发票作废发票怎么处理
  • 农药免税政策文件有哪些
  • vue3.0用法
  • 企业所得税预缴可以不交吗
  • 商场收取租金如何入账
  • 不在经营范围内经营违反了什么法
  • 调整未分配利润影响所得税吗
  • 公司汽车转卖给个人税率
  • 个人向公司借款怎么写
  • 车辆处置缴纳增值税税率
  • 住宿费开专票怎么做账
  • 疫情防控重点保障企业名单
  • 银行电子承兑汇票到期怎么兑现
  • 加计扣除是什么时候申报
  • 印花税是怎么缴纳
  • 外出经营预缴税款表怎么填
  • 招待客户住宿属于什么费用
  • 预收账款科目账龄怎么算
  • 文本效果设置在哪
  • mysql忽略大小写设置
  • 苹果电脑mac怎么卸载软件
  • mmc无法创建管理单元win10
  • linux ssh rsa
  • Win10怎么修改hosts文件
  • windows10 天气
  • win7系统英雄联盟黑屏
  • Linux系统开源VPN Openvpn进程异常退出解决方法
  • linux安装步骤
  • cocos2d 动画
  • js移动端布局
  • 关于国内邮政汇兑冻结下列说法正确的有
  • python中判断
  • node.js原生支持的编码格式
  • 安卓开发者有多少
  • python列表讲解
  • jquery 延迟对象
  • python文件a
  • 医院电子发票怎么查
  • 四川税务干部学校官网
  • 湖南省电子税务局
  • 广东省电子税务局app下载官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设