zoukankan      html  css  js  c++  java
  • Vue基础(1)

    Vue简介

      1.JavaScript框架

      2.简化Dom操作

      3.响应式数据驱动

    Vue基础

    通过下面代码引用vue:

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

    示例:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>Vue基础</title>
        </head>
        <body>
            <div id="app">
                {{message}}
            </div>
        </body>

    <!-- 引用vue --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script type="text/javascript"> var app = new Vue({ el:"#app", data:{ message:"Hello Vue!" } }) </script> </html>

    编写一个简单Vue程序步骤:

    1. 导入开发版本的vue.js
    2. 创建Vue实例对象,设置el属性和data属性
    3. 实际简洁的模板把数据渲染到页面上

    el:挂载点 

      用于选中需要被vue渲染的部分,如: el:"#box",样只会选中id为box中的内容进行渲染," # "表示id选择器,el也可以选中其它css选择器,如: el:".red" 等等..

    data: 状态|数据

      可以在data里面定义一些数据变量(数组,对象,...)

    插值:
      {{ 10+20 }}    将数据渲染到页面元素中,不解析html标签

      v-html 将数据渲染到页面元素中,可以解析html标签

    vue指令

    v-show

    值为bool类型,为true表示显示元素,false表示隐藏元素(display:none)

    v-if

    值为bool类型,为true表示创建元素,false表示删除元素

    v-bind

    绑定属性,如 <div v-bind:class="red"></div>,通过v-bind就可以将div的类样式设置为red, <img v-bind:src="mySrc" />。

    动态绑定class:

    三目写法:<div v-bind:class=" 2>1? 'red' : 'yellow' "></div>    如果前面条件为true就应用red样式,false则应用yellow样式。

    对象写法: 

      <div v-bind:class=" classobj "></div>      html的内容

       

      data:{              js内容,data数据
        classobj:{
          red:true,
          yellow: false, 
          aaa:true
        }
      }

      上面div将会同时应用red和aaa两个类样式,如果想不应用red样式,可以将classobj.red的值设置为false,该样式将不被应用。

    数组写法: 

      <div :class=" classarr "></div>      html的内容,缩写的方式

      data:{              js内容,data数据
        classarr:["red", "a", "b" ]      //数组中存放类样式名
      }

      在数组中存在的样式都将被应用,通过数组的 pop()方法删除数组元素(删除样式),push()方法添加数组元素(添加样式)

    v-bind可以简写为" : "号,如 <div :class="red"></div>,用 : 号代替b-bind

    绑定style属性:

      三目写法:   <div :style=" 'background:'+  (1>2? 'red' : 'yellow' ) "></div>   

        这里注意,如果样式是background-color的话要写成backgroundColor才行,所有样式中 - 的都要这样写

      对象写法:   

        <div :style=" styleobj "></div>      html的内容

        data:{              js内容,data数据
          styleobj :{
            background: "red",
            fontSize: "30px",      //对象属性就是需要应用的样式
          }
        }

      数组写法:

      <div :class=" stylearr "></div>      html的内容,缩写的方式

      data:{              js内容,data数据
        stylearr:[]      //数组
      }

      添加样式 stylearr.push({ backgroundColor:"red" }) 通过这种形式添加样式,删除样式还是通过操作数组就行

    条件渲染:

    v-if 和 v-else 的使用,当v-if中的条件为假的时候显示v-else里面的内容

    这个有什么用呢?比如:有些购物软件,当你购物车没有添加商品是会显示 购物车空空如也,添加商品后再展示商品。这种就可以用v-if和v-else来实现

     代码:

    html内容:

            <div id="box">
                <div v-if="goods.length">
                    <h2>商品列表</h2>
                    <ul>
                        <li v-for="item in goods">{{ item }}</li>
                    </ul>
                    
                    <button type="button" v-on:click="goods.pop()">删除一个商品</button>
                </div>
                
                <h2 v-else>商品空空如也!</h2>
            </div>

    js内容:

            <script type="text/javascript">
                var vm = new Vue({
                    el:"#box",
                    data:{
                        goods:["苹果", "鼠标"]
                    }
                })
            </script>

    数组中有元素时显示v-if的内容,单击删除按钮会从数组中删除一个元素,当数组中元素被删除时将显示v-else的内容

    v-else-if 有v-if、v-else那肯定少不了v-else-if 

    v-else-if使用方式跟v-else使用差不多,如果v-if为false继续判断v-else-if

    代码演示:

         <div id="box">
                <div v-if="num === 1">1</div>
                <div v-else-if="num == 2">2</div>
                <div v-else>3</div>
            </div>

    <script type="text/javascript"> var vm = new Vue({ el:"#box", data:{ num:2 } }) </script>

    只有条件 num===2 是为true的  所以页面显示的将是 2 ,还是挺好理解的

    v-for 

    语法: 

    <li v-for="变量名 in 数组或对象">{{ 变量名 }}</li>

    in 可以改成 of 也是可以使用的


    <li v-for="(变量名, index) in 数组或对象">{{ 变量名 }}</li>
    index表示数组的索引

    遍历数组或对象中的元素进行展示,一般配合列表使用

    代码:

        <div id="box">
                <h2>遍历数组内容进行展示</h2>
                <ol>
                    <li v-for="item in datalist">{{ item }}</li>
                </ol>
                
                <h2>遍历对象内容进行展示</h2>
                <ul>
                    <li v-for="each in dataobj">{{ each }}</li>
                </ul>
            </div>
    
            <script type="text/javascript">
                var vm = new Vue({
                    el:"#box",
                    data:{
                        datalist:["111", "222", "333"],
                        
                        dataobj:{
                            name:"kk",
                            age:18,
                            sex:""
                        }
                    }
                })
            </script>

    结果:

    可以看到列表的数量是取决于数组或对象中的元素数量。

     key  在使用v-for的时候可以设置key属性,一般key的值为data.id

      跟踪每个节点的身份,从而重用和重新排序现有元素

      理想的key值是每项都有的且唯一的id。data.id

     

    数组更新检测

      使用一下方法操作数组,可以检测变动

        push()、pop()、shift()、unshift()、splice()、sort()、reverse()

      filter()、concat()、slice()、map() ,新数组替换旧数组

    filter()方法使用:
    语法:

      新数组 = 旧数组.filter(变量名=>条件)

    条件为true才包含在新数组中,如: b = a.filter(item => item>1 ),是有数组a中元素大于1的才会被存放到数组b中

    事件处理:
      监听事件-直接触发代码

      方法事件处理器-写函数

      内联处理器方法-执行函数表达式 handleClick($event)  $event 事件对象

      事件修饰符

      按键修饰符

    表单绑定

    v-model 双向数据绑定

    绑定text文本框:  <input type="text" v-model="mytext"/>

    绑定checkbox多选框:  <input type="checkbox" v-model="checkgroup" value="游泳">

      checkgroup 是数组类型,并且input标签必须设置value值,多个选择框绑定同一个数组

    绑定 radio 单选框: <input type="radio" v-model="picked" value="Java">

      picked为字符串类型,选中某一个单选框后会将它value的值给picked,多个选择框绑定同一个变量

    v-model修饰符:

      v-model.lazy     失去焦点后同步

      v-model.number   只同步数字部分

      v-model.trim     同步时去除前后空格

  • 相关阅读:
    vim复制
    嵌入式Linux学习(二)
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1042 乒乓球
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1071 潜伏者
    (Java实现) 洛谷 P1025 数的划分
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
  • 原文地址:https://www.cnblogs.com/DepthCh/p/12264373.html
Copyright © 2011-2022 走看看