1. Vue

2023-05-14  本文已影响0人  努力生活的西鱼

1. Vue基础

  1. Vue是一套用于构建用户界面的渐进式JavaScript框架

  2. Vue的作者是尤玉溪

  3. Vue的特点

      1. 采用组件化模式,提高代码复用率,且让代码更好维护
      1. 声明式编码,让编码人员无需直接操作DOM,提高开发效率
      1. 使用虚拟DOM + 优秀的Diff算法,尽量复用DOM节点
  4. 学习Vue之前,要掌握的JavaScript基础知识

      1. ES6语法规范
      1. ES6模块化
      1. 包管理器
      1. 原型,原型链
      1. 数组常用方法
      1. axios
      1. promise

2. 初识Vue

2. 模板语法

Vue模板语法有两大类

    1. 插值语法:
      功能:用于解析标签体内容
      写法:{{xxx}}
    1. 指令语法
      功能:用于解析标签(包括标签属性,标签体内容,绑定事件...)
      举例:v-bind:href="url" 或者 :href="url"
3. 数据绑定

Vue中有两种数据绑定的方式

备注:

    1. 双向绑定一般都应用在表单类元素上(input, select等)
    1. v-model:value可以简写为v-model,因为v-model默认收集的就是value的值
4. el和data的两种写法
  1. el的两种写法
 const vm = new Vue({
     el: '#root',
     data: {
         name: ''
     }
 })
const vm = new Vue({
     data: {
         name: ''
     }
})
 vm.$mount('#root')
  1. data的两种写法
 const vm = new Vue({
     el: '#root',
     data: {
         name: ''
     }
 })
const vm = new Vue({
     el: '#root',
     data: function() {
            return {
                name: ''
            } 
    }
 })
  1. 一个重要的原则

由Vue管理的函数,一定不要写箭头函数,一旦写了箭头函数,this就不是Vue实例了

5. MVVM模型

MVVM模型

观察发现

  1. data中的所有属性,最后都出现在了vm身上
  2. vm身上所有的属性,以及vue原型上所有属性,在Vue模板中都可以使用
6. 数据代理
<script type="text/javascript">
    let number = 18

    let person = {
        name: '张三',
        sex: '男'
    }

    Object.defineProperty(person,'age', {
        // value: 18,
        // enumerable: true, // 控制属性是否可以枚举,默认false
        // writable: true, // 控制属性是否可以被修改,默认false
        // configurable: true // 控制属性是否可以被删除,默认false

        // 当有人读取person的age属性时,get函数就会被调用,且返回值就是age的值
        get: function () {
            return number
        },

        // 当有人修改person的age属性时,set函数就会被调用,且会收到修改的具体值
        set(value) {
            number = value
        }
    })

    console.log(person)
</script>
<!--
数据代理: 通过一个对象代理对另一个对象中属性的操作(读/写)
-->
<script type="text/javascript">
let obj1 = {x: 100}
let obj2 = {y: 200}

Object.defineProperty(obj2,'x', {
    get() {
    return obj1.x
    },

    set(v) {
    obj1.x = v
    }
})
</script>
<!--
    1. Vue中的数据代理
      通过vm对象来代理data对象中属性的操作(读/写)
    2. Vue中数据代理的好处
      更加方便的操作data中的数据
    3.基本原理
      通过Object.defineProperty()把data对象中所有属性添加到vm上
      为每一个添加到vm上的属性,都指定一个getter和setter。
      在getter和setter内部去操作(读/写)data中对应的属性
-->
14. 事件处理

事件的基本使用:

    1. 使用v-on:xxx 或 @xxx绑定事件,其中xxx是事件名
    1. 事件的回调需要配置在methods对象中,最终会在vm上
    1. methods中配置的函数,不要用箭头函数,否则this就不是vm啦
    1. methods中配置的函数,都是被Vue所管理的函数,this指向的是vm 或 组件实例对象
    1. @click="demo" 和 @click="demo($event)"效果一致,但后者可以传参
<button v-on:click="showInfo1">点我提示信息1(不传参)</button>
<button @click="showInfo2($event,66)">点我提示信息2(传参)</button>

methods: {
    showInfo1(event) {
        console.log(event)
        alert('同学你好')
    },
    showInfo2(event, value) {
        console.log(event, value)
    }
}
15. 事件修饰符

Vue中的事件修饰符

    1. prevent:阻止默认事件(常用)
    1. stop:阻止事件冒泡(常用)
    1. once:事件只触发一次(常用)
    1. capture: 使用事件的捕获模式
    1. self: 只有event.target是当前操作的元素才触发事件
    1. passive: 事件的默认行为立即执行,无需等待事件回调执行完毕
<!--  阻止默认事件(常用)   -->
<a href="https://www.baidu.com" v-on:click.prevent="showInfo">点我提示信息</a>

<!--  阻止事件冒泡(常用)  -->
<div class="demo1" v-on:click="showInfo">
    <button v-on:click.stop="showInfo">点我提示信息</button>
    <a href="https://www.baidu.com" v-on:click.stop.prevent="showInfo">点我提示信息</a>
</div>

<!--  事件只触发一次  -->
<button v-on:click.once="showInfo">点我提示信息</button>

<!--  使用事件的捕获模式  -->
<div class="box1" v-on:click.capture="showMsg(1)">
    div1
    <div class="box2" v-on:click="showMsg(2)">
        div2
    </div>
</div>

<!--  只有event.target是当前操作的元素时,才触发事件  -->
<div class="demo1" v-on:click.self="showInfo">
    <button v-on:click="showInfo">点我提示信息</button>
</div>

<!--  passive: 事件的默认行为立即执行,无需等待事件回调执行完毕  -->
16. 键盘事件
上一篇 下一篇

猜你喜欢

热点阅读