位置: 编程技术 - 正文

浅谈Nodejs观察者模式(js观察者模式和发布订阅)

编辑:rootadmin

推荐整理分享浅谈Nodejs观察者模式(js观察者模式和发布订阅),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs cors,nodejs作者,nodejs作者,nodejs query,js观察者模式,nodejs events,nodejs query,js观察者模式,内容如对您有帮助,希望把文章链接给更多的朋友!

一、前言

Nodejs使用有些日子了,近来再回顾下其API、多使用新特性,以期有更高层次的掌握,本次API的总结区别于单纯对英文版的汉化,会多做些扩展和自己的理解,希望对大家有所帮助,先从最核心的Events开始

Nodejs的Events实现了一种观察者模式,其支持了Nodejs的核心机制,且http / fs / mongoose等都继承了Events,可以添加监听事件。这种设计模式在客户端的组件编程思想里经常会用到,我们先简单了解下该模式。

首次接触 观察者模式是在Extjs框架的 Ext.util.observable源码,那时刚接触js,感觉这种模式很强大,也是我最早接触到的设计模式,后来在 underscore.js 源码里也有看到,且后者实现更简捷、优雅,我编写组件时也基本是按照这种思想。

观察者模式就是为某一对象添加一监听事件,如on('show', callback),由该对象在符合条件如show时自行触发,浏览器本身已经为dom实现了监听机制。

如我们为input添加keyup监听,目的是为了输出其value

这样输入内容时会自行在日志中输出其value。

但我们自己做一个组件如Dialog,如何监听最常用的show / hide事件呢&#;

初级的做法是实例化时直接将回调配置进去,如

这样也可以用,不过显然不够灵活,如何将dialog做的像input那样可随时添加事件呢

二、观察者模式实现

首先实现Events对象,这里提供基础的监听on和触发emit,事件是以json形式压栈在对象的_events里

再抽象一个函数用于为对象复制属性

实现一个Dialog,仅实现创建; method: show / hide; event: show / hide;

看效果时,加上这段样式

浅谈Nodejs观察者模式(js观察者模式和发布订阅)

实现组件

扩展属性

生成实例,并为其添加三个show及hide监听事件

我们分六次添加了六个不同的show事件和hide事件。当执行 dialog.show() 时就会输出三条对应的日志。添加的事件保存在 dialog._events里,如图

添加的三个show都输出成功,事件保存在_events属性里

nodejs Events也是实现了这一过程。

三、结构

四、API

其提供的method有on,是addListener的简写都是为实例添加监听事件,其它属性也都顾名思义,就简单说明下

五、应用

使用Events,通常就直接实例化即可,如上面API部分所例

不过,如果我们在nodejs端也实现了一个组件,如前面的Dialog,如何让Dialog也具备Events的功能呢?可以用Extjs实现的 extend方案

创建Dialog构建器

这样就为一个组件实现了Events机制,当调用method时,会触发event

六、总结

nodejs提供了很好的监听机制,并且也应用在其所有模块,其支持了nodejs最特色的I/O模式,如我们启动http服务时会监听其 connect / close,http.request时会监听 data / end等,了解监听机制对学习理解nodejs的基础,也对提升编程思想有益。

Node.js与Sails ~项目结构与Mvc实现及日志机制 本文首先从sails的安装讲起接下来介绍node.js与Sails的日志机制,小伙伴们已经迫不及待要看下文了吧,好吧。Sails是一个Node.js的中间件架构,帮助我们很

简单谈谈node.js 版本控制 nvm和 n 今天的话题包括2个部分1.node.js下使用nvm或者n来进行版本控制2.nvm安装node.js版本后,重启终端node,npm环境变量失效第一部分用什么来管理node.js版本首先应

在Ubuntu系统上安装Node.JS的教程 Node.js在实时的Web应用上采用了基于WebSocket的推送技术。这意味着什么样的革命性?Well,在经过了多年的基于无状态的请求-返机制的无状态交互之后,

标签: js观察者模式和发布订阅

本文链接地址:https://www.jiuchutong.com/biancheng/370625.html 转载请保留说明!

上一篇:node.js下LDAP查询实例分享(nodejs获取客户端ip地址)

下一篇:Node.js与Sails ~项目结构与Mvc实现及日志机制(node与js的区别)

  • 本月计提所得税费用
  • 财务报表没申报以后可不可以补申报
  • 小规模增值税税率表2023年最新版
  • 劳动收入与报酬的具体形式有哪些
  • 房地产企业利息资本化条件有哪些
  • 流动负债是总负债吗
  • 财产租赁所得适用什么税率
  • 进口关税税率和增值税
  • 第三方支付付款方式
  • 公司用商标权作假违法吗
  • 跨月未抵扣的专用发票开红字发票
  • 母子公司之间转让土地使用权
  • 欠税已经缴纳会影响征信吗
  • 开具的销项发票是否都要入收入科目吗?
  • 作废发票进项税怎么处理
  • 小规模30万免税政策
  • 党员参加集体活动规定
  • 长期股权投资权益法初始计量
  • 固定资产改造计入什么科目
  • 投资性房地产处置时公允价值变动损益
  • 电梯维修公司发展前景
  • 非同一控制下合并报表编制
  • 有限责任公司注册要求
  • php表单生成器
  • 发票章盖的不清楚可以在旁边再盖一个吗
  • 研发费用税前加计扣除怎么算
  • 企业研发费用加计扣除最新政策
  • 企业收到赠送商品怎么办
  • 双峰骆驼什么意思
  • php 收邮件
  • yolov5结构解析
  • 2023年highway-env更新之后的使用记录(含DDQN,DuelingDQN,DDQN+OtherChanges) 入门到入土,再踩坑就不玩原神了
  • 织梦怎么添加相关
  • 增值税发票开了没有抵扣有什么后果?
  • 企业注销亏损怎么处理
  • 老板财务报表模板
  • 律师事务所执业证
  • 高速公路电子发票查询平台
  • SQLite教程(四):内置函数
  • 无偿划转股权涉税
  • 增值税扣税凭证进项税额转出情况核实函
  • 权益工具是金融资产还是非金融资产
  • 发票行业税目怎么选
  • 增值税专用发票丢了怎么补救
  • 调转会计证需要什么资料
  • 折旧汇总分配周期参数设定完成可以更改吗
  • 收付实现制的适用范围
  • 企业收到收据后怎么处理
  • 可供出售金融资产现在叫什么
  • 用友电子报表怎么生成
  • 房屋提折旧几年
  • 工资挂账怎样做账
  • 认缴资金可以增加吗
  • 汇兑损益的账务处
  • 餐饮行业的原材料怎么做账
  • 确认收入一定要交增值税吗
  • php 访问数据库
  • win10关掉搜索
  • Windows Server 2008故障转移群集简介
  • 苹果怎么格式化彻底
  • linux中awk怎么用
  • prevsrv.exe - prevsrv是什么进程 有什么用
  • win8中文版怎么升级到win10
  • Linux中的stat命令使用简介
  • cocos2d安装
  • Tutorial 6:Translation Transformation
  • javascript到c
  • node·js
  • 区分例假和怀孕前乳头疼
  • 安卓机虚拟键盘
  • js定义数字
  • python怎么制作
  • jqueryw3c
  • javascript面向对象 第三方类库
  • js如何判断是否有定时器功能并清除
  • 重庆市电子税务局发票查询
  • 噼里啪啦财务公司加盟
  • 河北省国家税务局电子税务局官网入口
  • 营业执照网上申报入口官网
  • 北京地税查询官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设