vue事件、方法、双向绑定原理

19 篇文章 0 订阅
17 篇文章 0 订阅

开头为重点必会

1,Vue 基础使用
指令,插值
  • 插值,表达式
  • 指令,动态属性
  • v-html:这个会有 XSS 风险,会覆盖子组件 (用了之后内部自己写的所有代码块都会被覆盖,失效)

computed(计算) 和 watch(监听)

vue计算属性

  • computed 有缓存,data不变则不会重新计算(缓存意味着不用重复加载)当 dom 是通过 v-model 绑定时 要 get() 和 set() 否则会报错

watch 深度监听

  • watch 本身是浅度监听 如何深度监听?
    要用到 handler 以及 deep : true 深度监听 引用数据类型 拿不到 oldVal 因为它是指针式

class 和 style

  • 可以通过 :class="{ }" 或者 :class="[ ]" 使用class
  • style 也可以 :style=“自定义的样式对象” 注意写法要用驼峰

条件渲染

  • v-if v-else 的用法,可以使用变量,也可以使用 === 表达式
  • v-if 和 v-show 的区别? v-if 和 v-show 的使用场景?
    v-if 是判定 dom的加载/销毁 v-show 是显示/隐藏 如果条件只是用一次 用 v-if 多次用 c-show

循环(列表)渲染

  • 如何遍历对象?
    循环数组 参数有 item 和 index (数组内有id作为唯一标识)
    循环对象 参数 有 val key index (key 必须具有类似 id 的唯一性)
  • key 的重要性 key 不能乱写 (如 random 或者 index)
    key 代表了唯一性 增强了性能
  • v-for 和 v-if 不能一起使用!
    不建议一起用 for 的优先级会更高 每一遍都会进行判定 影响性能

事件

  • event 参数,自定义参数
    $event 作为参数传递即可 vue的 event 是一个原生的 原型对象 没有经过任何装饰
  • 事件修饰符,按键修饰符
  • 【观察】事件被绑定在哪里?
    事件修饰符

表单

  • v-model
  • 常见表单项 textarea checkbox radio select
  • 修饰符 laze number trim
    trim 去除前后空格
    laze 类似防抖输入时驱动 输入完成时驱动双向数据绑定
    number 转化为数字

原型

原型在每一个对象中都有一个属性property这个就是一共对象的原型
原型链:就是这个对象寻找一共自己本身不存在的属性的时候就会去property中寻找,property中有一个__prop__属性,会去这里面寻找,这层层寻找的关系就叫原型链。
原型转换实例化对象可以使用new方法 new fn()
原型转换构造函数方法是 object.property
而实例化对象和构造函数转换原型都是一个方法使用
var obj=new Object();
obj.constructor===Object
obj.proto===Object.prototype

vue双向数据绑定详细:

在双向数据绑定的对象中都有set和个体属性是因为他是用object.defineProperty来实现的

vue双向数据绑定也是通过object.defineProperty这个方法来实现的

object.defineProperty方法会在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象

object.defineProperty(obj, prop, descriptor)三个参数分别是什么意思

obj: 可以理解为目标对象。
prop: 目标对象的属性名。
descriptor: 对属性的描述。

object.defineProperty一般都用来对对象的属性进行一些操作

实现双向绑定思路:就是采用数据改变更新视图,视图改变更新数据

实现过程分为三步:
1.实现一共监听器,用来劫持并监听所有属性,如果有变动的,就通知订阅者
2.实现一个订阅者,可以收到属性的变换通知并执行相应的函数,然后更新视图
3.实现一个解析器。可以扫描每个节点相关指令,并根据初始化模板数据以及初始化相应的订阅器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值