从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面向对象编程
Mar 02 Javascript
js过滤数组重复元素的方法
Sep 05 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
js弹出模式对话框,并接收回传值的方法
Mar 12 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
Aug 04 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
vue实现直播间点赞飘心效果的示例代码
Sep 20 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函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
Thinkphp调用Image类生成缩略图的方法
2015/03/07 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
img的onload的另类用法
2008/01/10 Javascript
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
基于Jquery的温度计动画效果
2010/06/18 Javascript
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
人机交互程序 python实现人机对话
2017/11/14 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
Linux中如何用命令创建目录
2015/01/12 面试题
医学生自我评价
2014/01/27 职场文书
公证书样本
2014/04/10 职场文书
2015年实习单位评语
2015/03/25 职场文书