从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 设置url参数
Jul 08 Javascript
javascript使用正则表达式检测IP地址
Dec 03 Javascript
15款jQuery分布引导插件分享
Feb 04 Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
Mar 28 jQuery
addEventListener()与removeEventListener()解析
Apr 20 Javascript
JavaScript事件方法(实例讲解)
Jun 27 Javascript
vue router 通过路由来实现切换头部标题功能
Apr 24 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
May 21 Javascript
如何手动实现一个 JavaScript 模块执行器
Oct 16 Javascript
Node.js文本文件BOM头的去除方法
Nov 22 Javascript
详解CocosCreator消息分发机制
Apr 16 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图片处理函数获取类型及扩展名实例
2014/11/19 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
jQuery实现简单的图片查看器
2020/09/11 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
Django框架下在URLconf中指定视图缓存的方法
2015/07/23 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
使用pip安装python库的多种方式
2019/07/31 Python
python实现的发邮件功能示例
2019/09/11 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
采购部主管岗位职责
2014/01/01 职场文书
酒店副总经理岗位职责范本
2014/02/04 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
离婚协议书格式
2014/11/21 职场文书
七年级地理教学计划
2015/01/22 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
用电申请报告范文
2015/05/18 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
学校远程教育工作总结
2015/08/11 职场文书
聘任通知书
2015/09/21 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
经典法律座右铭(50句)
2019/08/15 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
Golang解析JSON对象
2022/04/30 Golang