为什么子组件中的data必须是一个函数

如果data是对象,那么在获取这个对象,将是引用的状态(联系深浅拷贝),所以组件之间的data容易混,但是瑞国data是一个函数的话,那么返回的将是一个独有的对象,不会有闭包和作用域污染等问题

v-if和v-for的优先级

先for再if

Vue中的观察者和发布订阅模式分别体现在哪里

发布订阅

$emit/$on

观察者模式

Observe 每个属性的依赖收集

组件间所有通信方式

  • props
  • emit/on
  • provide/inject
  • attrs/listeners
  • 应该还有...

Vue生命周期

父组件mounted => data props methods provide 等属性初始化 => 子组件mounted
在源码中有

computed和watch的区别

computed是生成一个新的数据 并且是函数的形式
watch是监听一个在data或其他地方原有的属性,然后给它添加get和set方法

Vue.mixin和Vue.extend有什么应用场景

mixin是在每一个组件的某个方法中添加一些属性,extend是类似直接创建一个组件(这里还不太清楚)

Vue.$nextTick和Vue.set分别是什么

nextTick 是一个基于Promise封装的方法,里面可以写一个回调函数,并且在DOM更新之后才执行
set可以更加深层次监听数据 还没搞懂

什么是虚拟dom 以及dom diff

在一个Vue单文件中,先找到render函数 然后再找template 然后再找el属性。
先将render函数中的DOM转为一个对象形式的文件,然后在进行数据的更新和比对之后,再渲染成真实的DOM
为什么这么做?
真实DOM中有很多的属性,如果将其全部操作一遍的话,将会非常耗费性能

组件间传值时,v-model是什么语法的语法糖

v-model相当于 :value=value @input="input"
子组件中 props接受value,在方法中$on("input",payload) 即可

未完待续...

最后修改:2020 年 09 月 14 日 09 : 20 AM
如果觉得我的文章对你有用,请随意赞赏