Vue的命令

Vue
简单的DOM+发送请求+路由选择

分成三个步骤:

1. 引包
开发环境版本,包含了有帮助的命令行警告,比较适合新手
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

生产环境版本,优化了尺寸和速度
<script src="https://cdn.jsdelivr.net/npm/vue"></script>

2.创建vue对象,然后设置el目的源,以及data数据
3.模板渲染,将数据绑定在组件中

其实我们可以把html当作入口,在vue上进行操作,结果响应在绑定的dom元素上。

Vue:
el属性:是确定数据挂在哪个元素上
1.作用范围:元素内部以及后代元素的内部
2.最好使用id选择器:因为在实际开发中,id是唯一的;而标签选择器和类选择器一般都是不唯一的
3.元素不能选择html标签和body标签

data属性:它是一个数据对象
1.数据在js中有基本类型还有引用类型
2.如果是引用类型:
对象,访问对象中的属性用点
数组,访问数组元素用[]

应用:使用vue中的一些以v开头的指令来制作网页效果,不同于早期的dom操作(获取元素,操作元素)

学习的顺序:
1.内容绑定,事件绑定
2.属性绑定
3.表单元素绑定,列表循环

v-text内容绑定

<div id="app" v-text='msg+"!"'>lala</div>
 /*v-text这里会替换全部文本值,可以用双引号也可以用单引号*/
/*如果是部分替代,用差值表达式*/

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: "huangdanni",
            info: "ok"
        }
    });

</script>

v-html内容绑定

<div id="app">
    <p v-html="msg"></p>
/*设置元素的innerHTML,如果是一个单纯的文本值,与v-text没有什么区别,如果有是一个HTML结构就可以,可以解析出来*/
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: "<a href='#'>我是个标题 </a>"
        }
    });

</script>

v-on事件绑定

如果要获取到data对象中的数据,使用this关键字
如果父级也绑定事件,那么会先触发父级的事件

<div id="app">
    <input type="button" value="点我" @click='doIt'>
    <p v-on:click='beauty'>{{ msg }}</p>
    如果点击就一次,文本框的内容发生改变
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: "我是黄丹妮"
        },
        methods: {
            doIt: function () {
                console.log("我最可爱!");
            },
            beauty: function () {
                this.msg += '我最美!';
            }
        }
    });

</script>
之前在处理事件限制的时候,要进行触发事件的判断,现在是利用事件修饰符
<div id="app">
    <input type="text" @keyup.enter="sayHi('huangdanni')">
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {},
        methods: {
            sayHi: function (name) { 形参传递参数
                alert(name + ",你好呀!");
            }
        }
    });

</script>
## v-show显示隐藏
<div id="app">
    <input type="button" @click='change' value='切换图片显示隐藏'>
    <img src="10.png" alt="" v-show='isShow'>/*实际上操作的style里面的display*/
    <img src="10.png" alt="" v-show='age>19'>/*指令后面的值会解析成布尔值,所以可以用判断语句*/
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            isShow: true,
            age: 18
        },
        methods: {
            change: function () {
                this.isShow = !this.isShow;
            }
        }
    });

</script>

v-if

代码跟v-show基本没什么区别,都是用来操作标签的显示和隐藏
1.v-if是直接操作dom元素,true从dom树中添加,false从dom树中移除
2.v-show直接操作样式,true为display:block false为display:none
3.如果是经常切换,就使用v-show,因为v-if消耗比较大

v-bind设置属性

在实际开发中,可以操作class的添加和移除从而改变样式

<div id="app">
    <img v-bind:src="imgSrc">
    <br>
    <img :src='imgSrc' :title='imgTitle' :class='imgActive? "active":""'>/*三元表达式*/
    <img :src='imgSrc' :title='imgTitle' :class={active:imgActive}>/*用对象的属性,具体取决后面的值*/
    <input type="button" @click='change' value='切换图片框框'>
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            imgSrc: "10.png",
            imgTitle: "这是一只熊",
            imgActive: false
        },
        methods: {
            change: function () {
                this.imgActive = !this.imgActive;/*这里就是false 和 true转化*/

            }
        }
    });

</script>

可以用v-on v-bind v-if实现轮播图效果:
v-on 绑定事件
v-bind 切换图片路径
v-if 切换左右按钮的显示和隐藏

v-for 列表循环

根据模板以及定义数据的长度来创建列表

<div id="app">
    <h2>一周</h2>
    <ul>
        <li v-for="item in weekday">{{ item }}</li>//根据这个模板创建,其中item 可以改变,也可以跟其他命令一起使用
    </ul>
    <button @click='add'>增加水果</button>
    <button @click='remove'>减少水果</button>
    <p v-for="(it,index) in fruit">{{ index }}-----{{ it.name }}</p>
</div>

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

<script>
    /*data里面的数据可以是,数组,对象,字符串,数组用的比较多*/
    var app = new Vue({
        el: '#app',
        data: {
            weekday: [
                "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"],
            /*对象数组*/
            fruit: [
                { name: "orange" },
                { name: "apple" },
                { name: "banana" },
                { name: "peach" }
            ]
        },
        methods: {
            /*数组长度变化会同步更新,是响应式的*/
            add: function () {
                this.fruit.push({ name: "watermelon" });

            },
            remove: function () {
                this.fruit.shift();
            }
        }
    });

</script>

v-model

将数据中的值和表单元素的值进行双向绑定,即修改或者设置一边,会同步更新另一边 textarea这些表单控件

<div id="app">
    <input type="text" v-model="msg" @keyup.enter="sayHi()">
    <h2>{{msg}}</h2>
    <button @click="change">修改值哦哦哦</button>
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: "黄丹妮"
        },
        methods: {
            sayHi: function () {
                alert(this.msg);
            },
            change: function () {
                this.msg = "okk"
            }
        }
    });

</script>

他的实现过程:其实是结合了v-on:input事件和v-bind
通过在框中输入值的时候,触发事件,取到事件源的value值然后进行修改

<div id="app">
    <input type="text" v-on:input='change' :value='msg'>
    <p>{{msg}}</p>
</div>

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

<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: "黄丹妮小可爱"
        },
        methods: {
            change: function (e) {
                //console.log(e.target.value);
                this.msg = e.target.value;
            }
        }
    });

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值