VUE入门

1. vue简介

它是一个Javascript框架,作用:简化dom的操作,以及响应式编程
Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。

2. 在webstorm中创建工程

(1)引入vue.js文件

<script type="text/javascript" src="js/vue.js"></script>

(2)body创建一个div标签

<body>
    <div id="app">
        {{msg}}
    </div>
</body>

(3)创建自己的js代码

 <script type="text/javascript">
        //创建一个vue对象
      var app=new Vue({
            //vue对象挂载到id为app的标签上,那么该标签下的所有元素都可以使用vue对象中的成员
            el: "#app",
            //数据
            data:{
                 msg:"学习vue入门",
            }
      })
  </script>

2.1 el属性:

把当前vue对象挂载到指定的标签元素上,使其vue生效。

3. vue指令

3.1 v-text 和v-html

设置标签的文本值(textContent)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
    <div id="app">
          <span>{{msg}}</span><hr>
          <span v-text="msg">看看显示什么?</span><hr>
           <!--v-text:无法解析html标签  v-html可以解析html标签-->
          <span v-html="msg">看看显示什么?</span>
    </div>
</body>
<script>
      let app=new Vue({
            el:"#app",
            data:{
                 msg:"<font color='red'>v-test标签显示</font>",
            }
      })
</script>
</html>

3.2 v-on基础

为元素绑定事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
    <div id="app">
          <span>{{msg}}</span><hr>
          <button v-on:click="fun">点击</button>
        <!--上面的v-on:缩写为@-->
          <button @dblclick="fun">点击2</button>
    </div>
</body>
<script>
      let app=new Vue({
            el:"#app",
            data:{
                 msg:"<font color='red'>v-on标签</font>",
            },
            //定义方法
            methods:{
                 fun(){
                     //this表示vue对象
                     this.msg="点击看看";
                 }
            }
      })
</script>
</html>

计算器小案例
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>计数器</title>
  <link rel="stylesheet" href="./css/index.css" />
</head>
<body>
  <!-- html结构 -->
  <div id="app">
    <!-- 计数器功能区域 -->
    <div class="input-num">
      <button @click="jian">
        -
      </button>
      <span>{{num}}</span>
      <button @click="jia">
        +
      </button>
    </div>
    <img src="http://qnaaa.zzaaa.net/aaajy/logo.png" alt="" />
  </div>
  <!-- 开发环境版本,包含了有帮助的命令行警告 -->
  <script src="../js/vue.js"></script>
  <!-- 编码 -->
  <script>
    let app = new Vue({
      el:"#app",
      data:{
        num:0
      },
      methods:{
        jia(){
          this.num++;
        },
        jian(){
          this.num--;
        }
      }
    })
  </script>
</body>
</html>
3.3 v-show 和v-if

根据表达值的真假,切换元素的显示和隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
    <div id="app">
          <img src="imgs/sg.jpg" width="200" v-show="age>18&&age<36"/>
        <hr>
        <!--v-show通过style中disable来控制标签的显示和隐藏   v-if:通过删除和创建标签来控制-->
        <img src="imgs/1.jpg" width="200" v-if="age>18&&age<36"/>
        <button @click="fun">点击</button>
    </div>
</body>
<script>
      let app=new Vue({
            el:"#app",
            data:{
                age:18
            },
            methods:{
                 fun(){
                      this.age++;
                 }
            }
      })
</script>
</html>

点击切换图片案例

<!DOCTYPE html>
<html lang="en">
 
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>图片切换</title>
  <link rel="stylesheet" href="./css/index.css" />
</head>
 
<body>
  <div id="mask">
    <div class="center">
      <h2 class="title">
        <img src="./images/logo.png" alt="">
        深圳创维校区环境
      </h2>
      <!-- 图片 -->
      <img :src="imgArr[index]" alt="" />
      <!-- 左箭头 -->
      <!-- 此处切换左右箭头的显示/隐藏:v-if也可以实现一样的效果,但是由于v-if对性能消耗比v-show大,所以应该首选用v-show -->
      <!-- v-show="index!=0"指: -->
      <!-- (1)当index的值不等于0的时候,显示左箭头 -->
      <!-- (2)当index的值等于0的时候,隐藏左箭头 -->
      <a href="javascript:void(0)" @click="prev" v-show="index!=0" class="left">
        <img src="./images/prev.png" alt="" />
      </a>
      <!-- 右箭头 -->
      <!-- v-show="index<imgArr.length-1"指: -->
      <!-- index<imgArr.length-1=10-1=9,index索引是9的时候是最后一张图片 -->
      <!-- (1)即最后一张图片之前,显示右箭头 -->
      <!-- (2)到最后一张图片,隐藏右箭头 -->
      <a href="javascript:void(0)" @click="next" v-show="index<imgArr.length-1" class="right">
        <img src="./images/next.png" alt="" />
      </a>
    </div>
  </div>
 
  <script src="../vue.js"></script>
 
  <script>
    var app = new Vue({
      el: "#mask",
      data: {
        imgArr: [
          "./images/00.jpg",
          "./images/01.jpg",
          "./images/02.jpg",
          "./images/03.jpg",
          "./images/04.jpg",
          "./images/05.jpg",
          "./images/06.jpg",
          "./images/07.jpg",
          "./images/08.jpg",
          "./images/09.jpg",
          "./images/10.jpg",
        ],//图片数组
        index: 0//索引是从第一张图开始计算
      },
      methods: {
        prev: function () {//prev 切换到上一张图片
          this.index--;//此处this指当前对象#mask
        },
        next: function () {//next 切换到下一张图片
          this.index++;//此处this指当前对象#mask
        }
      }
    })
  </script>
</body>
</html>

3.4 v-bind

设置元素的属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
    <style>
         .a{
              border: red solid 5px;
         }
    </style>
</head>
<body>
    <div id="app">
          <!--如何让img标签中src属性引用vue对象中的数据-->
          <img v-bind:src="imgUrl"  width="200" v-bind:title="title" v-bind:class="flag?'a':''"/><br>

        <!--v-bind: 缩写为: -->
         <img :src="imgUrl"  width="200" :title="title" :class="flag?'a':''"/><br>

           <button @click="fun">点击</button>
    </div>
</body>
<script>
      let app=new Vue({
            el:"#app",
            data:{
                age:18,
                imgUrl:"imgs/sg.jpg",
                title:"帅哥",
                flag:true
            },
            methods:{
                 fun(){
                      this.imgUrl="imgs/1.jpg";
                      this.title="美女好看"
                 }
            }
      })
</script>
</html>

3.5 v-for

循环数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
    <div id="app">
         <ul>
             <!--for(数据类型 b:数组){}-->
             <li v-for="(item,index) in hobby">
                 {{item}}--->{{index}}
             </li>
         </ul>

         <table width="500px" border="1" cellspacing="0" class="0">
               <tr>
                    <th>姓名</th>
                    <th>年龄</th>
                    <th>性别</th>
                    <th>操作</th>
               </tr>
              <tr v-for="item in users">
                   <td>{{item.name}}</td>
                   <td>{{item.age}}</td>
                   <td>{{item.sex}}</td>
                   <td>
                       <button @click="deleteUser(item.name)">删除</button>
                       <button >编辑</button>
                   </td>
              </tr>
         </table>


         <input type="text" @keyup.enter="fun()"/>
    </div>
</body>
<script>
      let app=new Vue({
            el:"#app",
            data:{
                 hobby:["唱","跳","rap","篮球"],
                 users:[
                     {"name":"张三","age":16,"sex":"女"},
                     {"name":"李四","age":19,"sex":"男"},
                     {"name":"王五","age":15,"sex":"男"}
                 ]
            },
            methods:{
                 deleteUser(name){
                     alert(name);
                 },
                  fun(){
                      alert("触发了回车键");
                  }
            }
      })
</script>
</html>

3.6 v-model

获取和设置表单元素的值. input select textarea

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
    <div id="app">
           <!--v-model会实现双向绑定:表达元素内容改变时,vue中对于的数据也会改变,vue中的数据改变对于的表单元素也会改变-->
           <input type="text" v-model="name" />
           {{name}}
           <button @click="dj">点击</button>
    </div>
</body>
<script>
      let app=new Vue({
            el:"#app",
            data:{
                name:"张三"
            },
            methods:{
                 dj(){
                    this.name="李四";
                 }
            }
      })
</script>
</html>

4. vue结合axios以及后台代码

axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:

从浏览器中创建 XMLHttpRequest
从 node.js 发出 http 请求
支持 Promise API
拦截请求和响应
转换请求和响应数据
取消请求
自动转换JSON数据

4.1 引入方式

$ npm install axios $ cnpm install axios //taobao源 $ bower install
axios 或者使用cdn:
(1) 执行GET请求
// 向具有指定ID的用户发出请求

axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
// 也可以通过 params 对象传递参数
axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

(2) 执行POST请求

axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
``

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值