从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 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
Feb 23 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
Aug 17 Javascript
关于textarea提交的内容无法换行的解决办法
Apr 09 Javascript
图片轮换效果实现代码(点击按钮停止执行)
Apr 12 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
Apr 22 Javascript
javascript使用appendChild追加节点实例
Jan 12 Javascript
详解如何使用webpack+es6开发angular1.x
Aug 16 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
Aug 22 Javascript
vue-router实现编程式导航的代码实例
Jan 19 Javascript
使用layui 的layedit定义自己的toolbar方法
Sep 18 Javascript
Vue实现小购物车功能
Dec 21 Vue.js
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
短波的认识
2021/03/01 无线电
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
php readfile()修改文件上传大小设置
2017/08/11 PHP
PHP时间类完整代码实例
2021/02/26 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
CSS3 动画卡顿性能优化的完美解决方案
2018/09/20 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
JS出现404错误原理及解决方案
2020/07/01 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
在Keras中利用np.random.shuffle()打乱数据集实例
2020/06/15 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
公司处罚决定书
2015/06/24 职场文书
董事长致辞
2015/07/29 职场文书
干部理论学习心得体会
2016/01/21 职场文书