从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 相关文章推荐
基于jQuery的消息提示插件 DivAlert之旅(二)
Apr 01 Javascript
jquery 快速回到页首的方法
Dec 05 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
Dec 30 Javascript
使用正则表达式的格式化与高亮显示json字符串
Dec 03 Javascript
JavaScript学习笔记之基础语法
Jan 22 Javascript
jquery原理以及学习技巧介绍
Nov 11 Javascript
使用vue构建一个上传图片表单
Jul 04 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
javascript变量提升和闭包理解
Mar 12 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
微信小程序渲染性能调优小结
Jul 30 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
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
Yii框架关联查询with用法分析
2014/12/02 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
JS 显示当前日期与时间的代码
2010/03/24 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
详解使用 Node.js 开发简单的脚手架工具
2018/06/08 Javascript
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
python监控键盘输入实例代码
2018/02/09 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
印尼旅游网站:via
2017/11/12 全球购物
欧缇丽加拿大官方网站:Caudalie加拿大
2019/07/18 全球购物
2015年导购员工作总结
2015/04/25 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
签约仪式致辞
2015/07/30 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL