孙肖宁

Vue开篇
简介vue在小编看来就是一个很流行,很火的前端框架之一。那么官方怎么说的呢,我们一起看看:Vue 是一套用于构建用...
扫描右侧二维码阅读全文
26
2018/07

Vue开篇

简介

vue在小编看来就是一个很流行,很火的前端框架之一。那么官方怎么说的呢,我们一起看看:Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
说了这么多,小编还是不懂。不过接下来小编整理了一些经常用的东东。希望有所帮助。

使用

  1. 引入:首先引入你的vue.js.当我们导入包之后,在浏览器的内存中,就多了一个 Vue 构造函数。
  2. 使用:当 new 出来的这个 vm 对象,就是我们 MVVM中的 VM调度者。Vue 实例所控制的这个元素区域,就是MVVM的 V。
    示例:
<div id="app">
    <p>{{ msg }}</p>
</div>

<script>
    var vm = new Vue({
        el:'#app',// 表示当前我们 new 的这个 Vue 实例,要控制页面上的哪个区域
        data:{// data 属性中,存放的是 el 中要用到的数据
            msg:'Hello World'
        }
    })
</script>

常用指令

  • {{}}插值表达式。
  • v-cloak解决未编译时期,显示未编译的代码,能够解决插值表达式闪烁的问题。这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。
  • v-text它会覆盖元素中原本的内容,但是插值表达式只会替换自己的这个占位符,不会把整个元素的内容清空。而且v-text没有闪烁问题。
  • v-htmlv-text类似,但是v-html可以把html解析,然而v-text会把所有的值以字符串的形式输出,包括html。
  • v-bind:简写为: 是 Vue中,提供的用于绑定属性的指令。可以写合法的JS表达式.
  • v-on: 简写为:@事件绑定机制。为元素指定处理函数的时候,如果加了小括号,就可以给函数传参了
  • v-model 指令,可以实现表单元素和 Model 中数据的双向数据绑定.v-model 只能运用在表单元素中。而v-bind 只能实现数据的单向绑定,从 M 自动绑定到 V, 无法实现数据的双向绑定。

事件修饰符

  • .stop 阻止冒泡。
  • .prevent 阻止默认行为。
  • .capture 实现捕获触发事件的机制。添加事件侦听器时使用事件捕获模式。
  • .self 只当事件在该元素本身(比如不是子元素)触发时触发回调。.self 只会阻止自己身上冒泡行为的触发,并不会真正阻止 冒泡的行为。
  • .once 只触发一次事件处理函数。

在Vue中使用样式

使用class样式

这些样式都需要使用v-bind做数据绑定.

  • 数组

     <h1 :class="['top','res']">我是h1</h1>
  • 三元表达式

     <h1 :class="['top','res', isactive?'active':'']">我是h1</h1>
  • 对象

    • 数组中的对象

       <h1 :class="['top','res', {'active': isactive}]">我是h1</h1>
    • 对象

      <h1 :class="{red:true, italic:true, active:true, thin:true}">我是h1</h1>

      注意:在为 class 使用 v-bind 绑定 对象的时候,对象的属性是类名,由于 对象的属性可带引号,也可不带引号; 属性的值是一个标识符。

使用内联样式

  1. 直接在元素上通过 :style 的形式,书写样式对象

     <h1 :style="{color: 'red', 'font-size': '40px'}">我是h1</h1>
  2. 将样式对象,定义到 data 中,并直接引用到 :style

       <h1 :style="[ styleObj1, styleObj2 ]">我是h1</h1>
       <h1 :style="styleObj1">这是一个h1</h1>

    在data上定义样式:

     data: {
             h1StyleObj: { color: 'red', 'font-size': '40px' },
             styleObj2: { 'font-style': 'italic' }
     }

v-for、v-if、v-show

v-for

  • 迭代数组

    <li v-for="(item, i) in list">索引:{{i}} --- 姓名:{{item.name}} --- 年龄:{{item.age}}</li>
  • 迭代对象中的属性

      <div v-for="(val, key, i) in userInfo">{{val}} --- {{key}} --- {{i}}</div>
  • 迭代数字
<p v-for="i in 10">这是第 {{i}} 个P标签</p>

注意:2.2.0+ 的版本里,当在组件中使用 v-for 时,key 现在是必须的而且只接受 string / number数据类型。当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用 “就地复用” 策略。如果数据项的顺序被改变,Vue将不是移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。

 <p v-for="item in list" :key="item.id">
    <input type="checkbox">{{item.id}} --- {{item.name}}
 </p>

v-if、v-show

  • v-if 的特点:每次都会重新删除或创建元素,有较高的切换性能消耗.
  • v-show 的特点: 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式,有较高的初始渲染消耗.
  • 如果元素涉及到频繁的切换,最好不要使用 v-if, 而是推荐使用 v-show,如果元素可能永远也不会被显示出来被用户看到,则推荐使用 v-if 。
Last modification:July 31st, 2018 at 09:29 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment