从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 相关文章推荐
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
Aug 04 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
jquery图片切换实例分析
Apr 15 Javascript
探讨JavaScript中的Rest参数和参数默认值
Jul 29 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
jquery实现简单的瀑布流布局
Dec 11 Javascript
vue事件修饰符和按键修饰符用法总结
Jul 25 Javascript
Node之简单的前后端交互(实例讲解)
Nov 14 Javascript
用react-redux实现react组件之间数据共享的方法
Jun 08 Javascript
vue实现日历备忘录功能
Sep 24 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
Aug 23 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
Oct 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
第五节 克隆 [5]
2006/10/09 PHP
如何在PHP程序中防止盗链
2008/04/09 PHP
PHP5.4起内置web服务器使用方法
2016/08/09 PHP
py文件转exe时包含paramiko模块出错解决方法
2016/08/12 PHP
php中array_slice和array_splice函数解析
2016/10/18 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
javascript实现的简单的表单验证
2015/07/10 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
Vue组件内部实现一个双向数据绑定的实例代码
2019/04/04 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
详解Python3中yield生成器的用法
2015/08/20 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
Python如何实现动态数组
2019/11/02 Python
Python super()函数使用及多重继承
2020/05/06 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
python单例模式的应用场景实例讲解
2021/02/24 Python
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
大三毕业自我鉴定
2014/01/15 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
人才市场接收函
2015/01/30 职场文书
HTML中的表单元素介绍
2022/02/28 HTML / CSS
Python中with上下文管理协议的作用及用法
2022/03/18 Python