vue面试题

v-show和v-if的区别

  • v-show通过CSS display控制显示和隐藏
  • v-if组件真正的渲染和销毁,而不是显示和隐藏
  • 频繁切换显示状态就用v-show,否则用v-if

为何在v-for中用key

  • 必须用key,且不能是index和random
  • diff算法中通过tag 和key来判断,是否是sameNode
  • 减少渲染次数,提升渲染性能

描述Vue组件生命周期(父子组件)

vue组件如何通信

  • 父子组件props和this.$emit
  • 自定义事件event. n o e v e n t . no event. noevent.off event.$emit
  • vuex

描述组件渲染和更新的过程

在这里插入图片描述

双向数据绑定v-model的实现原理

对mvvm的理解

在这里插入图片描述

computed有何特点

  • 缓存,data不变不会重新计算
  • 提高性能

为何组件data是一个函数

组件实例化共享数据(class)

ajax请求应该放在哪个生命周期

  • mounted
  • js是单线程,ajax异步获取数据
  • 放在mounted之前没有用,只会让逻辑更混乱

如何将组件所有props传递给子组件

  • $props
  • <User v-bind=’$props’>

自己实现v-model

多个组件有相同的逻辑,如何抽离

mixin

何时使用异步组件

-加载大组件
路由异步加载

何时需要使用keep-alive

  • 缓存组件,不需要重复渲染
  • 如多个静态tab页的切换
  • 优化性能

何时需要使用beforeDestory

  • 解绑自定义事件event.$off
  • 清除定时器
  • 解绑自定义的DOM事件,如window.scroll等

什么是作用域插槽

vuex中action和mutation有何区别

  • action中处理异步,mutation不可以
  • mutation做原子操作
  • action可以整合多个mutation

Vue-router常用的路由模式

  • hash默认
  • H5 history(需要服务器支持)
  • 两者比较

如何配置Vue-router异步加载

在这里插入图片描述

请用vnode描述一个DOM结构

在这里插入图片描述

监听data的核心API

  • object.defineProperty
  • 以及深度监听、监听数组
  • 有何缺点

Vue如何监听数组变化

  • object.defineProperty不能监听数组变化
  • 重新定义原型,重写pop push等方法,实现监听
  • proxy可以原生支持监听数组变化

请描述响应式原理

-监听data变化
组件渲染和更新的流程

diff算法的事件复杂度

  • o(n)

简述diff算法过程

-patch(elem,vnode)和patch(vnode,newVnode)
patchVnode和addVnodes和removeVnodes
updataChildren(key的重要性)

vue为何是异步渲染,$nextTick何用

  • 异步渲染(以及合并data修改),以提高渲染性能
  • $nextTick在DOM更新完之后,触发回调

vue常见性能优化

合理使用v-show和v-if
合理使用computed
v-for时加key,以及避免和v-if同时使用
自定义事件、DOM事件及时销毁(内存泄漏)
合理使用异步组件
合理使用keep-alive
data层级不要太深
使用vue-loader在开发环境做模板编译(预编译)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值