vue基础

1.vue概述

vue是一种前端框架由html+css+js+ajax+axios组成

使用之前首先引入:在线引入(也可以本地引入)

<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>

基本格式:

<body>
   <div id="app"> //使用vue要至少有一个父容器,
     {{msg}} //差值表达式:可以在vue对象中取出变量的值
   </div>
</body>
</html>
<script>
    var app = new Vue({//创建一个vue对象
        el:"#app",    //通过选择器与父容器绑定
        data:{      //数据域:变量以键值对的形式储存在这里
            msg:"hello vue" 
        }
    })
</script>

2.data

data的两种格式:

<script>
    var app = new Vue({
        el:"#app",
        /*data:{ //对象式
            msg:"hello vue"
        }*/
        data(){
            return{ //函数式
                msg:"hello vue"
        }
        }
    })
</script>

data的数据类型:

<script>
    var app = new Vue({
        el:"#app",
        data:{
            a:1111,
            b:22.22, //数值型
            c:"haha",//字符串型
            d:[],  //数组型
            dog:{   //对象型
               id:"",
               name:"" 
            },
            msg:""
        }

    })
</script>

3.Vue指令

  • 用在DOM中元素上的一个属性标签,不同的属性标签,肯定有不同的作用!
  • vue指令:HTML标签上带有 v- 前缀的特殊属性,不同指令不同含义

1.v-text指令

获取data数据, 设置标签的内容

<div id="app">
  <div v-text="a">666</div>
  <div>666{{a}}</div>
</div>
  1. v-text是直接覆盖
  2. {{}}是追加进去

2.v-html指令

设置元素本身、内容 (可以向元素中写入新的标签)

与v-text相同也是可以覆盖文本内容,

只不过可以识别 html标签

<div id="app">
  <div v-text="c">666</div>
  <div>666{{c}}</div>
  <div v-html="c">666</div>
</div>

3.v-on指令

为元素绑定事件, 比如: v-on:click="方法",可以简写为 @click="方法"

<body>
   <div id="app">
      <button v-on:click="m">hahaha</button>
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            a:1111
        },
        methods:{
            m:function (){
                alert("666");
            }
        }
    })
</script>

带参数

<body>
   <div id="app">
      <button v-on:click="m('haha')">hahaha</button>
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            a:1111
        },
        methods:{
            m:function (x){
                alert(x);
            }
        }
    })
</script>

this调用数据域的变量

<body>
   <div id="app">
      <button v-on:click="m()">hahaha</button>
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            a:1111
        },
        methods:{
            m:function (){
                alert(this.a);
            }
        }
    })
</script>

4.v-show指令

修改元素的display,实现显示或者隐藏

值为true 显示, 为false 则隐藏

<div id="app">
    <div v-show="false">666</div>
    <div v-show="true">666</div>
</div>

5.v-if指令

根据表达值的真假,切换元素的显示和隐藏( 操纵dom 元素 )

<div id="app">
    <div v-if="false">666</div>
    <div v-if="true">666</div>
</div>

频繁切换使用 v-show ,反之使用v-if

6.v-bind指令

设置元素的属性 (比如:src,title,class)

语法格式: v-bind:属性名=表达式,可以简写为 :属性名

<body>
   <div id="app">
       <img v-bind:src="i">
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            i:"专业团队.png",
        }
    })
</script>

7.v-for指令

v-for="item in items" for(变量 : 遍历目标)

或 v-for="(item, index) in items index代表索引

  1. item 代表遍历的每个值
  2. items 代表要遍历的数组
<body>
   <div id="app">
       <ul>
           <li v-for="item in num">{{item}}</li>
       </ul>
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            num:[1,2,3,4]
        }
    })
</script>

8.v-model指令

实现双向绑定

<body>
   <div id="app">
       <input type="text" v-model="msg">
       <input type="text" v-model="msg">
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
           msg:""
        }
    })
</script>

其中一个文本框变化,改变数据域内变量的值从而改变另一个文本框

4.axios

引入在线文件

<script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>

axios请求方法

对服务器资源,要执行的操作

  1. GET:获取数据
  2. POST:提交数据
  3. PUT:修改数据(全部)
  4. DELETE:删除数据

基本格式以get请求为例

<body>
   <div id="app">
     <button v-on:click="getMethod">get请求</button>
   </div>   
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
           msg:""
        },
        methods:{
            getMethod:function (){
                          //↓请求的url
                axios.get("1.txt").then(function (){
                    alert("成功了!"); //请求成功执行
                },function (){
                    alert("失败了!"); //请求失败执行
                })
        }
        }
    })
</script>

利用get请求传入参数的三种格式

<body>
   <div id="app">
       用户名:<input type="text" v-model="username"> <br/>
       密码:<input type="password" v-model="password"> <br/>
       <button @click="getMethod()">get请求方式</button>
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{

           username:"",
            password:""
        },
        methods:{
            getMethod:function (){
                //1.
                 /*axios.get("1.txt?username="+this.username+"&password="+this.password).then(function () {
                     alert("成功");

                 },function (){
                     alert("失败");

                 })*/
                //2.
               /* axios.get("1.txt",{params:{username:this.username,password: this.password}}).then(function () {
                    alert("成功");

                },function (){
                    alert("失败");

                })*/
               //3.
                var that = this;
                axios({
                    url:"1.txt",
                    method:"get",
                    params:{
                        username:that.username,
                        password:that.password
                    }
                }).then(function () {
                    alert("成功");
                },function (){
                    alert("失败");
                })
        }
        }
    })
</script>

5.vueapi

computed 计算属性

computed 的作用: 减少运算次数, 缓存运算结果. 运用于重复相同的计算.刷新不会影响计算结果

<body>
   <div id="app">
     <h1>{{a}}</h1>
     <h1>{{b}}</h1>
     <h1>{{c}}</h1>
       <button v-on:click="m2">submit</button>
   </div>
</body>
</html>
<script>
    var app = new Vue({
        el:"#app",
        data:{
         a:11,
            b:2,
            c:0
        },
        computed: {
            m2:function (){
                this.c = this.a*this.b
            }
        }
    })
</script>

filter 过滤器

对即将显示的数据做进一步的筛选处理,然后进行显示

过滤器不会改变原来的数据,只是在元数据的基础上产生新的数据或删除一些数据然后显示出来

双括号插值内使用

{{ msg |  filterA  }}

  1. msg是需要处理的数据,
  2. filterA是过滤器,
<body>
    <div id="app">
       价格:<h1>{{a | afilter}}</h1>
    </div>
</body>
<script>
  new Vue({
        el:"#app",
        data:{
             a:200
        },
      filters:{
            //定义过滤器
           afilter(a){
               //要对属性进行什么操作
              return  this.a = a+"$"
           }
      }
  })
</script>

watch 侦听器

用于观察Vue实例上的数据变动,当数据需要随着其它数据变动而变动时,可以使用侦听属性

<body>
    <div id="app">
        姓:<input type="text" v-model="x">
    </div>
</body>
</html>
<script>
  new Vue({
        el:"#app",
        data:{
             x:"",
        },
      watch:{
            //新的值,旧的值
            x(newv,oldv){
                console.log(newv)
                console.log(oldv)
            }
      }
  })
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值