- 声明式的将DOM绑定到底层Vue实例
- Vue是响应式的
- 只有Vue实例被创建时,property已在data中,数据才是响应式的,之后创建的不行
- 一般先在fata中声明property,如果一开始它是空的,那么可以给它初始化为特殊值,如0,true, false等
- 如何阻止响应,Object. freeze(property)
- 指令
- 条件与循环
- 父作用域将数据传递给子组件props
- 一个Vue应用的结构(一个根,根下有很多子组件,树结构)
- 数据对象的使用,相当于引用方式,赋值给别人,别人变了我也变。
- $,实例property与方法,是Vue实例的property, 如vm. $el, 其实它和绑定的DOM元素相等。方法就是Vue实例提供的方法,不是用户定义的
- Vue中有this关键字,与面向对象语言一样的功能,但箭头函数中没有this,如created: () => console.log(this.a),是错误写法
- Vue实例生命周期:创建前,创建后,挂载(与DOM联系)前,已挂载,(有数据变化就:更新前,已更新,已挂载),销毁前,已销毁。
1. 什么是动态参数?指令的参数(html标签的属性)用[属性名]的形式绑定到data中,属性名对应的值是原生html的属性名称
2. 动态参数值为字符串,默认null,其他类型触发警告,且不能有空格和引号,命名要全小写
3. 什么是计算属性
4. 什么是修饰符?以. 开头,作用于指令,阻止默认行为等操作
5. 指令的缩写
- 计算属性computed干嘛用的?处理复杂逻辑。如字符串反转。
- 计算属性有点方法methods
- 计算属性基于缓存,响应式依赖。
- 方法每次都要重新运行函数
- 默认有getter方法,可以设置setter方法
- 监听属性等的变化开进行相应操作
- 一些数据需要随着其它数据变动而变动时,用计算属性比较好
- 当需要在数据变化时执行异步(访问一个 API)或开销较大的操作时,这个方式是最有用的。
- 使用
watch选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
-
对象语法
对象元素在data里
在data里定义对象,直接绑定改对象
可配合计算属性
-
数组语法
三元表达式
-
数组语法+对象语法,对象放在数组里
-
用在组件上
当在一个自定义组件上使用
classproperty 时,这些 class 将被添加到该组件的根元素上面。这个元素上已经存在的 class 不会被覆盖。(只添加,不覆盖)
-
对象语法
对象元素在data里
在data里定义对象,直接绑定改对象
可配合计算属性
-
数组语法
-
自动添加前缀
当
v-bind:style使用需要添加浏览器引擎前缀的 CSS property 时,如transform,Vue.js 会自动侦测并添加相应的前缀。 -
多重值
-
从 2.3.0 起你可以为
style绑定中的 property 提供一个包含多个值的数组,常用于提供多个带前缀的值。 -
truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除
false、0、""、null、undefined和NaN以外皆为真值)。 -
JavaScript 中的真值示例如下(将被转换为 true,
if后的代码段将被执行):if (true) if ({}) if ([]) if (42) if ("foo") if (new Date()) if (-42) if (3.14) if (-3.14) if (Infinity) if (-Infinity)
-
v-if指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy 值的时候被渲染。 -
v-else
v-else元素必须紧跟在带v-if或者v-else-if的元素的后面,否则它将不会被识别。 -
在 元素上使用 v-if 条件渲染分组
-
用 key 管理可复用的元素
-
高切换开销
- v-if:条件不满足,不会渲染,也不会出现在DOM中
- v-show:条件不满足,不会渲染,还会出现在DOM中
- 不支持和v-else
- 基于CSS切换
- 高初始渲染开销
- 不推荐同时使用,v-for具有比v-if更高的优先级
-
v-for
-
item in items语法
(item, index) in items
item of items
-
key控制item的复用性
-
value in object
-
(value, name) in object
name是键名
-
(value, name, index) in object
index是索引
- 当 Vue 正在更新使用
v-for渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染 - 建议尽可能在使用
v-for时提供keyattribute push()pop()shift()unshift()splice()sort()reverse()-
非变更方法:返回新数组
filter()
concat()
slice()
-
当使用非变更方法时,可以用新数组替换旧数组。
-
Vue 不能检测数组和对象的变化
- 想要显示一个数组经过过滤或排序后的版本,而不实际变更或重置原始数据---->计算属性---->返回过滤或排序后的数组
- 在计算属性不适用的情况下 (例如,在嵌套
v-for循环中) 你可以使用方法。 - v-for="n in 10">{{ n }}
- 用v-if对v-for循环进行限制
-
<my-component v-for="(item, index) in items" v-bind:item="item" v-bind:index="index" v-bind:key="item.id" ></my-component>
-
2.2.0+ 的版本里,当在组件上使用
v-for时,key现在是必须的。 -
is:好像用来引入组件
注意这里的
is="todo-item"attribute。这种做法在使用 DOM 模板时是十分必要的,因为在<ul>元素内只有<li>元素会被看作有效内容,这样做实现的效果与<todo-item>相同,但是可以避开一些潜在的浏览器解析错误。