Vue基础知识——数据绑定、数据代理

5 篇文章 0 订阅

目录

什么是Vue?

初识Vue

模板语法

 数据绑定

el和data的两种写法

MVVM模型

数据代理

事件处理 


什么是Vue?

Vue是一套用于构建用户界面渐进式JavaScript框架
Vue可以自底向上逐层的应用

  •         简单应用:只需一个轻量小巧的核心库
  •         复杂应用:可以映入各式各样的Vue框架

Vue的特点

遵循MVVM模式,编码简洁体积小运行效率高,适合移动/PC端开发

  1. 采用组件化模式,提高代码复用率,且让代码更好维护
  2. 声明式编码,让编码人员无需直接操作DOM,提高开发效率
  3. 使用虚拟DOM+优秀的Diff算法,尽量复用DOM


初识Vue

想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象 

  • root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法
  • root容器里的代码被称为【Vue模板】
  • Vue实例和容器是一一对应的,正式开发中只有一个Vue实例,并且会配合着组件一起使用

模板语法

html 中包含了一些 JS 语法代码,语法分为两种,分别为

  1. 插值语法(双大括号表达式)
  2. 指令(以 v-开头) 

插值语法

功能用于解析标签体内容

写法:{{xxx}},xxx是js表达式,且可以直接读取到data中所有的属性 

指令语法

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

写法:v-bind:href = "xxx" 或简写为:href="xxx",xxx同样要写表达式,且可以直接读取到data中所有的属性

  •  Vue中有很多的指令,且形式都是: v-???,此处我们只是拿v-bind举个例子 

 数据绑定

Vue的数据绑定分为两种绑定方式:单项数据绑定双向数据绑定

1. 单项数据绑定

  1. 语法:v-bind:href ="xxx" 或简写为 :href
  2. 特点:数据只能从 data 流向页面

2. 双向数据绑定

  1. 语法:v-mode:value="xxx" 或简写为 v-model="xxx"
  2. 特点:数据不仅能从 data 流向页面,还能从页面流向 data

 


el和data的两种写法

在创建Vue的实例对象时,有两个属性是我们必须使用到的,el  和 data属性

1. el的两种写法

1. new Vue的时候配置el属性

 new Vue({
            el: '#root',
            data: {
                name: '张三'
            }
        })

2. 先创建Vue实例,随后再通过vm.$mount('#root')指定el的值

   new Vue({

            data: {
                name: '张三'
            }
        }).$mount('#root')

2. data的两种写法

1. 对象式

 new Vue({
            el: '#root',
            data: {
                name: '张三'
            }
        })

2. 函数式

     new Vue({
            data() {
                return {
                    name: '张三'
                }
            }
        }).$mount('#root')
  • 目前那种写法都可以,但是使用组件时,data必须使用函数式,否则会报错 

MVVM模型

  • M:模型(Model):对应的data中的数据
  • V:视图(View):模板
  • VM:视图模型(ViewModel):Vue实例对象

    


数据代理

1. Object.defineProperty

  <script>
        let number = 18;
        var person = {
            name: '张三',
            sex: '男',

        }

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

            //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
            get() {
                return number;
            },
            //当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
            set(value) {
                number = value;
            }
        })
        // console.log(Object.keys(person));


        console.log(person);
    </script>

  • enumerable:true,       //控制属性是否可以枚举,默认值是false
  • writable:ture,        //控制属性是否可以被修改,默认值是false
  • configurable:true    //控制属性是否可以被删除,默认值是false

2. 数据代理的理解

通过一个对象对另一个对象中的属性的操作(读、写)

3. Vue中的数据代理

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

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

基本原理

  •     通过Object.defineProperty()把data对象中所有的属性添加到vm上
  •     为每一个添加到vm上的属性,都指定一个getter/setter
  •     在getter/setter内部去操作(读/写)data中对应的属性

事件处理 

事件的基本使用

  1. 使用v-on:xxx 或 @xxx 绑定事件,其中xxx是事件名
  2. 事件的回调需要配置在methods对象中,最终会在vm
  3. methods中配置的函数,不要用箭头函数!否则this指向的就不是vm了
  4. methods中配置的函数。都是被Vue所管理的函数,this的指向是vm 或组件实例对象
  5. @click = "demo" @click = “demo($event)”效果一致,但是后者可以传参 
 <div id="root">
        <h1>欢迎来到{{name}}</h1>
        <button v-on:click="showInfo1">时间的基本使用1</button>
        <button @click="showInfo2($event,12)">时间的基本使用2</button>
    </div>
<script>
        Vue.config.productionTip = false;//阻止 vue 在启动时生成生产提示。
        new Vue({
            el: '#root',
            data: {
                name: '尚硅谷'
            },
            methods: {
                showInfo1() {
                    alert('同学你好!');
                },
                showInfo2(event, a) {
                    // alert('你好同学!!')
                    console.log(event.target.innerHTML);
                    console.log(a);
                }
            }
        })
    </script>

 Vue中的事件修饰符

事件修饰符说明
prevent阻止默认事件(常用)
stop 阻止事件冒泡(常用)
once事件只触发一次(常用)
capture使用事件的捕获模式
self只有event-target是当前操作的元素时才触发事件
passive时间的默认行为为立即执行,无需等待事件回调执行完毕

 Vue中的键盘事件的按键别名

vue中常见的按键别名

键盘按键名称按键别名
 回车enter
删除delete(捕获“删除‘和”退格“键)
退出esc
空格 space
换行tab(特殊,必须配合keydown取使用)
up
 down
left
right
  1. vue未提供别名的按键,可以使用按键原始的key值去绑定,但是注意要转为kebab-case(短横线命名)
  2. 也可以使用keyCode取指定具体的按键(不推荐)
  3. 可以去定制按键别名: Vue.config.keyCodes.自定义键名 = 键码

系统修饰键(用法特殊)

ctrl,alt,shift,meta

  • 配合keyup使用:按下修饰键的同时,再按下其他键,随后释放其他键,事件才被触发
  • 配合keydown使用: 正常触发

 💐Per aspera ad astra  循此苦旅,以觅繁星 💐 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值