每天10道vue面试题

127 阅读2分钟

第一天

  1. v-show和v-if的区别
    答:v-show通过css display控制显示和隐藏,v-if组件真正的渲染和销毁,而不是显示和隐藏,频繁切换状态使用v-show 否则v-if

  2. 为何v-for要用key
    答:快速查找到节点,减少渲染次数,提升渲染性能

  3. 组件渲染和更新的过程
    ①、初次渲染
    答:1、解析模板为rander函数
    2、触发响应式,监听 data 属性的 getter 和 setter
    3、执行 render 函数, 生成 vnode,patch
    ②、更新过程
    答:1、修改 data,触发 setter(此前在getter中已被监听)
    2、重新执行 render 函数,生成 newVnode,patch(vnode, newVnode)

  4. computed有何特性
    答:做缓存,data中的值不改变不会重新计算,提高性能

  5. ajax请求应该放在哪个生命周期
    答:create或mounted因为js是单线程,ajax异步获取数据

  6. 如何将组件所有props传递给子组件?
    答:父组件绑定一个自定义属性变量,然后子组件通过props使用这个变量即可。

  7. ## vue为何是异步渲染,nextTick何用?
    答:①、因为如果不采用异步更新,那么每次更新数据都会对当前组件进行重新渲染,所以考虑性能问题,Vue会在本轮数据更新之后,再去异步更新视图 ②、nextTick是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 nextTick,则可以在回调中获取更新后的DOM

  8. 子组件调用父组件的方法
    答:1.直接在子组件中通过this.parent.event来调用父组件的方法
    2.在子组件里用$emit向父组件触发一个事件,父组件监听这个事件就行了
    3.父组件把方法传入子组件中,在子组件里直接调用这个方法

  9. 父组件调用子组件的方法
    答:在子组件上绑定ref属性,通过this.$refs.子组件方法即可

  10. route和$router的区别是什么?
    答:①、router为VueRouter的实例,是一个全局路由对象,包含了路由跳转的方法、钩子函数等
    ②、route 是路由信息对象||跳转的路由对象,每一个路由都会有一个route对象,是一个局部对象,包含path,params,hash,query,fullPath,matched,name等路由信息参数。