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 实例