vue八股文1.0

131 阅读2分钟

Vue 中 v-if 和 v-show 都有什么区别? 如何使用?

  • v-if 会在切换过程中对条件块的事件监听器和⼦组件进⾏销毁和重建,如果初始条件是false,则什么都不做,直到条件第⼀次为true时才开始渲染模块。
  • v-show 只是基于css进⾏切换,不管初始条件是什么,都会渲染。
  • 或者
  • 当渲染条件不成立时,vif不渲染(DOM压根不存在),vshow不显示(display:none)
  • 适合用vshow的场景:频繁显隐;
  • 适合vif的场景:一锤子买卖(非VIP用户不给看【爽片专区】)

Vue 中 data 中响应式动态数据的修改驱动视图更新是同步的还是异步的? 谈谈你的理解?

  • 数据是同步更新,视图是异步更新
  • 因为如果视图更新是同步的,那会导致多次渲染浪费不必要的性能,没必要,内部做了去重(重新更新的值)和防抖(只更新最后一次)

谈谈你对 Vue 中 nextTick 的理解

在下次 DOM 更新循环结束之后执行延迟回调。nextTick主要使用了宏任务和微任务。根据执行环境分别尝试采用

  • Promise
  • MutationObserver
  • setImmediate
  • 如果以上都不行则采用setTimeout

它和 setTimeout 有什么区别?

  • 首先vue在更新DOM时是异步执行的,也就是说数据变了,DOM不会立即变化。
  • nextTick会先尝试用Promise,MutationObserver,setImmediate,如果以上都不行则采用setTimeout

Vue 中都有哪些常用的修饰符? 谈谈你的使用和理解?

  • 事件修饰符:stop,prevent,once,capture,self
  • 键盘修饰符: enter,esc,ctrl,meta,shift
  • 系统修饰符:exact
  • vmodel修饰符: lazy,number,trim
  • 自定义vmodel修饰符
  • 自定义指令中的修饰符

谈谈你对 Vue 中 this 对象的理解,如何确保 this 指向到当前 Vue 实例化对象?

除了回调函数中的 this ,其它地方的 this 均指向 Vue 实例