Vue知识点总结

一.Vue.js基础

1.基础结构

<body>
    <!-- 引入vue文件 -->
    <script src="./vue .js"></script>

    <!-- div盒子区域  -->
    <div id="app"></div>

    <!-- vue语法编写区域 --> 
    <script>
        new Vue ({
            el:'#app',
            data:{
                
            }
        })
    </script>
</body>

2.插值语法

插值语法可以将数据绑定到 DOM 元素上,实现动态更新视图的功能。当数据发生变化时,文本插值会自动更新。插值语法为双括号:{{  }},如以下示例

3.属性绑定

属性绑定是指将一个属性(例如控件的位置、大小、文字内容等)与另一个对象的属性或数据源之间进行关联。当绑定的属性发生变化时,绑定的对象的属性也会随之发生变化。

使用@click为标签绑定事件,使用methods设置要触发的行为

二.计算属性和侦听器

1.计算属性

可以在里面写一些计算逻辑的属性, 他不像是普通函数那样直接返回结果,而是经过一系列计算之后再返回结果。同时只要在它当中应用了data中的某个属性,当这个属性发生变化时,计算属性可以触摸到这个变法,并自动执行。使用:在computed对象中定义计算属性,在页面中使用{{方法名}}来显示计算的结果

<body>
    <!-- 
        // 1.每一个技术属性都包含一个getter函数与setter函数
        // 2.计算属性会默认使用getter函数,setter函数并不常见,所以一般计算属性getter和setter都不写
        // 3.getter函数是默认用法,setter函数不是默认用法。如果要使用setter函数,必须手动写出setter函数
        // 4.setter函数内的形参是你要修改的值
     -->
     <!-- 准备好一个容器 -->
     <div id="app">
        姓: <input type="text" v-model="lastName"> <br>
        名: <input type="text" v-model="firstName"> <br>
        全民: <span>{{fullName}}</span> <br>
        <button @click="bth">修改计算属性的值</button>
     </div>
     <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
     <script>
        var app = new Vue({
            el:"#app",
            data(){
                return {
                    firstName:'图图',
                    lastName:'胡',
                }
            },
            computed:{
                fullName:{
                    // get:获取值时触发
                    // 当有人读取fullName时,get就会被调用,且返回值就作为fullName的值
                    get(){
                        return this.firstName + '-' + this.lastName;
                    },
                    // set 设置值时触发
                    // 当计算属性被修改时,调用set
                    set(value){
                        console.log('set',value);
                        const arr = value.split('-')
                        this.firstName = arr[0]
                        this.lastName = arr[1]
                    }
                }
            },
            methods:{
                bth(){
                    this.fullName = '胡-英俊'
                }
            }
        })
     </script>
</body>
<body>
    <div id="app">
        {{ firstName }}
        {{ lastName }}
        {{ fullName }}
        <button @click="btn">按钮</button>
        </div>

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

    <script>
        var app = new Vue({
            el: "#app",
            data: {
                firstName: "图图",
                lastName: "胡"
            },
            methods: {
                btn() {
                    this.firstName = "英俊";
                }
            },
            computed: {
                fullName() {
                    console.log('调用了计算属性');
                    return this.lastName + this.firstName;
                }
            }
        })
    </script>
</body>

 2.侦听器

侦听器(listener)是一种用于监听某种事件发生的程序或组件。它可以被添加到应用程序中来捕捉特定类型的事件,如鼠标点击、键盘输入、窗口关闭等等。当该类型的事件发生时,侦听器会自动执行相应的操作。语法如下:

<body>
    <script>
        // [侦听器]
        // 作用:用来侦听数据有没有变化,一旦有变化就调用函数。
        // 语法: 在和data、methods这些平级的位置写一个watch
        new vue({
            el: '',
            data: {},
            methods: {

            },
            // 侦听器
            watch: {
                // 参数一: 改变后的值。
                // 参数二:改变前的值。
                // 要侦听的数据
                (newValue, oldValue) {

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

 三.结构渲染

1.v-if

2.v-for与v-if的区别

四.样式绑定 

1.内联绑定

<body>
    <script src="../../Vue.js"></script>
    <div id="app">
        <button @click="qh">切换</button>
        <div class="demo" v-bind:class="{size:isSize,color:isColor,active:isActive}">
        // vue.js样式绑定
        </div>
    </div>
    <script>
        const name = new Vue({
            el:'#app',
            data:{
                isSize:true,
                isColor:true,
                isActive:true
            },
            methods:{
                qh:function(){
                    this.isActive =! this.isActive;
                }
            }
        })
    </script>
</body>

2.非内联绑定

<body>
    <script src="../../vue.js"></script>
 
    <div id="app">
        <button @click="classobject.size=false">切换</button>
        <div v-bind:class="classobject">vue.js样式绑定 </div>
    </div>
    
    <script>
        const name = new Vue({
            el:'#app',
            data:{
             classobject:{
                size:true,
                color:true,
                active:true
                }
            },
           
        })
    </script>
</body>

五.事件处理和事件流

1.事件冒泡

微软提出了名为事件冒泡(event bubbling)的事件流。事件冒泡可以形象的比喻成把一颗石头投入水中,泡泡会一直从水底冒出水面。也就是说,事件会从最内层的元素开始发生,一直向上传播,直到document对象。因此在事件冒泡的概念下在button按钮发生click事件的顺序应该是

button-div-body-html-document

2.事件捕捉 

网景提出另一种事件流名为事件捕获(event capturing)。与事件冒泡相反,事件会从最外层开始发生,直到具体的元素。

3.stop修饰符

<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .outer {
            width: 200px;
            height: 200px;
            background-color: blue;
        }
 
        .inner {
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
 
<body>
    <script src="../vue.js"></script>
 
    <div id="app">
        <!-- caputer更改事件传送的顺序 -->
        <div class="outer" @click.capture="outer">
            // 外层盒子
            <!-- stop 阻止子时间默认的冒泡行为 -->
            <div class="inner" @click.stop="inner">
            // 内层盒子
            </div>
        </div>
    </div>
 
    <script>
        new Vue  ({
            el: '#app',
            methods: {
                outer() {
                    console.log("父节点");
                },
                inner() {
                    console.log("子节点");
                }
            }
        })
    </script>
</body>
 
</html>

4.self修饰符

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .one{
            width: 300px;
            height: 300px;
            background-color: red;
        }
        .two{
            width: 300px;
            height: 300px;
            background-color: darkblue;
        }
        .three{
            width: 300px;
            height: 300px;
            background-color: aliceblue;
        }
    </style>
</head>
<body>
    <div id="app">
        <a href="https://www.4399.com/">4399</a>
        <div class="one"@click="one">
            1
            <!-- 目标事件为当前元素时触发 -->
            <div class="two"@click.self="two">
                2
            </div>
            <div class="three"@click="three">
                3
            </div>
        </div>
    </div>
</body>
</html>

六.表单绑定 

1.表单绑定

2.事件修饰符

<body>
    <script src="../vue .js"></script>

    <div id="app">
        <!-- 修饰符.lazy(懒惰)不会即时的将输入框的内容存入data -->
        <input v-model.lazy="msg">
        <span>{{mag}}</span>
        <br>
        <!-- 修饰符.number 把string字符串转为number数字 -->
        <input type="number" v-model.number="age">
        <span>{{age}}</span>

        <!-- ,trim 屏蔽空格  -->
        <input type="text " v-model.trim="text">
        <span>一共{{text.length}}个字符</span>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                msg:'',
                age:'',
                text:''
            }
        })
    </script>
</body>

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Ri

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值