v-once指令
当数据发生变化时,元素或者组件以及其所有的子元素将视为静态内容并且跳过,可用于性能优化
v-text指令
用于更新元素的 textContent, <span v-text ="xxx"></span>
v-html指令
与v-text类似 可以解析html
v-pre指令
用于跳过元素和它的子元素的编译过程,显示原始的Mustache标签
v-cloak指令
和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到组件实 例准备完毕, 可以避免没有编译结束直接渲染造成的闪跳画面
v-bind指令
动态地绑定一个或多个 attribute,或一个组件 prop 到表达式
语法糖::
绑定class
绑定style
CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名
动态绑定属性
绑定一个对象
v-on指令
绑定事件监听
语法糖:@
传递参数
v-if、v-else、v-else-if 指令
这些内容只有在条件为true时,才会被渲染出来
v-show 指令
根据一个条件决定是否显示元素或者组件
v-if v-show 区别
v-for指令
遍历一组数据
遍历数组 <li v-for="(item,index) in 数组">
遍历对象 <li v-for="(value, key, index) in 对象">
遍历数字 <li v-for="item in 数字">
可以使用 of 代替 in
将被vue侦听的数组的变更方法
push()末尾加 pop()末尾删 shift() 开头删unshift()开头加 splice() 增删 sort() 排序reverse()反转
v-for key 作用
key属性主要用在Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes;
在进行插入或者重置顺序的时候,保持相同的key可以让diff算法更加的高效
如果不使用key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法;
而使用key时,它会基于key的变化重新排列元素顺序,并且会移除/销毁key不存在的元素
源码分析
有key,那么就使用 patchKeyedChildren方法
没有key,那么久使用 patchUnkeyedChildren方法;
无key:
有key
v-model指令
v-model指令可以在表单 input、textarea以及select元素上创建双向数据绑定
原理:v-bind绑定value属性的值; v-on绑定input事件监听到函数中,函数会获取最新的值赋值到绑定的属性中
v-model 绑定其他表单类型
textarea 与text类似、checkbox、radio、select 需要value属性 v-model会使用value绑定的值
修饰符
lazy: 默认情况下,v-model在进行双向绑定时,绑定的是input事件,那么会在每次内容输入后就将最新的值和绑定 的属性进行同步;如果我们在v-model后跟上lazy修饰符,那么会将绑定的事件切换为 change 事件,只有在提交时(比如回车) 才会触发;
number:v-model绑定的值总是string类型,当你需要number类型时,可以使用number修饰符,问:既然是string类型,为啥在逻辑判断中可以与number类型比较,答:js在逻辑判断中有隐式转换
trim :去除两边空格