从Node.js事件触发器到Vue自定义事件的深入讲解
作者:Pinocchioooo 发布时间:2024-05-03 15:54:28
Node.js中的事件触发器所引发的思考
今天在看 Node.js 文档的时候讲到事件触发器,其中的 emit 方法让我想到了 Vue 中的自定义事件,借此我对 Vue 又有了新的理解,所以将我的理解记录下来,留作学习笔记。
Node.js中的事件触发器
Node.js 为我们提供了一个事件模块:EventEmitter,我们可以用它来处理事件
const EventEmitter = require('events')
const eventEmitter = new EventEmitter()
eventEmitter 对象上有两个方法:on 和 emit
on 用于添加自定义事件,注册回调函数
emit 用于触发事件,并将参数传递给回调函数
eventEmitter.on('start', (e) => {
console.log(e)
})
eventEmitter.emit('start', 'started')
控制台将会打印 started
Vue中的自定义事件
给组件添加自定义事件,下面示例代码中的 enlarge-text 事件就是我们自己定义的事件,onEnlargeText 则是事件触发时所要执行的回调函数,这里的 onEnlargeText 是一个函数指针,指向 methods 中所定义的 onEnlargeText 函数。既然是回调函数,所以可能会有参数传给它,那么自定义事件的回调函数中的参数是谁传递给它的,具体含义又是什么呢?
<blog-post
...
@enlarge-text="onEnlargeText">
</blog-post>
methods: {
onEnlargeText: function (enlargeAmount) {
this.postFontSize += enlargeAmount
}
}
子组件事件处理中可以通过内建的 「$emit」 方法传入父组件自定义事件名来触发这个自定义事件,并且通过 「$emit」 的第二个参数将需要传递给父组件的数据抛出,这样,自定义事件的回调函数中的参数来源也就明白了,就是 「$emit」 方法的第二个参数,这里可以直接抛出一个更加灵活的对象。
<button @click="$emit('enlarge-text', 0.1)">
Enlarge text
</button>
到这里我们可以看到,Vue 中的自定义事件和 Node.js 中的事件触发器的理念非常相似,Vue 中自定义事件的注册是在父组件中完成的,而触发是在子组件中完成的。至此,就完成了对 Vue 自定义事件的解释。
参考资源
nodejs.cn/learn/the-n…
cn.vuejs.org/v2/guide/co…
来源:https://juejin.im/post/5ef2fff86fb9a07e6d7099da


猜你喜欢
- 什么是拼音转换在我们学习语言之前,我们一般会学习拼音来认识汉字,并学会如何读汉字。所以,拼音在对于我们语言的重要性不言而喻。而拼音转换指的是
- 题目描述997. 找到小镇的法官 - 力扣(LeetCode)小镇里有 n 个人,按从 1 到 n 的顺序编号。传言称,这些人中有一个暗地里
- 1、自动化代码中,用到了哪些设计模式?单例设计模式工厂模式PO设计模式数据驱动模式面向接口编程设计模式2、什么是断言( Assert) ?断
- 本文实例讲述了PHP实现打包下载文件的方法。分享给大家供大家参考,具体如下:/*** 下载文件* @param $img* @return
- 目录小游戏规则简介实现初始化游戏窗口游戏逻辑实现玩家类实现月饼类交互逻辑总结中秋佳节就快来临,给各位大佬整个兔子吃月饼的小游戏助助兴,废话不
- 本文实例为大家分享了python使用opencv切割图片白边的具体代码,可以横切和竖切,供大家参考,具体内容如下废话不多说直接上码,分享使人
- <?php class Mysql { private $conn; private $host; private $username
- 本文实例讲述了C#实现按数据库邮件列表发送邮件的方法。分享给大家供大家参考。具体实现方法如下:using System;using Syst
- 一 介绍Python上有一个非常著名的HTTP库——requests,相信大家都听说过,用过的人都说非常爽!现在requests库的作者又发
- 什么是MobileNetV2模型MobileNet它哥MobileNetV2也是很不错的呢MobileNet模型是Google针对手机等嵌入
- 拆出主板今天带大家看一下怎么用 Go 写工厂模式的代码,我们来学习一个实战案例。这个写法笔者日常经常使用,能够很有效地帮助大家实现 Sepa
- pycharm是个很不错的python开发工具,大大缩短了python项目的创建时间以及调试时间在使用python写脚本一段时间后,想尝试使
- pycharm是编辑python很好使用的工具。下面看看如何安装pycharm工具/原料:pycharm安装包方法/步骤:在网上下载pych
- 一. 视图集与路由的使用使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中:list() 提供一组数据retrieve() 提
- Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功
- 实现了我的小跳槽以后,从8月7号入职了现在的这家公司,我好像是加入了救火队的行列,还没有开始开发新的模块,只是一直在实现已经上线模块中的新需
- 这是来自于Steven D编写的WEB前端开发设计要点的内容。虽然许多设计师已非常熟练的使用了Web标准,让人遗憾的是有很多细节的排版处理仍
- 本文实例讲述了python实现计算资源图标crc值的方法,分享给大家供大家参考。具体方法如下:实现该功能的关键在于解析资源信息,找到icon
- 前言pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行
- 今天分享的这篇文章,文字不多,代码为主。绝对干货,童叟无欺,主要分享了提升 Python 性能的 20 个技巧,教你如何告别慢Python。