2021-12-24 面试题:vue(一) v-if和v-show的区别,nextTick,vue样式穿透,scoped的原理,路由导航守卫,ref,MVVM

本文深入解析Vue面试中常见的知识点,包括v-if与v-show的选择、this.$nextTick的原理与应用场景、Vue样式穿透的实现与scoped原理、路由导航守卫的种类及其注意事项,以及ref的使用和MVVM设计模式的解释。
摘要由CSDN通过智能技术生成

1.v-if和v-show的区别

回答:
v-show只值编译一次,v-if则是重复销毁和创建
v-show的本质是给标签设置display:none,是在控制css,v-if是通过添加和删除DOM元素来控制显示隐藏的
因此v-show的性能好一些

2.this.$nextTick 是如何设计的?nextTIck是什么?
回答

Vue 实现响应式并不是数据发生变化之后 DOM 立即变化,而是按一定的策略进行 DOM 的更新。
Vue 在修改数据后,视图不会立刻更新,而是等同一事件循环中的所有数据变化完成之后,再统一进行视图更新。
首先修改数据,这是同步任务。同一事件循环的所有的同步任务都在主线程上执行,形成一个执行栈,此时还未涉及 DOM 。
然后Vue 开启一个异步队列,并缓冲在此事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,只会被推入到队列中一次。

使用场景

mounted中并不会保证所有子组件都被挂载完成后再触发,
当用户希望视图完全渲染完成后再做某些事情时,需在mounted中使用$nextTick。

3.vue是如何做样式穿透的?
回答:

想在一个组件中覆盖插件的样式,就需要用到样式穿透。
vue中针对不同的样式类型(css,less,scss)有不用的样式穿透方法。

css 使用 >>>
less 使用 /deep/
scss 使用 ::v-deep

  1. css
<style scoped>
    >>> .c1 .c2{
     
        color: green !important;
    }
</style>
  1. less
<style scoped lang="less">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值