vue面试题

182 阅读2分钟

一、keep-alive

当在组件之间切换时,想要保持组件的状态,可以使用keep-alive元素将组件包裹起来,这样可以保持原来组件的状态

但有一个问题是:

被keep-alive缓存的组件的created,mounted这些生命周期钩子函数只会执行一次,后面会失效,所以如果keep-active包裹的组件涉及到ajax请求或dom操作的话,可以使用keep-alive的两个钩子函数:
activated:created-->mounted-->activated,后面只会执行activated
deactivated:页面退出的时候会触发deactivated,当再次前进或者后退的时候只触发activated

二、vue双向绑定的原理

原理主要是通过数据劫持Object.defineProperty和发布订阅模式实现的,通过Object.defineProperty监听数据发生变化然后通知订阅者,订阅者触发响应的回调

三、期待vue3.0有什么功能或改进

vue 2.0版本的双向数据绑定的原理是Object.defineProperty,它的缺点是无法监听索引修改数组的值的变化

四、vue定时器要怎么销毁

beforeDestroy

五、<template></template>有什么用

当做一个不可见的包裹元素,减少不必要的DOM元素,整个结构会更加清晰。

六、vue的核心是什么

1、数据驱动

  • 使用的是MVVM的思想
  • 数据是响应式的
  • 当M改变的时候,通知vm,来同步修改v

2、virtual DOM 数据->虚拟dom->dom

  • 对象 描述一个dom元素

3、组件化

  • 父向子
  • 子向父
  • 兄弟组件
  • vuex

七、第一次加载页面会执行哪几个钩子函数

  • beforeCreate, created, beforeMount, mounted
  • 当数据改变的时候 beforeUpdate updated
  • 当组件销毁的时候 beforeDestory desgtoryed

八、在什么场景下会用到嵌套路由

  • 举个例子,例如做个管理系统,顶部栏和左侧菜单栏是全局通用的,那就应该放在父路由,而右下的页面内容部分放在子路由

九、route和router有什么区别

1 route

代表当前路由,包括path、params、hash、query等

2 router

整个vue实例下的路由对象(router对象) 可以进行页面的跳转,this.router.push(),this.router.go(-1)

十、捕获所有路由或 404 Not found 路由

捕获所有路由:如果想匹配任意路径,可以使用通配符*

404 Not found 路由:写在所有路由得最后面,如果未匹配到路由,就会显示404页面

十一、active-class 是哪个组件的属性

router-link的一个属性,可以用来设置激活的路由的类名,如果不设置,默认的类名叫router-link-active

十二、怎么定义 vue-router 的动态路由以及如何获取传过来的动态参数

$route.params.id

十三、响应路由参数的变化