• 技术文章 >web前端 >Vue.js

    【整理分享】一些vue-router相关面试题(附答案解析)

    青灯夜游青灯夜游2023-03-03 19:40:26转载277

    本篇文章给大家总结分享一些vue-router的相关面试题(附答案解析),带你梳理基础知识,增强vue-router知识储备,值得收藏,快来看看吧!

    vue-router的原理

    在单页面应用中,不同组件之间的切换需要通过前端路由来实现。

    前端路由

    1.key是路径,value是组件,用于展示页面内容
    2.工作过程:当浏览器的路径改变时,对应的组件就会显示。
    vue-router的路由作用:将组件映射到路由, 然后渲染出来

    主要就是

    路由的hash模式

    改变URL的三种方式

    优点

    缺点

    路由的history模式 - 利用H5的history API

    优点

    缺点

    $route和$router有什么区别?

    $router是VueRouter的实例对象,表示整个应用的唯一路由器对象。包含了路由跳转的方法、钩子函数等。
    $route是当前路由对象,表示本组件的路由规则,每一个路由都会有一个route对象,是一个局部对象。

    vue-router参数传递的几种方式,有什么区别?

    -描述如何指定跳转的路由如果没有传参可以传参没有要求的值吗
    params参数路径/params参数必须要使用name指定路由params是路由的一部分,如果在配置了占位符必须要有
    如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。
    传递路径上没有的占位符,地址栏上不会显示并且刷新会丢失
    query参数路径? key1=val1 & key2=val2....1.可以使用name指定路由
    2.可以使用path指定路由
    query是拼接在url后面的参数,没有也没关系query不会

    vue-router参数丢失的问题

    params参数传递的时候,传递了设置占位符接收的参数,地址栏不会显示并且刷新会丢失。

    解决办法:可以通过this.$route.params获取参数保存在本地

    vue-router有几种钩子函数?具体是什么及执行流程是怎样的?

    vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。

    进入组件前的调用的顺序 beforeEach()=>beforeEnter()=>beforeRouteEnter()=>beforeResolve() 这个过程不可以使用this,因为组件实例还没有被创建,所以需要利用next函数

    完整的导航解析流程
    1.导航被触发。
    2.在失活的组件里调用 beforeRouteLeave 守卫。
    3.调用全局的 beforeEach 守卫。
    4.在重用的组件里调用 beforeRouteUpdate 守卫。
    5.在路由配置里调用 beforeEnter
    6.解析异步路由组件。
    7.在被激活的组件里调用 beforeRouteEnter
    8.调用全局的 beforeResolve 守卫。
    9.导航被确认。
    10.调用全局的 afterEach 钩子。
    11.触发 DOM 更新。
    12.调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入

    在这里插入图片描述

    keep-alive

    keep-alive可以实现组件缓存,当组件切换时不会对当前组件进行卸载。

    keep-alive标签主要是有include、exclude、max三个属性

    两个生命周期activated/deactivated,用来得知当前组件是否处于活跃状态。

    keep-alive的原理 缓存管理+特殊的挂载/卸载流程

    特殊的卸载/挂载流程:activated/deactivated
    缓存管理:LRU(Least Recently Used)最近最少使用是一种淘汰算法

    特殊的卸载/挂载流程
    由于不能将组件真正的卸载,所以keep-alive是将组件从原容器移动到另外一个假容器中,实现假卸载。挂载的时候从隐藏容器中再搬运到原容器。对应到组件的activateddeactivated生命周期
    keepAlive会对内部组件(需要被缓存的)进行打标记

    在这里插入图片描述

    缓存策略:最近最少使用

    使用Map对象cache来实现对组件的缓存,key是vnode.type值,value为vnode对象,因为组件的vnode对象中存在对组件实例的引用(vnode.component)

    (学习视频分享:vuejs入门教程编程基础视频

    以上就是【整理分享】一些vue-router相关面试题(附答案解析)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:面试题 vue-router Vue
    上一篇:手把手教你用Vue3写播放器 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • JavaScript中Vue-router有哪些钩子及应用?• 10个关于路由vue-router的vuejs面试题(含答案解析)• vue-router两种模式有什么区别• vue-router有哪些路由守卫• 详解Vue-router子路由(嵌套路由)如何创建• 一文掌握vue-router的安装与使用• 一文深入详解Vue路由:vue-router
    1/1

    PHP中文网