安装

介绍

Vue实例

模板语法

插值

文本

插值语法又叫mustach语法

原始HTML

属性值的绑定

使用JS表达式

指令

参数

动态参数

修饰符

缩写

v-bind缩写

v-on缩写

计算属性和侦听器

计算属性

提示 为什么需要计算属性,计算属性是什么,如何使用计算属性

基础例子

计算属性缓存VS方法

计算属性和方法的区别,使用场景

计算属性VS侦听器

计算属性和侦听器的区别,使用场景

计算属性的setter

seeter的使用,使用场景

侦听器

为什么要有侦听器

Class 与 Style 绑定

因为class和style是标签属性,标签的属性的绑定可以使用v-bind指令,指令的值是单个表达式,单个表达式计算的值是字符串即可。但是使用字符串的拼接麻烦而且容易错,所以v-bind用在style和class上时,vue做了增强,表达式结果的类型可以是字符串、数组和对象。v-bind:class可以和普通的class属性共存。即定义了v-bind:class也可以添加class的属性

绑定HTML Class

对象语法

对象的键是class的名称,对象的值会转换成Boolean格式,如果值为true的话,则当前的键名在编译之后会展示在class名中。否则就不展示在class类名中。

对象可以写在v-bind:class后面,也可以写在data中,在v-bind:class中引入data中定义的对象。也可以写在computed中,在v-bind:class中引入computed这个对象。

数组语法

数组中的每一个数组元素都是一个JS单个表达式。

  1. // 数组中的元素是data中定义的可以进行双向数据绑定的对象
  2. <div v-bind:class="[activeClass, errorClass]"></div>
  3. // 数组中的元素可以是三元表达式
  4. <div v-bind:class="[activeClass ? 'test' : '', errorClass]"></div>

数组中也可以使用对象语法

  1. <div :class="[{active: isActive}, errorClass]"></div>
  2. // active是类名,isActive是data中的定义的进行双向数据绑定的数据

用在组件上

在封装的组件上可以使用class也可以使用vue绑定的class,最后封装组件的class都会被添加到根元素上。

  1. Vue.component('my-component', {
  2. template: '<p class="foo bar">Hi !!</p>'
  3. })
  4. <my-component class="test1" :class="'aaa'"></my-component>
  5. // 渲染的结果
  6. /*
  7. <p class="foo bar test1 aaa">Hi !!</p>
  8. */

绑定内联样式

对象语法

对象的键是style的css的属性的名称,CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,需要用引号括起来) 来命名

  1. <div v-bind:style="{fontSize:fontSize + 'px', color: activeColor }"></div>
  2. data: {
  3. activeColor: 'red',
  4. fontSize: 30
  5. }

直接绑定到一个样式对象通常更好,这会让模板更清晰:

  1. <div v-bind:style="styleObject"></div>
  2. data: {
  3. styleObject: {
  4. color: 'red',
  5. fontSize: '13px'
  6. }
  7. }

对象的语法常常会结合返回对象的计算属性使用

数组语法

数组元素是单个JS表达式
v-bind:style的数组语法可以将多个样式对象应用到同一个元素上

  1. <div v-bind:style="[baseStyles, overridingStyles]"></div>
  2. data: {
  3. baseStyles: {
  4. color: 'green',
  5. fontSize: '30px'
  6. },
  7. overridingStyles: {
  8. 'font-weight': 'bold'
  9. }
  10. }

自动添加前缀

当 v-bind:style 使用需要添加浏览器引擎前缀的 CSS property 时,如 transform,Vue.js 会自动侦测并添加相应的前缀。

多重值

从 2.3.0 起你可以为 style 绑定中的 property 提供一个包含多个值的数组,常用于提供多个带前缀的值或者兼容不同浏览器的值,例如:

  1. <div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

可以将style属性的值设置为一个数组,数组中放多个带有前缀的属性的值

条件渲染

v-if

v-if指令用于条件性的渲染一块内容,这块内容只会在指令表达式返回truthy(即boolean值为true)的时候被渲染,也可以使用v-else来添加一个前面条件不成立的的情况下渲染的模块

  1. <h1 v-if="awesome">Vue is awesome!</h1>
  2. <h1 v-else>Oh no 😢</h1>
  3. data: {
  4. awesome: true,
  5. }