欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VUE学习知识点总结(一)

程序员文章站 2022-06-06 21:17:40
...

一、模板语法

1、插值语法

用在标签体中{{name}}

2、指令语法

用于解析标签,(包括标签属性,标签体内容,绑定事件。。)

1、v-bind: ===简写为>:

单向绑定数据

 <div id="root2">
     <a v-bind:href="url">点我去百度</a>
 </div>

new Vue({
     el:"#root2",
     data:{
         name:"黄同学",
         url:"https://www.baidu.com"
     }    
 })

2、v-model :双向数据绑定

v-model只能用在表单元素上!!

v-model: value ======>简写为 v-model

3、关于el和data的绑定

1、el的另一种写法

v.$mount("#root")       ======>代替el:"#root"


setTimeout(()=>{        ==============>设置计时器
     v.$mount("#root")
 },1000)

2、data的另一种写法

data:function(){                      =======>函数式
             return{
                 name:"孙洲逸"
             }
         }

2、数据代理

1、defineProperty()的用法

    Object.defineProperty(person,"age",{      //=============>不可枚举
        value:18
    })
        
        
     Object.defineProperty(person,"age",{      //=============>可枚举
     value:18,
     enmuerable:true                        //属性是否可以被枚举
     wirtable:true                         //属性是否可以被修改
     configurable:true                    //属性是否可以被删除
     
        get:function(){           //当有人读取person的age属性时,就会触发本函
            return number
        }
         
            set(value){           //当有人修改person的age属性时,就会触发本函数
            console.log("有人修改了age的属性")
            number = value;
        }
    })

2、Vue中的数据代理

1、通过vm对象来代理data对象中的属性操作(读/写)

2、好处:更加方便的操作data中的数据

3、原理

通过Object.defineProperty()把data对象中的属性添加到vm上面

为每一个添加的属性都指定一个getter/setter属性

通过getter/setter方法去操作data中的属性

3、事件处理

    //其中的this为vm自身
methods:{                    //定义了函数
            showinfo(event){
                console.log(this === vm)
                console.log(event.target.innerText)        //event事件,event.target事件触发者,	                                                          event.target.innerText事件触发者的内容
        }
         
         
   //其中的this为window 
           showinfo:(event)=>{
                console.log(this === vm)
                console.log(event.target.innerText)
        }

1、传递方式

1、不传参

<button v-on:click="showinfo">点我查看信息</button>

2、传参

<button @click="showinfo2(66,$event)">点我查看信息2</button>

3、简写

v-on:click ================> @click

2、传递修饰符

1、prevent 阻止默认事件

2、stop 阻止事件冒泡

<div class="demo1" @click="showinfo">
  <button id="test2" @click.stop="showinfo">点我</button>
</div>

3、once 事件只触发一次

4、capture 事件捕获阶段触发

 <div @click.capture="showmsg(1)">
         div1
         <div @click="showmsg(2)">div2</div>
     </div>

5、self 只有触发事件的event.traget是自己时,才会执行事件

6、passive 先执行默认事件,再执行回调

@scroll //滚动条滚动

@wheel //鼠标滚轮滚动

3、键盘事件

1、Vue中常见的按键别名

enter、delete、esc、space、tab (必须配合keyup使用)、up、down、left、right

2、特殊的几个按键

ctrl、alt、shift、meta

(配合keyup使用时,必须同时按下其他键,再释放其他键,才能起作用)

(配合keydown使用时,正常发挥作用)

3、自定义别名

Vue.config.keyCodes.huiche=13

4、修饰符和键盘事件可以连续写

4、计算属性

1、概念

1、定义:要用的属性是不存在的,需要通过已有的属性来进行计算

2、原理:借助了底层的Object.Property方法提供setter和getter

2、简写**(只有考虑读取不考虑修改的时候才能使用!!)**

正常写法

computed:{
         fullName:{
             get(){
                 console.log("有人调用了get")
                 return this.firstName + "-"+this.lastName
             }
         }

         ```
         
         ```

简写

 computed:{
         fullName(){
             return this.firstName+"-"+this.lastName
         }
     }

5、深度监视

1、监视的两种写法

第一种

   watch:{
                isHot:{
                    handler(){
                        console.log("isHot被改变了")
                        this.weather = this.isHot===true?"炎热":"寒冷"
                    }
                },

第二种

    vm.$watch('isHot',{
            handler(newValue,oldValue){
                console.log("isHot被修改了")
            }
        })

2、属性

1、immediate : 初始化的时候让handler执行一下

2、deep:深度监视

  //监视多级结构中某个属性的变化
                "number.a":{
                    handler(){
                        console.log("a被改变了")
                    }
                },
                //深度监视
                number:{
                    deep:true,
                    handler(){
                        console.log("number北改变了")
                    }
                }

3、注意点

1、vue中的深度监视默认不监测对象内部值的改变

2、配置属性deep:true可以检测对象内部值的改变

3、Vue自身可以监测对象内部值的改变,但是Vue提供的watch默认不可以

4、使用watch监测时,根据对象的数据结构,决定是否采用深度监测

4、监视的简写

前提:不需要开启immediate、deep的时候才可以

简写形式

//第一种形式的简写 
watch:{
             isHot(newValue,oldValue){
                 console.log("isHot被修改了")
             }
         }

//第二种形式的简写
     vm.$watch("isHot",function(newValue,oldValue){
         console.log("isHot被改变了")
     })

5、computed和watch的区别

1、computed能完成的功能,watch也能完成

2、watch能完成的功能,computed不一定能完成,比如异步操作

6、绑定class样式

1、绑定的样式用:class

<div class="basic" :class="mood" id="box" @click="changeMood">
     {{context}}    
 </div>

2、绑定多个样式====用数组

<div id="boxx" class="basic" :class="classArr">
     {{context}}
 </div>

 const vm2 = new Vue({
     el:"#boxx",
     data:{
         context:"你好",
         classArr:["sy1","sy2","sy3"]
     }

 })

3、切换多个样式

const vm3 = new Vue({
     el:"#boxxx",
     data:{
         context:"你好",
         classobj:{
             sy1:false,
             sy2:false,
             sy3:false
         }
     }

2、绑定style样式

可以放对象或者对象数组

 <div class ="basic" :style="{fontSize:fsize+'px'}">{{context}}</div>

7、条件渲染

1、条件指令

1、v-show =“true”

决定元素是否显示

底层实现原理为display:none

2、v-if

元素直接消灭掉,

3、

template可以不破坏页面结构

但是只可以和v-if结合起来使用

不可以和v-show结合起来使用

     <template v-if="n === 1">
         <div>点我n</div>
         <div>点我2</div>
         <div>点我3</div>
         <div>点我4</div>
     </template>
相关标签: Vue vue