Vue.js入门

Vue.js入门

官方文档

第一个程序

导入Vue.js

  • 通过在线导入

  • 下载后导入

声明式渲染

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

运行结果:

Hello Vue!

Vue实例的作用范围

Vue会管理el选项命中的元素及其内部的后代元素.

是否可以使用其他的选择器?

可以使用其他的选择器,但是建议使用ID选择器,i

  • d选择器# 比如#app

  • 类选择器 . 比如.app

  • 标签选择器 标签名 比如

是否可以设置其他的dom元素

可以使用其他的双标签,不能使用HTML和BODY

data注意事项:

  • Vue中用到的数据定义在data中

  • data中可以写复杂类型的数据

  • 渲染复杂类型数据时,遵守js的语法即可

Vue指令

内容绑定,事件绑定:

  • v-text:设置标签的文本值

    <div id="app">
          <h2 v-text="message+’!’"></h2>
          <h2>太原理工大学{{ message + "! "}}</h2>
        </div>
    var app = new Vue({
                el:"#app",
                data:{
                    message:"1902"
                }
            })
    

    运行结果:

    太原理工大学1902!

    • v-text指令的作用是:设置标签的内容(textContent)

    • 默认写法会替换全部内容,使用差值表达式{{}}可以替换指定内容

    • 内部支持写表达式

  • v-html:

    <div id="app">
          <h2 v-text="message+’!’"></h2>
          <h2>太原理工大学{{ message + "! "}}</h2>
        </div>
    var app = new Vue({
                el:"#app",
                data:{
                    message:":"<a href='#'>1902</a>"
                }
            })
    
    • v-html指令的作用是:设置元素的innerHTML
    • 内容中有html结构会被解析为标签
    • v-text指令无论内容是什么,只会解析为文本
    • 解析文本使用v-text,需要解析html结构使用v-html
  • v-on:

    <div id="app">
          <input type="button" value="事件绑定" v-on:click=“doIt">
          <input type="button" value="事件绑定" v-on:monseenter=“doIt">
          <input type="button" value="事件绑定" v-on:dblclick=“doIt">
          <input type="button" value="事件绑定" @dblclick=“doIt">
        </div>
    var app = new Vue({
                el:"#app",
                methods:{
                  doIt:function(){
                    // 逻辑
                  }
                }
            })
    

    v-on可以被@代替

    • v-on指令的作用是:为元素绑定事件
    • 事件名不需要写on
    • 指令可以简写为@
    • 绑定的方法定义在methods属性中
    • 方法内部通过this关键字可以访问定义在data中数据

计数器

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>计数器</title>
</head>
<body>
<div class="input-num" id="num">
<button @click="sub">
  -
  </button>
  <span v-text="message"></span>
  <button @click="add">
    +
  </button>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
var app = new Vue({
    el:num,
    data:{
      message:1
    },
    methods: {
      //减少
      sub:function () {
        if(this.message<=0){
          alert("别减了,已经没了")
        }
        else
        this.message -=1
      },
      //增加
      add:function () {
        if(this.message>=10){
          alert("别加了,够用了")

        }
        else
        this.message += 1
      }
    }

    })
</script>
</body>
</html>

本地应用

v-show

  • 根据表达值的真假,切换元素的显示和隐藏
  • 原理是修改元素的display,实现显示隐藏
  • 指令后面的内容,最终都会解析为布尔值
  • 值为true元素显示,值为false元素隐藏
  • 数据改变之后,对应元素的显示状态会同步更新
<div id="app">
      <img src="地址" v-show="true"> //显示
      <img src="地址" v-show=“isShow"> //隐藏
      <img src="地址" v-show=“age>=18"> //隐藏
    </div>
 var app = new Vue({
            el:"#app",
            data:{
	isShow:false,
	age:16
            }
        })

v-if

  • v-if指令的作用是:根据表达式的真假切换元素的显示状态

  • 本质是通过操纵dom元素来切换显示状态

  • 表达式的值为true,元素存在于dom树中,为false,从dom树中移除

  • 频繁的切换v-show,反之使用v-if,前者的切换消耗小

     <div id="app">
          <p v-if="true">我是一个p标签</p> //显示
          <p v-if="isShow">我是一个p标签</p>//隐藏
          <p v-if="age>18">我是一个p标签</p>//隐藏
        </div>
    var app = new Vue({
                el:"#app",
                data:{
                    age:15,
          			isShow:false
                }
            })
    

v-bind

  • v-bind指令的作用是:为元素绑定属性

  • 完整写法是 v-bind:属性名

  • u 简写的话可以直接省略v-bind,只保留 :属性名

  • 需要动态的增删class建议使用对象的方式

    <style>
        .active{
        boder:1px,solider,red;
    }
        </style>
    <div id="app">
          <img :src= "imgSrc" >
          <img :title="imgtitle+’!!!!’">
          <img :class="isActive?'active':‘’”>
          <img :class="{active:isActive}">//建议使用这种方式
        </div>
     var app = new Vue({
                el:"#app",
                data:{
          imgSrc:"图片地址",
          imgTitle:"黑马程序员",
          isActive:false
       }
            })
    

    图片切换

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>图片切换</title>
      <style>
        .img1{
          width: 50%;
          height: 50%;
        }
      </style>
    </head>
    <body>
    <div id="app1">
      <input value="上一张" type="button" @click="prev" v-show="index!=0">
      <img :src="arr[index]" class="img1">
    
      <input value="下一张" type="button" @click="next" v-show="index<arr.length-1">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      var app = new Vue({
        el:app1,
        data:{
    
          arr:[
            "./img/风景%20(1).jpg",
            "./img/风景%20(2).jpg",
            "./img/风景%20(3).jpg",
            "./img/风景%20(4).jpg",
            "./img/风景%20(5).jpg",
            "./img/风景%20(6).jpg",
            "./img/风景 (7).jpg",
            "./img/风景 (8).jpg",
            "./img/风景 (9).jpg",
            "./img/风景 (10).jpg",
            "./img/风景 (11).jpg",
            "./img/风景 (12).jpg",
          ],
          index:0
    
        },
        methods:{
          prev:function () {
    
            this.index--
          },
          next:function () {
    
            this.index++
          }
    
        }
    
      })
    </script>
    </body>
    </html>
    
    

v-for

<div id="app">
      <ul>
         <li v-for="(item,index) in arr" :title="item">
         {{ index }}{{ item }}
        </li>
         <li v-for="(item,index) in objArr">
         {{ item.name }}
        </li>
      </ul>
    </div>
var app = new Vue({
        el: "#app",
        data: {
          arr: [1, 2, 3, 4, 5],
          objArr: [
            { name: "jack" }, 
            { name: "rose" }
            ]
        }
      })            
  • v-for指令的作用是:根据数据生成列表结构
  • 数组经常和v-for结合使用
  • 语法是( item,index ) in 数据
  • item 和 index 可以结合其他指令一起使用
  • 数组长度的更新会同步到页面上,是响应式的

v-on

<div id="app">
      <input type="button" @click="doIt(p1,p2)" />
      <input type="text" @keyup.enter="sayHi">
    </div>
 var app = new Vue({
        el: "#app",
        methods: {
          doIt: function(p1,p2) {},
          sayHi:function(){}
        }
      })
  • 事件绑定的方法写成函数调用的形式,可以传入自定义参数
  • 定义方法时需要定义形参来接收传入的实参
  • 事件的后面跟上 .修饰符 可以对事件进行限制
  • u .enter 可以限制触发的按键为回车
  • 事件修饰符有多种

v-model

<div id="app">
      <input type="text" v-model="message" />
    </div>
 var app = new Vue({
        el: "#app",
        data: {
          message: "黑马程序员"
        }
      })
  • v-model指令的作用是便捷的设置和获取表单元素的值
  • 绑定的数据会和表单元素值相关联
  • u绑定的数据←→表单元素的值
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值