响应式:
利用Object.defineProperty实现数据劫持
-
vue中哪种情况下页面不会渲染数据?
- 未经过声明的
- 声明,但未在DOM中使用的 <渲染页面,操作DOM 非常消耗性能>
-
更改数据后,页面会立刻重新渲染吗?
- 不会。页面渲染的操作是异步执行的
- 在虚拟DOM中渲染的
-
如果想要拿到渲染过后的DOM元素,使用vm.$nextTick() / Vue.nextTick()
-
vue当中的一些缺点
- 会一直等待主线程上的任务执行完毕,才会渲染,还有可能出现卡死状态
-
更改数组:
- 变异方法:push、pop、shift、unshift、splice、sort、reverse (跟正常数组使用方法一样);
- vm.$set(要改谁,index,改成啥) 或Vue.set(要改谁,index,改成啥);
- vm.$delete(要删除谁的值,删除的下标)
-
对象:
- vm.$set(要改谁,index,改成啥) 或Vue.set(要改谁,index,改成啥);
- vm.$delete(要删除谁的值,删除的下标)
vue指令:
-
v-pre <不常用>
- 跳过元素和它的子元素的编译过程
- 好处:跳过没有指令的节点,加快编译
-
v-cloak <不常用>
- 作用:解决闪烁的问题
-
v-once <不常用>
- 作用:只渲染一次
- 好处:可优化性能
-
v-text
-
v-html
- 更新元素的innerHTML
- 在可信的内容上使用V-html , 不用用户提价的内容
-
v-if 条件不成立显示-> v-else-if 条件不成立显示-> else
- 根据条件(真值就显示,假值就不显示),判断是否要展示某一个元素
-
v-show
-
与v-if的不同点:
- v-if是将元素彻底移除,元素不存在在页面上; v-show将元素设置为display:none;
- v-if 支持template, v-show 不支持template
- v-show 不支持v-esle 和 v-else-if
- v-if有更高的切换开销,v-show有更高的初始化渲染开销,
v-if与v-show详解
第六条和第七条有称作条件渲染
-
-
v-bind
- 动态的绑定一个或多个
- 修饰符
- camel:解决自动转换小写
- prop:用于绑定dom属性的
- sync:
-
v-on
- 绑定事件
-
v-for
- 列表渲染
- 遍历对象的时候有三个值,(value , key , index)
- 遍历数组的时候有两个值
- 便利数字 value in number
- 可以便利字符串 string in strings
-
v-model
- 可以在表单元素上创建双向数据绑定(也是一个语法糖)
- 只能在下面几个属性上面使用
- input
- 实际上是监听了input框里面的oninput事件,并且绑定value
- v-model在input框中等同于@input=“msg=$event.target.value” :value=‘msg’
- teaxtarea
- select
- 组件
- input
计算属性
-
计算属性是vue配置对象上面的属性
-
计算属性跟方法一样都需要放到一个对象里面
-
computed:{ //计算属性里面都是key:value的形式 eg: someComputed:function(){ return "xxx"; //需要在这个函数中返回一个值; } }
-
-
计算属性最终运行的是返回的值
-
调用计算属性的时候不加括号,不是函数,不能运行
计算属性与方法的区别
- 计算属性会缓存,方法methods会多次调用
- 方法是只要页面渲染就执行,而计算属性是只有它依赖的数据改变了才会执行
- 最本质的区别:计算属性是基于响应式依赖进行缓存的
- 为什么需要缓存,因为节省了性能开销
- 对任何复杂的逻辑,都应该使用计算属性
将计算属性拆开成对象类型
-
对象里面有getter(读取)和setter(设置)两个方法
-
分别对应两个函数get() {读取时执行的函数}和set () {对des重新设置值的时候执行}
-
des:{ get(){ console.log('get执行了'); return `姓名${this.name},年龄${this.age}` }, set(value){ console.log('set执行了',value) //value可以获取更改后的值 return `姓名${this.name},年龄${this.age}` } }
-
-
get就相当于写的一个普通的函数
谢谢访问!
持续更新…