Vue学习笔记

目录

一. 模板语法:

    1.插值

       1.1文本

    1.2.原始 HTML

    1.3.使用javascript表达式

2.指令

2.1.指令参数

2.2.缩写

二. 计算属性和侦听器

2.1计算属性:

解释:

2.2计算属性缓存vs方法

2.3.计算属性(computed) vs 侦听属性(watch)

2.4计算属性 computed

2.5.计算属性的setter

三. Class 与 Style 绑定

3.1:绑定 HTML Class

四. 条件渲染

4.1.元素上使用 v-if 条件渲染分组

4.1.1.在 template 元素上使用v-if条件渲染分组

4.1.2.v-else

4.1.3.v-else-if

4.1.4.用 key 管理可复用的元素

4.2.v-show

4.3.v-if vs v-show( v-if 与 v-show比较)

4.4:v-if 与 v-for 一起使用

五. 列表渲染

5.1:数组的 v-for 

5.1.1: 用 v-for 指令根据一组数组的选项列表进行渲染。

5.1.2: 在 v-for 块中,我们拥有对父作用域属性的完全访问权限。v-for 还支持一个可选的第二个参数为当前项的索引。

5.2:对象的 v-for

5.2.1:可以用 v-for 通过一个对象属性来迭代

5.3: key

5.4:数据更新与检测

5.4.1:变异方法

5.4.2.替换数组

5.5: 对象更改检测注意事项

5.6显示过滤/排序结果 

5.7 一段取值范围的 v-for 

5.8:v-for on a


一. 模板语法:

    1.插值

       1.1文本

1.1.1数据绑定使用 :Mustache(胡子语法/双花括号)文本插值
            注意:
                双大括号会将数据解释为普通文本,而非 HTML 代码
                输出html 文本 需要使用v-html指令

Using mustaches: {{ rawHtml }}

Using v-html directive:

           1.1.2.标签将会被替代为对应数据对象上 msg 属性的值。
           1.1.3.一次性插值 : v-once 指令
              当数据改变时,插值处的内容不会更新,
              注意:使用 v-once 一次数据绑定 会影响该节点上其他数据

这个将不会改变: {{ msg }}

    1.2.原始 HTML

使用 v-html 指令 输出 原始html

Using mustaches: {{ rawHtml }}

Using v-html directive:


注意:
直接作为 HTML——会忽略解析属性值中的数据绑定。
Mustache 语法不能作用在 HTML 特性上,遇到这种情况应该使用 v-bind 指令:

    1.3.使用javascript表达式

{{ number + 1 }} //可以算数计算

{{ ok ? 'YES' : 'NO' }} //三木运算

{{ message.split('').reverse().join('') }}  //jsAPI 的使用 处理字符串

   //字符串 和 变量拼接


2.指令

指令是带有 v- 前缀的特殊属性
指令属性 的 预期值 是 单个 JavaScript 表达式(v-for 是个例外情况)
指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。
例子如下:

{{msg}}

2.1.指令参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示 
如: 
2.1.1.v-bind 属性可以响应式的更新html属性

去往天桥

在这里 href 是参数, 告知v-bind 指令 将该元素的 href 属性与 表达式url 的值进行绑定
2.1.2.v-on 指令,它用于监听 DOM 事件
...

2.2.缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的特性
当使用 Vue.js 为现有标签添加动态行为时,v- 前缀很有帮助
在构建由 Vue.js 管理所有模板的单页面应用程序 时,v- 前缀也变得没那么重要了

2.2.1:v-bind 缩写

<--! 完整语法 -->
 百度
<--! 缩写 -->
 百度 

2.2.2:v-on 缩写

<--! 完整语法 -->
 随便干点啥 
<--! 缩写 -->
 随便干点啥 

二. 计算属性和侦听器

2.1计算属性:

解释:

对于任何复杂逻辑,都应当使用计算属性
基础例子

 

Original message: "{{ message }}"

computed reverse message: "{{ reversedMessage }}

2.2计算属性缓存vs方法

计算属性是基于它们的依赖进行缓存的,计算属性只有在它的相关依赖发生改变时才会重新求值,
这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,
而不必再次执行函数
下面计算属性将不再更新

computed: {
  now: function() {
    return Date.now();
  }
}


相比之下,每当触发重新渲染时,调用方法将总会再次执行函数
不希望有缓存,用方法来替代

2.3.计算属性(computed) vs 侦听属性(watch)

观察和响应 Vue 实例上的数据变动 使用 侦听属性(不要乱用 watch)
监听属性 watch 

var vm = new Vue({
  el: '#demo',
  data: {
    firstName: 'Foo',
    lastName: 'Bar',
    fullName: 'Foo Bar'
  },
  watch: {
    firstName: function(val) {
      this.fullName = val + ' ' + this.lastName
    },
    lastName: function(val) {
      this.fullName = this.firstName + ' ' + val
    }
  }
})

上面代码是命令式且重复的。将它与计算属性的版本进行比较:

2.4计算属性 computed

var vm = new Vue({
  el: '#demo',
  data: {
    firstName: 'Foo',
    lastName: 'Bar'
  },
  computed: {
    fullName: function() {
      return this.firstName + ' ' + this.lastName
    }
  }
})

2.5.计算属性的setter

计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter :

{{fullName}}

现在再运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。
侦听属性:




Ask a yes/no question

answer:{{answer}}

在这个示例中,
1.使用 watch 选项允许我们执行异步操作 (访问一个 API),
2.限制执行该操作的频率,
3.并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
4.除了 watch 选项之外,您还可以使用命令式的 vm.$watch API。

三. Class 与 Style 绑定

元素的 class 和 style 都是属性 在数据绑定时 用 v-bind 处理它们,只需要通过表达式计算出字符串结果即可,
将 v-bind 用于 class 和 style 时表达式结果的类型除了字符串之外,还可以是对象或数组。

3.1:绑定 HTML Class

对象语法
我们可以传给 v-bind:class 一个对象,以动态地切换 class:

四. 条件渲染

4.1.元素上使用 v-if 条件渲染分组

在 Vue 中,我们使用 v-if 指令实现条件渲染功能

Yes

Yes

No

4.1.1.在 template 元素上使用v-if条件渲染分组

4.1.1.1.因为 v-if 是一个指令,所以必须将它添加到一个元素上。
4.1.1.2.v-if添加在父元素上 父元素包裹的子元素将一并渲染在页面上

4.1.2.v-else

使用 v-else 指令表示 v-if 的 "else块"

now you see me
now you don't

注意:v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。

4.1.3.v-else-if

v-else-if,充当 v-if 的“else-if 块”,可以连续使用

A
B
C
not A/B/C

注意: 类似于 v-else,v-else-if 也必须紧跟在带 v-if 或者 v-else-if 的元素之后。

4.1.4.用 key 管理可复用的元素

Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染.
1.允许用户在不同的登录方式之间切换 并且 loginType 将不会清除用户已经输入的内容

2. toggle loginType 这两个元素是完全独立的,不要复用它们,只需添加一个具有唯一值的 key 属性即可

注意:

4.2.v-show

用于根据条件展示元素的选项是 v-show 指令

Hello!

相比不同的是带有 v-show 的元素始终会被渲染并保留在 DOM 中。
v-show 只是简单地切换元素的 CSS 属性 display。
注意 : v-show 不支持