问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vue实现路由跳转的原理是什么,是调用js底层什么方法

发布网友 发布时间:2022-04-20 10:30

我来回答

1个回答

热心网友 时间:2023-09-26 06:42

突发奇想,vue-router做单页面应用的时候是如何保证路由跳转的呢?

源码中有两种模式,一种的history模式,另一种是hash模式。

其中abstract模式的应用场景应该是服务端渲染的时候,暂不考虑

以history模式为例,要实现一个完整的路由跳转,会经过如下路径:

    history.transition() -> history.confirmTransition() ->history.update(route)->app._route=route 

其中当app._route=route此时会触发vue组件的re-render,那么为什么呢?

因为

在这个地方使用vue的工具函数,使得_route属性被劫持,当_router初始赋值get时就已经收集了vm._watcher,该watcher是专门用来render该vm实例的,所有当app._router=router时就触发了re-render,通过router-view函数式组件render出匹配的组件。其中this._router.init(this)就是将app=this.

当然为了适应用户通过前进后退来进行单页切换的场景,vue-router里通过监听popstate事件来触发跳转

当然,在路由跳转过去中,vue-router底层通过对前后的组件进行比较判断出deactived,actived,updated的组件,然后提供组件切换过程的一些钩子函数,辅助开发者进行特性开发

如下:

文笔不怎么地,求踩!!!!!!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 养宠物的人遵守规则,是不是就能和别人平安相处呢? vue-router.js 路由刷新后不能点击 可以在vue.js文件中修改router.js文件吗 别人给我发一个语音的聊天记录怎么显示暂时不支持播放啊? Oppo手机录音转发到微信怎么播放不了? 《国富论》第一篇的评价 求《国富论》读后感3000字.. 《国富论》的主要内容? stranded deep怎么生火 大连经山东上海浙江江西自驾游路线 "看不见的手"最早出自国富论第四篇的哪一章 荒岛求生stranded deep除了喝椰汁还能怎么补充水分 从大连出发自驾游终点是北京 荒岛求生stranded deep手游什么时候开放 国富论第五篇 论君主或国家收入主要讲什么,大体意... strandeddeep有手机游戏吗 国富论一二卷读后感 已阻止Stranded Deep访问图形硬件怎么办 国富论主要有哪些内容? stranded deep(深海搁浅、荒岛生存2)怎么喝水? 《国富论》对后世的影响 关于vue-router接收参数? vue.js 使用vue-router的动态路由时,为什么刷新就... vue-router组件里面点击一个按钮跳转到一个新的组... vue2.0 js routes怎么跳转路由 Vue.js中的router是什么意思 vue-router路由切换数据加载中效果是怎么实现的 vue.js vue-router vue后台管理系统的侧边栏 怎么和router.js里面的路... Vue.js 2.0 vue-router怎么设置路由 vue引入的js文件修改路由不能跳转 vue.js路由中怎么用iframe 做什么运动可以提高性能力? 增强性功能的最佳运动 男性有哪些可以增强性功能的锻炼? 平时做什么运动可以提高性功能啊? 性功能锻炼有哪些方法 哪些运动可提升你的性能力 如何运动才能够提高性能力 增强男性性功能运动? 如何通过锻炼提高性功能