本文主要介绍的是关于Vue 2.x之基础API的相关内容,主要内容如下
- 模板语法(文本插值、属性绑定、JS表达式、过滤器、指令)
- Vue实例(viewModal(属性+函数)、生命周期)
- 计算属性和监听器 (computed(get,set) 与 watch)
- 样式绑定(对象绑定、数组绑定、内联绑定)
- 条件绑定(v-if v-show)
- 列表渲染 (v-for、:key、数组监测、过滤/排序)
- 事件处理 (监听、修饰符、key修饰符)
- 表单输入绑定(text、checkBox、radio、select)
一、模板语法
文本插值
属性绑定
模板中的JS
过滤器
指令
注册过滤器
注意
注册指令
二、Vue实例
Vue 实例,实则也就是 viewmodel(数据 + 函数),都是通过构造函数 Vue 创建
三、计算属性与监听器
computed
任何复杂逻辑,都应当使用计算属性
声明式地创建依赖关系,计算属性的 getter 是干净无副作用的,因此也是易于测试和理解的。
Computed reversed message: "{{ reversedMessage }}"
使用 methods 和 filter 也能达到计算属性同样的效果,但计算属性使模板更加简单清晰(模板中放入太多的逻辑会让模板过重且难以维护)。
计算属性有 计算缓存 的特性,计算属性是基于它的依赖缓存,只有在它的相关依赖发生改变时才会重新取值,而 methods 每次执行都会重新取值。
什么需要缓存?
假设我们有一个重要的计算属性 A ,这个计算属性需要一个巨大的数组遍历和做大量的计算。然后我们可能有其他的计算属性依赖于 A 。如果没有缓存,我们将不可避免的多次执行 A 的 getter !如果你不希望有缓存,请用 method 替代。
getter与setter
计算属性默认为 getter
也可以添加 setter
watch
使用 watch 来监听data,实时响应数据的变化
例:监听用户输入,显示 正在输入...,输入完成时,显示 请稍等...,并发送异步请求,请求成功里,显示答案
使用 watch 选项允许我们执行异步操作(访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这是计算属性无法做到的。
四、样式绑定
使用 v-bind:class
与 v-bind:style
来绑定样式
对象语法绑定
class 绑定的是对象的 key,如果对象的值为 true,则绑定 key
style 绑定的整个 对象
绑定 class
绑定style
数组语法绑定
class 绑定的是数组的 值
style 绑定的是数组中的 对象
五、条件渲染
v-if
切换元素的隐藏和显示 v-if、v-else、v-if-else
切换单个元素
No
切换多个元素
Paragraph 1
Paragraph 2
多条件判断
条件渲染默认会复用相同的组件,如果不复用元素,可添加 key 值
v-show
用于切换元素样式属性 display 的 block 和 none
与 v-if 不同的是,元素隐藏时,并没有从DOM中删除,而 v-if 是删除了元素保存在缓存中。
注意 v-show 不支持 语法
v-if 是真实的条件渲染,因为它会确保条件块在切换当中适当地销毁与重建条件块内的事件监听器和子组件。
v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——在条件第一次变为真时才开始局部编译(编译会被缓存起来)。
区分 v-if 与 v-show 的使用场景:
- v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗
- 如果需要频繁切换使用 v-show 较好
- 如果在运行时条件不大可能改变则使用 v-if 较好
六、列表渲染
v-for='item of items / item in items'
用于迭代对象或数组中的元素
基本用法
数组迭代
对象迭代
循环组件,向组件中传递数据
组件有自己的作用域,向组件中传递数据需要使用属性传递
v-for 具有比 v-if 更高的优先级
判断每一个todo项是否可显示
判断是否需要迭代todos
添加 key 属性
提升重复渲染效率
数组监测
Vue重写了数组的变异方法,用于监测数组的更新
push()
、pop()
、shift()
、unshift()
、
splice()
、sort()
、reverse()
这些操作会改变原有数组,为变异方法
非变异方法返回新的数组,可以用于替换旧的数组
过滤/排序
使用计算属性对原有数组进行过滤和排序
七、事件监听
v-on
v-on 用于监听绑定的事件
原生事件对象
使用 $event 传递原生事件对象
事件修饰符
methods 应该只处理纯粹的数据逻辑,而不是去处理 DOM 事件细节
.stop 阻止事件冒泡
.prevent 阻止默认事件
.capture 使用捕获模式
.self 只有当事件作用于本身时才触发
.once 只绑定一次