v-if和v-show的区别?
v-if是通过控制节点来控制元素的显示,v-show是通过样式来实现元素的显示,也就是display:none;
v-if和v-else可以一起使用的,要使用v-else必须要有v-if
v-if如果值为false,那么它就不加载,但v-show不是,v-if是惰性加载
使用场景不同,v-if通常用在元素并不是那么频繁切换的元素上,v-show则反之。原因,频繁的消耗节点,不利网站性能。
vue中常见的指令
普通数据绑定:v-html,v-text,{{}}
区别:只有v-html 可以解析标签,v-text不会造成首次闪屏问题
表单数据绑定:
v-model
v-model是双向绑定的
原理:vue的双向绑定原理简单来说就是:vue内部使用object.defineProperty方法给所有数据加上getter和setter方法,在数据发生改变时发布消息给订阅者Watcher,触发响应的监听回调。
事件绑定:
v-on
属性绑定:
v-bind
列表渲染:
v-for
v-if和v-for的区别
v-for高于v-if,所以不要把v-for和v-if放在同一个标签上,会造成性能浪费。
其中key有什么作用?
当 Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。
注意:不要使用对象或数组之类的非基本类型值作为 v-for 的 key。请用字符串或数值类型的值。
watch和computed的区别以及使用场景
区别:
watch中的函数是不需要调用的
computed内部的函数调用的时候不需要加()watch 属性监听 监听属性的变化 computed:计算属性 通过属性计算而得来的属性 watch需要在数据变化时执行异步或开销较大的操作时使用 computed 属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。主要当作属性来使用。 使用场景: computed 当一个属性受多个属性影响的时候就需要用到computed 最典型的例子: 购物车商品结算的时候 watch 当一条数据影响多条数据的时候就需要用watch 搜索数据
vue检测不到数组的改变,怎么解决?
(1)vm.arr.splice(index, 1, newValue) (2)vm.$set(vm.arr, index, newValue) (3)Vue.set(vm.arr, index, newValue)
vue检测不到对象添加或者删除了一个属性怎么办?
(1)Vue.set(vm.user, ‘age’, 27) (2)vm.$set(vm.user, ‘age’, 27)
解释 MVVM
M-model 模型-数据 V-view 视图-浏览器 VM-viewModel 视图模型(控制器) 模型通过控制器控制视图 视图又可以通过控制器修改模型 控制器是连接模型和视图的桥梁
MVVM类型的框架和jq有什么区别?分别适用什么场景?
MVVM更擅长数据的增删改查, jq更擅长的是dom节点操作 动画效果 场景:数据多选择mvvm,动画或者dom节点操作比较多,选择jq