【前端攻城狮之vue基础】01原生事件和vue事件知识基础和拓展

事件循环模型

事件循环模型分为三个部分,一个是执行栈,一个是浏览器的API模块,一个是存放回调函数的回调队列

  • js执行代码的时候先执行初始化代码,当在定义一个事件/定义一个定时器的时候,将回调函数交给浏览器的事件管理模块/定时器管理模块;
  • 当事件触发或者定时结束的时候,浏览器的事件管理模块/定时器管理模块就将回调函数放到任务队列里面等待执行;
  • 只有当初始化代码执行结束之后,才会循环遍历执行任务队列里面的回调函数
    别称:任务队列=回调队列=消息队列=事件队列

进程和线程

进程和线程,js是单线程还是多线程

  • 进程指的是程序的一次运行,占用一片独立的内存空间
  • 线程是CPU调度的最小单元,一个进程里面可以有很多个进程,这种程序叫多线程程序
  • 单线程指的是,同一个进程里面只能有一个线程;一个程序必须运行在一个进程的一个线程上
  • js是单线程语言,代码从上到下顺序执行,(因为如果是多线程的,会出现线程切换的问题,比如一个线程正要修改p标签的文字,这是突然切换到 了另一个要删除p标签的线程,改着改着就被删了)但是H5的web workers是多线程的

js代码分类

JS代码分类

  • 分为初始化代码和回调代码(作为参数传递的函数叫做回调函数,定义定时器,和绑定事件的代码都是初始化代码)
  • js代码执行的时候先执行初始化代码,之后才会执行回调代码(定时器的回调函数和事件的回调函数)

浏览器内核

浏览器内核
顾名思义:浏览器程序中最核心的代码

  • 谷歌和苹果浏览器 用的是Webkit内核
  • 火狐 用的是 gecko
  • IE浏览器用的是trident
  • 浏览器内核包括很多模块,
    • 以下是主线程
      有js引擎,用来解析js代码;
      文档解析模块:将文档解析成字符串
      Dom/css模块,将html文本字符串解析成节点对象
      布局和渲染模块,将节点对象渲染到页面上
    • 以下是分线程
      定时器模块
      事件处理模块
      网络请求模块

事件的三个阶段

事件的三个阶段

  • 捕获阶段 从window对象向内传播到目标节点的过程,不会触发事件
  • 目标阶段 在目标节点上开始触发事件
  • 冒泡阶段 从目标节点向外传播到window对象,会依次触发事件

事件的捕获

如果一个父元素和子元素绑定了同一个事件,但是我们只想要触发父元素,怎么做?

  • 使用事件捕获capture,将事件处于捕获阶段正向目标阶段传递的时候,就触发事件执行回调函数
  • 原生js可以将addEventListener的第三个参数设置为true
  • vue可以添加事件修饰符capture让事件在捕获阶段就触发@click.capture

事件的委托

事件委托

  • 利用了事件冒泡的原理,将事件加到父元素或祖先元素上,提高了代码开发的效率

vue事件传参

vue事件传参

  • 只传自定义参数 @click=‘fun(obj.id)’
  • 如果不传递任何参数只传递事件对象(不传递参数可以省略括号),默认methods对应的回调函数会接受一个事件对象作为实参 @click=‘fun()’
  • 传递事件对象和自定义参数,自定义参数用$event接受

vue事件和原生js事件的区别

Vue事件和原生事件的区别

  • 个人理解是标签只要一绑定了事件就会将参数传递给methods回调函数做实参,当事件触发的时候,才会执行methods里面的回调函数;而原生的js 事件,只要传递了实参,就代表执行了回调函数

vue事件修饰符

vue事件修饰符

  • .stop 阻止向上冒泡
  • .capture 让事件在捕获阶段就触发
  • .once 事件只会触发一次
  • .prevent 阻止默认事件 比如点击a标签之后,会向href属性地址跳转
  • .native 监听一个原生事件
  • .self 只有event.target是当前操作的元素时 才会触发事件
  • .passive 默认行为立马执行,不用先等回调函数先执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值