- 双向数据绑定的原理
答:vue.js 是采用了数据劫持结合发布者和订阅者模式的方式,通过object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调
2.使用 Object.defineProperty() 来进行数据劫持有什么缺点?
答:在对一下属性进行操作时,使用这种方法将无法拦截,比如修改数组数据或者给对象新增属性,这些都不能触发组件的重新渲染,因为object.defineProperty不能拦截到这些操作
3.MVVM、MVC的区别
答:MVC是一个架构模式,model负责存储页面的业务逻辑和数据操作,view负责视图展示,controller是view和mode的纽带,当model层数据发生改变时通知view层进行更新,当view层页面产生交互时,调用model层完成数据的修改,然后model层再通知view层更新
MVVM:Model层代码数据模型,数据和业务逻辑都在Model中定义,view代码Ul视图,负责数据的展示,viewModel负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作
4.Computed 和 Watch 的区别
答:1.定义不同
Watch监听的属性需要提前声明定义,computed中的方法不能与其他属性相同
- 调用不同
Watch中的方法不需要调用,computed中方法调用不需要加()
3.是否支持异步操作
Watch支持异步,computed不支持异步
5.Computed 和 Methods 的区别
答:1.计算属性是对数据进行计算,methods是对方法进行操作
2.计算属性只能进行同步操作,methods可以有同步也可以有异步操作
3.计算属性默认只会执行一次,methods默认不会执行
4.计算属性是基于依赖进行缓存的,而方法不会进行缓存
6.常见的事件修饰符及其作用
答:1. .prevent:阻止(表单提交,超链接)默认行为
2. .stop:阻止事件冒泡
3 .once:只执行一次事件
4. .self:只有触发事件源时才会触发
7.v-if、v-show、v-html 的原理
答:v-if :会调用addlfCondition方法,生成vnode的时候会忽略对应节点,渲染的时候就不会渲染
V-show:会调用vnode,渲染的时候会染成真实节点,只是在渲染过程中会在节点的属性中修改show的属性值,也就是常说的display
V-html:是设置innerHTML为v-html的
8.v-if和v-show的区别
答: v-if:根据条件决定dom节点创建与删除
V-show:根据条件控制dom元素的display属性,对于频繁操作dom节点的时候,建议使用v-show
9. v-model 是如何实现的,语法糖实际是什么?
答:实现:v-model是v-bind:msg(属性)和v-on:input的语法糖
操作:动态绑定了input的value值并且在触发input事件的时候动态的把msg的值设置为e.targer.value
10.v-model 可以被用在自定义组件上吗?如果可以,如何使用?
答: 可以用在自定义组件上
<custom-input v-model=”searchText”>