从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 mobile实现拨打电话功能的几种方法
Aug 05 Javascript
js控制分页打印、打印分页示例
Feb 08 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
Feb 14 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
Apr 04 Javascript
小程序input数据双向绑定实现方法
Oct 17 Javascript
JQuery常用选择器功能与用法实例分析
Dec 23 jQuery
如何使用gpu.js改善JavaScript的性能
Dec 01 Javascript
vue中使用mockjs配置和使用方式
Apr 06 Vue.js
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权限认证Auth实例详解
2014/07/22 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
JS替换文本域内的回车示例
2014/02/18 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
JavaScript 消息框效果【实现代码】
2016/04/27 Javascript
微信小程序 在线支付功能的实现
2017/03/14 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
python中异常捕获方法详解
2017/03/03 Python
python3模块smtplib实现发送邮件功能
2018/05/22 Python
在python 中实现运行多条shell命令
2019/01/07 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
python多线程分块读取文件
2019/08/29 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
草莓网官网:StrawberryNET
2019/08/21 全球购物
高中生期末评语
2014/01/28 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
班级体育活动总结
2014/07/05 职场文书
买卖合同纠纷代理词
2015/05/25 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
SQL语句多表联合查询的方法示例
2022/04/18 MySQL
Mysql数据库group by原理详解
2022/07/07 MySQL
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python