学习vue

1.什么是vue

  • Vue.js(/vjuː/,或简称为Vue)是一个用于创建用户界面的开源JavaScript框架,也是一个创建单页应用的Web应用框架。 2016年一项针对JavaScript的调查表明,Vue有着89%的开发者满意度。
  • 在GitHub上,该项目平均每天能收获95颗星,[为Github有史以来星标数第3多的项目。
  • Vue.js是一款流行的JavaScript前端框架,旨在更好地组织与简化Web开发。
  • Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。
  • 在为AngularJS工作之后,Vue的作者尤雨溪开发出了这一框架。他声称自己的思路是提取Angular中为自己所喜欢的部分,构建出一款相当轻量的框架。Vue最早发布于2014年2月。
  • 作者在Hacker News、Echo JS与Reddit的/r/javascript版块发布了最早的版本。一天之内,Vue就登上了这三个网站的首页。Vue是Github上最受欢迎的开源项目之一。同时,在JavaScript框架/函数库中,Vue所获得的星标数已超过React,并高于Backbone.js、Angular 2、jQuery等项目。

2.VUE是做什么的? 

Vue.js是一款流行的JavaScript前端框架,旨在更好地组织与简化Web开发

3. 在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">
     
      var app=new Vue({
            //vue对象挂载到id为app的标签上,那么该标签下的所有元素都可以使用vue对象中的成员
            el: "#app",
     
            data:{
                 msg:"ikun粉丝",
            }
      })
  </script>

4 el属性:

1.el属性

vue中el属性的作用是指示vue编译器解析的位置,是一个占位符。

2.data属性

vue中data属性的作用是用于将组织从view中抽象出,可以将视图的数据抽象出来并存放在data中。

3.template属性

vue中template属性的作用是设置模板,使用template属性可以替换页面中的元素或占位符。

4.methods属性

vue中methods属性的作用是用于放置页面中的业务逻辑,一般用于放置js方法。

5.computed属性

vue中computed属性是一个计算属性,常用于处理一些复杂逻辑。

6.watch属性

vue中watch属性是一个监听属性,通过watch属性可以响应数据的变化。

5. vue指令

5.1 v-text 和v-html设置标签的文本值(textContent)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script type="text/javascript" src="../js/vue.js"></script>
<body>
<div id="cxk">
    <span v-text="aa">喜欢的明星</span><hr>
    <!--v-text:无法解析html标签  v-html可以解析html标签-->
    <span v-html="aa">喜欢的明星</span><hr>
</div>
</body>
<script>
    let  app=new Vue({
        el:"#cxk",
        data:{
            aa:"<font color='red'>我是蔡徐坤粉丝</font>"
        }
    })
</script>
</html>

运行结果

 

5.2 v-on基础设置标签的文本值(textContent)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script type="text/javascript" src="../js/vue.js"></script>
<body>
<div id="cxk">
    <span>{{msg}}</span>
    <button v-on:click="fun">鸡</button>
    <!--上面的v-on:缩写为@-->
    <button @click="fun">鸡2</button>
</div>
</body>
<script>
    let app=new Vue({
        el:"#cxk",
        data:{
            msg:"喜欢和鸡哥打篮球"
        },
        methods:{
            fun(){
                this.msg="喜欢和鸡哥打唱歌";
            }
        }
    })

</script>
</html>

5.3 v-show 和v-if根据表达值的真假,切换元素的显示和隐藏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<script type="text/javascript" src="../js/vue.js"></script>
<body>
<div id="app">
    <img src="imgs/2.jpg" width="200" v-show="age>18&&age<36"/>
    <!--v-show通过style中disable来控制标签的显示和隐藏   v-if:通过删除和创建标签来控制-->
    <img src="imgs/1.jpg" width="200" v-if="age>20&&age<36"/>
</div>
</body>
<script>
    let app=new Vue({
        el:"#app",
        data:{
        age:20
        },
        methods:{
            fun(){
                this.age++;
            }
        }
    })
</script>
</html>

5.4 v-bind设置元素的属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script type="text/javascript" src="../js/vue.js"></script>
<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:20,
            images:"imgs/1.png",
            title:"鸡哥",
            falg:true
        },
        methods:{
            fun(){
                this.imgurl="imgs/2.png";
                this.title="兰奇"
            }
        }
    })
</script>
</html>

5.5 v-fo循环数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script type="text/javascript" src="../js/vue.js"></script>
<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:["好吃","好喝","好色","好赌"],
            users:[
                {"name":"蔡徐坤","age":16,"sex":"男"},
                {"name":"丁真","age":19,"sex":"男"},
                {"name":"老八","age":15,"sex":"男"}
        },
        methods:{
            deleteUser(name){
                alert(name);
            },
            fun(){
                alert("触发了回车键");
            }
        }
    })
</script>
</html>

5.6 v-model获取和设置表单元素的值. input select textarea

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="wrap" id="app">
        <div class="logo" src="img/logo.png" alt="logo"></div>
        <div class="from_group">
            <input
            type="text"
            class="input_txt"
            placeholder="请输入查询数据"
            v-model="sname"
            />
            <button class="input_sub" @click="searchWeather">搜索</button>
        </div>
        <table width="300" border="1">
            <tr>
                <td>名字</td>
                <td>年龄</td>
            </tr>
            <tr v-for="item in student">
                <td>{{item.sname}}</td>
                <td>{{item.age}}</td>
            </tr>
        </table>
    </div>

<script src="js/vue.js"></script>
<script src="js/axios.min.js"></script>

<script>
    let app=new Vue({
        el:"#app",
        data:{
            student:[],
            sname:"",
        },
        methods:{
            searchWeather() {
                axios.post("http://localhost:8080/student/list/1/5", {sname:this.sname}).then(result => {
                        this.student = result.data.data.records;
                    })

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

</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值