zoukankan      html  css  js  c++  java
  • Vue.js学习篇

    什么是Vue

    ​ Vue是数据驱动的前端框架,它无需开发者手工操作DOM,而是通过DOM与数据绑定的方式,一旦数据被更新则DOM也会同步进行更新。

    怎么使用Vue

    ​ 使用Vue需要完成三个过程

    1. 定义View,其实就是DOM
    2. 定义Model,就是要绑定的数据
    3. 定义Vue对象用于绑定View和Model
    

    用法示例

    1. 定义View
    <div id="myapp">
      {{message}}
    </div>
    
    1. 定义Model
    var model = {
      message: "Hello Vue.js"
    }
    
    1. 定义Vue对象
    var vw = new Vue({
      el: "#myapp", //通过el属性指定要绑定的view
      data: model //通过data属性指定要绑定的model
    });
    

    当然,定义Model和定义Vue可以合并在一起

    var vw = new Vue({
      el: "#myapp",
      data: {
        message: "Hello Vue.js"
      }
    });
    

    以上view中{{message}}的写法是Vue中最基本的插值写法,就是使用model中message变量的值替换该标记,最后页面DOM显示如下:

    <div id="myapp">
      Hello Vue.js
    </div>
    

    可以通过model.message = "Goodbye"或者vw.message = "Goodbye"修改model的值,则页面DOM同步显示更新后的消息。

    Vue常用语法

    插值

    ​ 最常用的插值方式就是通过双大括号的方式{{message}},但是该方式不能用于HTML属性,如果要动态绑定HTML的属性就需要使用v-bind指令,例如指定某个元素的id属性为model中dynamicId属性的值,写法如下:

    <div v-bind:id="dynamicId"></div>
    

    ​ 注:插值方式同样支持JavaScript方式指定,比如{{message + ' hello vue.js'}}

    指令

    ​ 指令就是特殊标记的HTML属性,vue的指令都是以v-打头,常用指令如下:

    • v-if

      v-if是条件渲染指令,它的语法格式为:v-if="iftrue",其中iftrue是一个返回布尔值的表达式(也可以直接是布尔类型的值),只有当返回值为true时才渲染该DOM,否则生成的DOM树中无此元素。

    • v-show

      v-show类似与v-if,只是返回值决定是否显示该元素

    • v-else

      为v-if添加else块,语法格式为:v-else,其前一个元素必须为v-if或v-else-if

    • v-else-if

      组合if链,语法格式为:v-else-if="iftrue",其前一个元素必须为v-if或v-else-if

    • v-for

      循环指令,语法格式为:v-for="item in items",其中items可以是数组或者对象,详细用法如下:

      <div v-for="item in items"></div>
      <div v-for="(item, index) in items"></div> <!-- 使用item和index来遍历数组 -->
      <div v-for="val in object"></div>
      <div v-for="(val, key) in object"></div> <!-- 使用key和value来遍历对象 -->
      <div v-for="(val, key, index) in object"></div> <!-- 使用key、value和index来遍历对象 -->
      
    • v-bind

      为HTML元素绑定动态属性,语法格式为v-bind:id="dynamicId",更多用法如下:

      <div v-bind:id="dynamicId"></div>
      <div v-bind:class="{classA}"></div> <!-- model中定义了名字为classA的属性 -->
      <div v-bind:class="{classA: isA}"></div> <!-- 根据isA的值决定是否使用classA -->
      <div v-bind:class="[classA, {classB: isB}]"></div> <!-- classA一直用,isB决定是否用classB -->
      <div v-bind:class="['class-a', {'class-b': isB}]"></div> <!-- 与上一个区别是class名字是指定的(引号) -->
      
    • v-on

      绑定时间监听,只能监听原生的DOM事件,语法格式为:v-on:click="doSomething"

    • v-model

      用于创建view和model的双向绑定(由元素的值来设置model的值),支持的元素有inputselecttextarea

    • v-text

      差值的指令写法,语法格式为:v-test="msg",不过该指令会覆盖元素的整个textContent,如果只是修改部分内容则使用插值方式

    缩写

    ​ Vue为最常用的两个指令提供了缩写方式:

    • v-bind 缩写为 :

    • v-on 缩写为@

      所以如下示例等价:

      <a v-bind:href="url"></a> <!-- 完整写法 -->
      <a :href="url"></a> <!-- 缩写写法 -->
      
      <a v-on:click="doSomethind"></a> <!-- 完整写法 -->
      <a @click="doSomethind"></a> <!-- 缩写写法 -->
      

    更多用法请参照Vue官网API:https://cn.vuejs.org/v2/api/

    另外特别感谢:http://www.cnblogs.com/rik28/p/6024425.html

  • 相关阅读:
    如何实现Iframe透明
    ListView(未完)
    我又回来了
    前言
    代码重用and思路重用
    图片上传
    千万数量级分页存储过程
    MSSQL中,将text,ntext转换为int型数据
    优秀的回复,来自圣殿骑士
    SqlDataSource控件
  • 原文地址:https://www.cnblogs.com/jieyuefeng/p/6618729.html
Copyright © 2011-2022 走看看