从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获取和修改img的src值的方法
Feb 17 Javascript
JavaScript中的数组特性介绍
Dec 30 Javascript
jQuery超赞的评分插件(8款)
Aug 20 Javascript
浅谈JavaScript中的分支结构
Jul 01 Javascript
AngularJS基础 ng-keydown 指令简单示例
Aug 02 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
Jul 07 Javascript
JScript实现地址选择功能
Aug 15 Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
vue+webpack模拟后台数据的示例代码
Jul 26 Javascript
Vue自定义弹窗指令的实现代码
Aug 13 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+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
curl实现站外采集的方法和技巧
2014/01/31 PHP
php使用PDO方法详解
2014/12/27 PHP
js prototype截取字符串函数
2010/04/01 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
微信小程序如何获取用户信息
2018/01/26 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
关于CSS Tooltips(鼠标经过时显示)的效果
2013/04/10 HTML / CSS
浅谈css3中的前缀
2016/07/20 HTML / CSS
CSS3+HTML5+JS 实现一个块的收缩与展开动画效果
2020/11/17 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
全球精选男装和家居用品:Article
2020/04/13 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
酒店保洁主管岗位职责
2013/11/28 职场文书
医学生个人求职信范文
2014/02/07 职场文书
学校标语大全
2014/06/19 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
电信营业员岗位职责
2015/04/14 职场文书
学雷锋活动简报
2015/07/20 职场文书
企业法人任命书
2015/09/21 职场文书