从Node.js事件触发器到Vue自定义事件的深入讲解


Posted in Javascript onJune 26, 2020

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…

总结

到此这篇关于从Node.js事件触发器到Vue自定义事件的文章就介绍到这了,更多相关Node.js事件触发器到Vue自定义事件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
不要小看注释掉的JS 引起的安全问题
Dec 27 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
Mar 12 Javascript
javascript定义变量时有var和没有var的区别探讨
Jul 21 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
JavaScript面试开发常用的知识点总结
Aug 08 Javascript
JS日程管理插件FullCalendar中文说明文档
Feb 06 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
JS实现提示效果弹出及延迟隐藏的功能
Aug 26 Javascript
vue实现倒计时获取验证码效果
Apr 17 Javascript
js编写简易的计算器
Jul 29 Javascript
Vue如何提升首屏加载速度实例解析
Jun 25 #Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
Jun 25 #Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 #Javascript
viewer.js实现图片预览功能
Jun 24 #Javascript
Javascript实现鼠标移入方向感知
Jun 24 #Javascript
javascript实现前端input密码输入强度验证
Jun 24 #Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 #Javascript
You might like
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
php cookie工作原理与实例详解
2016/07/18 PHP
PHP _construct()函数讲解
2019/02/03 PHP
input 高级限制级用法
2009/03/26 Javascript
javascript form 验证函数 弹出对话框形式
2009/06/23 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
在Python3中初学者应会的一些基本的提升效率的小技巧
2015/03/31 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
Python3进制之间的转换代码实例
2019/08/24 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
卫校毕业生自我鉴定
2013/10/31 职场文书
烹饪自我鉴定
2014/03/01 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
社区党员公开承诺书
2014/08/30 职场文书
好人好事演讲稿
2014/09/01 职场文书
党员思想汇报材料
2014/12/19 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
Go并发4种方法简明讲解
2022/04/06 Golang