从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 easyui的tabs使用时的问题
Mar 23 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
Nov 16 Javascript
javaScript 计算两个日期的天数相差(示例代码)
Dec 27 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
Jun 16 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
jquery轮播的实现方式 附完整实例
Jul 28 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 Javascript
json前后端数据交互相关代码
Sep 19 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
Jun 08 Javascript
JavaScript中的函数式编程详解
Aug 22 Javascript
通过实例解析jQ Ajax操作相关原理
Sep 23 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中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
微信小程序 获取微信OpenId详解及实例代码
2016/10/31 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
房地产员工找工作的自我评价
2013/11/15 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
学生检讨书范文
2015/01/27 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
Vertica集成Apache Hudi重磅使用指南
2022/03/31 Servers
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS