前端面试题总结(一)

Vue 部分

1、v-show跟v-if的区别?

相同点:v-if和v-show都可以动态控制dom元素的显示隐藏。

不通点:v-if是显示隐藏是将dom元素整个添加和删除,而v-show是隐藏是则是为该元素添加css-display:none,dom元素还在。

2、虚拟dom是什么?作用?

虚拟dom就是用js对象来描述真实Dom,是对真实Dom的抽象

  • 由于直接操作Dom性能低,但是js层的操作效率高,可以将Dom操作转化成对象操作。最终通过 diff 算法比对差异进行更新Dom
  • 虚拟Dom不依赖真实平台环境,可以实现跨平台

3.v-for跟v-if可以同时使用吗?

v-for比v-if优先级高,每次v-for都会执行v-if,造成不必要的计算,影响性能

4、v-for中的key的作用?

为了更高效使用虚拟dom配合diff算法更新视图 标签名一样,key一样采用就地复用策略

5、修饰符有哪些?

事件修饰符(常用)

stop 阻止事件冒泡

capture 捕获事件 给需要捕获的元素添加

self 只触发自己本身(相当于给所有子元素添加阻止冒泡)

prevent 阻止默认事件

v-model修饰符(常用)

trim 清除左右两边空格

number 转成数字类型

6、v-model(双向数据绑定)的原理?

采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter, getter,在数据变动时发布消息给订阅者,触发相应的监听回调。就必须要实现以下几点:

  • 实现一个数据监听器Observer,能够对数据对象的所有属性进行监听,如有变动可拿到最新值并通 知订阅者
  • 实现一个指令解析器Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据, 以及绑定相应的更新函数 3、实现一个Watcher,作为连接Observer和Compile的桥梁,能够订阅并收到每个属性变动的通知, 执行指令绑定的相应回调函数,从而更新视图

7.vue文件中style中的scoped原理?

作用:防止组件的样式互相污染

原理:解析template里面的标签的时候,会在标签元素上添加一个唯一哈希值属性名,编译css样式时添 加属性选择器

8.$mount 跟el区别?

联系:$mount和el都是用来将vue实例挂载到dom上的

区别:el是自动挂载,$mount是手动挂载(灵活一点)

el本质也是调用$mount方法挂载(vue源码记载)

el的优先级比mount高(vue源码记载,绑定el,mount高(vue源码记载,绑定el,mount不会生效)

9.Computed 和 Watch 的区别

对于Computed:

  • 它支持缓存,只有依赖的数据发生了变化,才会重新计算
  • 不支持异步,当Computed中有异步操作时,无法监听数据的变化
  • computed的值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data声 明 过,或者父组件传递过来的props中的数据进行计算的。
  • 多对一的关系

对于Watch:

  • 它不支持缓存,数据变化时,它就会触发相应的操作
  • 支持异步监听
  • 监听的函数接收两个参数,第一个参数是最新的值,第二个是变化之前的值
  • 当一个属性发生变化时,就需要执行相应的操作
  • 监听数据必须是data中声明的或者父组件传递过来的props中的数据,当发生变化时,会触发其他 操 作
  • 监听属性参数:
  • immediate:组件加载立即触发回调函数
  • deep:深度监听,发现数据内部的变化,在复杂数据类型中使用,例如数组中的对象发生变 化。需要注 意的是,deep无法监听到数组和对象内部的变化。

10.谈谈你对生命周期的理解?什么阶段触发?

  • beforeCreated:实例初始化前,不能访问data,computed,methods,props等属性方法
  • created:已经创建完毕,此时可以访问初始化传入的data,computed,methods,props可以
  • beforeMount:$el还未生成,dom元素渲染到页面之前
  • mounted:$el已生成,dom元素已经渲染到页面(可以获取dom)
  • beforeUpdate:数据更新前,被调用,发生在虚拟Dom重新渲染和打补丁之前
  • updated:由于数据更改导致的虚拟Dom重新渲染和打补丁
  • beforeDestroyed:销毁前,Vue实例中的所有数据都是可以访问的; (清除定时器和解绑事件监听)
  • destroyed:销毁完毕,,Vue实例中的所有数据都是可以访问的;(清除定时器和解绑事件监听)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值