从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

标签:node.js,事件触发器,vue
0
投稿

猜你喜欢

  • sqlserver中with(nolock)深入分析

    2023-07-20 21:28:33
  • 找到一种不错的从SQLServer转成Mysql数据库的方法

    2024-01-17 02:13:09
  • asp版FCKEditor编辑器的用法

    2008-07-05 12:15:00
  • python 串口读取+存储+输出处理实例

    2023-03-30 01:46:26
  • 使用python BeautifulSoup库抓取58手机维修信息

    2022-08-10 01:55:20
  • Python中endswith()函数的基本使用

    2022-06-05 04:01:34
  • Python 中如何写注释

    2022-07-10 21:53:11
  • MAC下MySQL初始密码忘记怎么办

    2024-01-20 03:54:05
  • eWebEditor不支持IE8/IE7的解决方法

    2010-02-28 10:27:00
  • python中split方法用法分析

    2022-05-24 23:34:51
  • mysql千万级数据量根据索引优化查询速度的实现

    2024-01-21 19:16:31
  • golang实现的文件上传下载小工具

    2023-06-28 05:34:34
  • Python利用雪花算法实现生成唯一ID

    2022-10-18 14:49:06
  • CentOS 6、7下mysql 5.7 详细安装教程

    2024-01-24 18:00:47
  • Python合并字典键值并去除重复元素的实例

    2022-02-10 17:48:40
  • js常用排序实现代码

    2023-08-30 08:50:24
  • Zend Framework动作助手Redirector用法实例详解

    2024-05-13 09:53:15
  • Mysql事务的隔离级别(脏读+幻读+可重复读)

    2024-01-29 07:45:06
  • 解决pycharm每次打开项目都需要配置解释器和安装库问题

    2021-10-19 08:38:24
  • 关于Math.PI、前自增和后自增

    2009-05-25 12:38:00
  • asp之家 网络编程 m.aspxhome.com