文章目录

  • 导课
  • MVVM(前端思想)
  • vue 的特点
  • Vue的基本代码
  • Vue指令
  • v-cloak
  • 插值表达式
  • v-text
  • v-html
  • v-bind:
  • v-on:
  • v-model(双向数据绑定)
  • v-for
  • v-if 和 v-show
  • 事件修饰符
  • 在Vue中使用样式
  • 使用class样式
  • 使用内联样式


导课

MVVM(前端思想)

前端视图层的分层开发思想,主要把每个页面分成了M、V和VM。

  • M:保存每个页面中单独的数据
  • VM:调度者,分隔了M和V,每当V层想要获取或保存数据的时候,都要有VM做中间的处理
  • V:每个页面中的HTML结构
    MVVM提供了数据的双向绑定。

vue 的特点

**1.:**在 vue实例 的内部中,如果想要获取 data 上的数据,或者,想要调用 methods 中的方法,必须通过this.数据属性名 或 this.方法名
这里的this指的是new出来的 vue实例 的对象———— vm
**2.:**vue实例,会监听自己的 data 中的所有数据的改变,只要数据一改便,就会自动把 最新的数据 从data上 同步到页面

Vue的基本代码

  • 导入vue的包
  • 创建一个vue的实例(用new):
  • el:表示当前我们new的这个Vue实例要控制页面上的哪个区域
  • data(对象):存放的是 el 中要用到的数据
  • methods(对象):存放的是当前vue实例中所有可用的方法
  • filters:私有过滤器定义
  • directives:私有指令定义
  • 生命周期函数:
  • beforeCreate
  • created
  • beforeMount
  • mounted
  • beforeUpdate
  • updated
  • beforeDestroy
  • destroyeed
  • vue实例控制的页面区域
    注意: 在 VM 实例中,如果要访问 data上的数据 或者 methods中的方法,必须带 this

Vue指令

v-cloak

可以解决插值表达式的闪烁问题

插值表达式

{{}}只会替换自己的这个占位符,不会把整个元素内容清空

v-text

与插值表达式作用差不多。只是v-text会覆盖元素中原本的内容

v-html

会覆盖元素原本的内容,只不过它把内容当作html输出

v-bind:

该指令用来绑定属性,之后的内容要书写为合法的js表达式
v-bind:+属性 可简写为 :+属性

v-on:

该指令用来绑定事件
缩写为 @

  • click——鼠标点击
  • mouseover——鼠标覆盖

v-model(双向数据绑定)

使用 v-model 指令,可以实现表单元素和Model中数据的双向绑定
注意:v-model只能运用在表单元素中
input(radio,text,address, email…) select checkbox textarea

v-for

  • 循环普通数组
  • 循环对象数组
  • 循环对象
  • 迭代数字
    注意: 2.2.0+的版本中,当组件中使用 v-for 时, key是必须的

v-if 和 v-show

  • v-if 的特点:每次都会重新删除或创建元素
    v-if 有较高的切换性能消耗
    如果元素涉及到频繁的切换,则推荐使用 v-show
  • v-show 的特点:每次不会重新进行dom的删除和创建操作,只是切换了元素的 display:none 的样式
    v-show 有较高的初始渲染消耗
    如果元素可能永远也不会被演示出来被用户看到,则推荐使用 v-if

事件修饰符

  • .stop:阻止冒泡
  • .prevent:阻止默认事件
  • .capture:添加事件侦听器时使用事件捕获模式
  • .self: 只当事件在该元素本身(比如不是子元素)触发时触发回调
  • .once:事件只触发一次
    注意: 使用修饰符时,顺序很重要;相应的代码会以同样的顺序产生。因此,用 v-on:click.prevent.self 会阻止所有的点击,而 v-on:click.self.prevent 只会阻止对元素自身的点击。

在Vue中使用样式

使用class样式

  • 数组
    直接传递一个数组, 注意:这里的class需要使用v-bind做数据绑定
    <h1 :class="['thin','italic']">非常大的标题</h1>
  • 数组中使用三元表达式
    <h1 :class="['thin','italic', flag? 'active' : '']">非常大的标题</h1>
  • 数组中嵌套对象
    在数组中使用对象来代替三元表达式,提高代码的可读性
    <h1 :class="['thin','italic', {'active':flag} ]">非常大的标题</h1>
  • 直接使用对象
    在为class使用v-bind绑定对象的时候,对象的属性是类名,对象的属性可带引号也可不带引号,属性的值是一个标识符
    <h1 :class="{ red:true, thin:true, italic:false, active:false }">非常大的标题</h1> 还有一种将class对象定义到data中,并直接引用到 :class 中
  • data:{
         classObj:{ red:true, thin:true, italic:false, active:false }
     }

使用内联样式

  • 直接在元素上通过 :style 的形式,书写样式对象
    <h1 :style="{color:'red', 'font-weight':'280'}">这是一个h1</h1>
  • 将样式对象定义到data中,并直接引用到 :style 中
data:{
            styleObj1:{color:'red', 'font-weight':'280'}
        }
  • 在 :style 中通过数组引用多个 data 上的样式对象
    <h1 :style="[styleObj1,styleObj2]">这是一个h1</h1>
styleObj1:{color:'red', 'font-weight':'280'},
             styleObj2:{'font-size':'40px', 'font-style':'italic'}
         }