从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.extend 函数详解
Feb 03 Javascript
JavaScript实现x秒后自动跳转到一个页面
Jan 03 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
Js实现滚动变色的文字效果
Jun 16 Javascript
javascript中$(function() {});写与不写有哪些区别
Aug 10 Javascript
java中String类型变量的赋值问题介绍
Mar 23 Javascript
Vue实现购物车功能
Apr 27 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
vue项目开发中setTimeout等定时器的管理问题
Sep 13 Javascript
angularjs http与后台交互的实现示例
Dec 21 Javascript
element-ui点击查看大图的方法示例
Dec 14 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
ThinkPHP模板输出display用法分析
2014/11/26 PHP
PHP访问Google Search API的方法
2015/03/05 PHP
php json转换相关知识(小结)
2018/12/21 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
2014/04/11 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
javascript三元运算符用法实例
2015/04/16 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
Js 获取、判断浏览器版本信息的简单方法
2016/08/08 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python中二维阵列的变换实例
2014/10/09 Python
python的socket编程入门
2018/01/29 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
基于python 凸包问题的解决
2020/04/16 Python
基于python实现破解滑动验证码过程解析
2020/05/28 Python
Python库安装速度过慢解决方案
2020/07/14 Python
python输入中文的实例方法
2020/09/14 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
学期研究性学习个人的自我评价
2014/01/09 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
大学毕业感言一句话
2014/02/06 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
教师节感谢信
2015/01/22 职场文书
学术研讨会欢迎词
2015/01/26 职场文书
2015年会计年终工作总结
2015/05/26 职场文书