Vue实例中的Options
el
- 类型:
string | HTMLElement
- 作用:决定之后Vue实例管理哪一个DOM
data
- 类型:
Object | Function
- 作用:Vue实例对应的数据对象
methods
- 类型:
{[key:string]: Function}
- 作用:定义属于Vue实例的一些方法,可以在指令或其他地方调用
computed
- 每个计算属性都包含一个getter和setter(不常用)
- 缓存机制
指令
v-once
- 该指令后面不需要跟任何表达式
- 该指令表示元素和组件只渲染一次,不会随着数据的改变而改变
v-html
- 该指令后面往往会跟一个string类型
- 该指令会将string里面的html解析出来并渲染
v-text
- 作用和Mustache相似:都是用于将数据显示在界面中
- 通常接受一个string类型
v-pre
- 用于跳过这个元素及其子元素的编译过程,用于显示原本的Mustache语法
v-clock
- 用于避免尚未被编译的Mustache标签被显示出来
v-bink
- 作用:动态绑定一个或多个属性值,或者向另一个组件传递
props
值 - 语法糖:
:
绑定class
- 对象语法:
用法一:直接通过{}绑定一个类
<h2 :class="{'active': isActive}">Hello World</h2>
用法二:也可以通过判断,传入多个值
<h2 :class="{'active': isActive, 'line': isLine}">Hello World</h2>
用法三:和普通的类同时存在,并不冲突
注:如果isActive和isLine都为true,那么会有title/active/line三个类
<h2 class="title" :class="{'active': isActive, 'line': isLine}">Hello World</h2>
用法四:如果过于复杂,可以放在一个methods或者computed中
注:classes是一个计算属性
<h2 class="title" :class="classes">Hello World</h2>
- 数组语法(不常用):
用法一:传入单个值的数组
<h2 :class="['active']">Hello World</h2>
用法二:也可以传入多个值
<h2 :class=“[‘active’, 'line']">Hello World</h2>
用法三:和普通的类同时存在,并不冲突
注:会有title/active/line三个类
<h2 class="title" :class=“[‘active’, 'line']">Hello World</h2>
绑定style
- 对象语法:
:style="{color: currentColor, fontSize: fontSize + 'px'}"
注:
style后面跟的是一个对象类型
- 对象的key是CSS属性名称
- 对象的value是具体赋的值,值可以来自于data中的属性
- 数组语法:
<div v-bind:style="[baseStyles, overridingStyles]"></div>
注:
style后面跟的是一个数组类型
可以是多个值,分割即可
v-on
- 作用:绑定事件监听器
- 语法糖:
@
- 参数:
- 如果方法不需要参数,那么方法后面的
()
可以不加 - 如果方法本身有一个参数,那么默认会将原生事件event传入
- 如果同时需要传入参数和event,可以通过
$event
传入事件 - 修饰符:
.stop
:调用event.stropPropagation()
.prevent
:调用event.preventDefault()
.[keyUp|keyDown].[keyCode | keyAlias]
:键盘事件.native
:监听组件根元素的原生事件.once
:只触发一次回调
v-if
,v-else-if
,v-else
- 如果条件为假,那么对应的元素和子元素不会被渲染
v-show
- 如果条件为假,会将元素的display属性设置为none
v-for
- 类似python的for循环
- 需要索引值时:
v-for=(item, index) in items
- 官方推荐给对应的元素或组件加上
:key
属性 -> 为了高效的更新虚拟DOM
v-model
-
双向绑定:类似Angular的
ngModel
-
本质是一个语法糖,背后包含两个操作:
-
v-bind
绑定一个属性值 v-on
绑定一个input事件
<input type="text" v-model="message">
<!--等价于-->
<input type="text"
v-bind:value="message"
v-on:input="message = $event.target.value">
-
checkbox
-
单个:绑定的是布尔值
-
多个:绑定的是数组
-
select
-
单个:绑定的是一个值
-
多个:绑定的是一个数组
-
修饰符
-
lazy:让数据在失去焦点或者回车的时候才更新
- number:让输入框输入的内容自动转换为数字类型
- trim:过滤内容两边的空格