zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

《Node应用程序构建——使用MongoDB和Backbone》一2.3 事件

MongoDB事件Node应用程序 构建 2.3 Backbone 使用
2023-09-11 14:17:38 时间

本节书摘来自异步社区《Node应用程序构建——使用MongoDB和Backbone》一书中的第2章,第2.3节,作者【美】Mike Wilson,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.3 事件

Node应用程序构建——使用MongoDB和Backbone
事件是Node.js的活力之源,实际上也是JavaScript本身的活力之源。其他语言在多个并发线程中处理工作流,每个线程都将大部分时间花在等待阻塞的I/O操作上,如磁盘读取、数据库操作或通过网络获取信息。但JavaScript总被认为是一个基于事件的编程模型。早期的事件很简单,如一次鼠标点击、一个页面加载或一次表单提交。更晚期的用法包括完成一次数据库写入,或从磁盘读入文件的内容等事件。

JavaScript利用回调,通过另一种方式来解决问题。程序员编写称为“回调”的特殊函数,让它与特定的事件挂钩,在符合条件时执行,而不是管理长时间运行的进程。例2-1和例2-2的路由例子说明了这一点:Node.js为每个URL设置了特定的响应,然后只在Web浏览器访问这些路由时执行相应的代码。

Node.js包括一个专门的事件库可以供你准备自定义事件。假设你有一个网络应用程序,已经开放给其他开发人员。如果他们想扩展你的工作,有两种选择:基于你的代码创建一些原型函数,并重写所有行为不同的函数,或者直接修改你的代码,构建他们需要的特性。事件给出了第三种选择:在你的代码的特定位置触发一个事件,让所有监听者知道动作已发生,并注入他们自己的行为。

例如,如果你的应用程序包含一个登录功能,你可能有一个OnLoggedIn事件。后继的开发人员可以添加一个监听器来提供额外的功能,如连接到社交网站收集所有与登录者相关的新闻。

例2-6 创建与处理应用程序事件


30d8a41ba8f2426b55dd8f34e1b7902cdeb4edd1

例2-6展示了怎样将3个无关的事件onApplicationStart、onApplicationRun和onApplicationStop串在一起,产生下面的输出。


bd62af718d227d17f0e28dd0a69d6d9c2dd32275

在mainLoop函数执行之前,调用eventEmitter的on方法注册了ApplicationStart、ApplicationRun和ApplicationStop事件。这为每一个事件增加了一个事件监听器:从现在起,只要有事件发生,都会检查这些监听器是否匹配,匹配的回调函数将被执行。

屏幕输出突出了Node.js的一个重要特征:所有工作都在单个线程中进行。当事件发生并由回调响应时,调用方法会暂停直到回调执行完毕。这很重要,因为如果在回调期间发生了消耗大量运算资源的事情,原始函数将不会继续执行,直到全部工作完成。所以这个例子的执行遵循以下路线。

1.运行mainLoop,触发ApplicationStartEvent。

2.运行回调onApplicationStart。

3.继续执行mainLoop,触发ApplicationRun。

4.运行回调onApplicationRun。

5.继续执行mainLoop,触发ApplicationStop。

6.运行回调onApplicationStop。

7.回到mainLoop的执行,接下去没什么可做的,停止。


使用Node.js、MongoDB、Fastify 构建API服务 在现代WEB开发中,数据交互是主要需求,那么对于前后端数据交互来说,REST API 就是其中的数据交互设计的一种,如何设计 REST API ? 对 API 体验至关重要,API 设计的好坏直接影响开发效率,这里就不详细展开介绍,如对 API 设计有兴趣可以参阅专栏《布道API》。
Redis&MongoDB 社区双周刊第2期:Redis&MongoDB的同步、迁移以及混合云场景构建 云栖社区已有1000位Redis&MongoDB开发者,发布了5000+Redis文章,发布了2000+MongoDB文章,沉淀了800+的Redis精品问答,沉淀了1000+的MongoDB精品问答。
第一节 简介 欢迎和我们一起来用以太坊实战开发构建一个去中心化电商DApp!我们将会构建一个类似淘宝的在线电子商务应用,我将使用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台,卖家可以自由地出售商品,买家可以自由地购物: 去中心化: 和淘宝或eBay不同,我们把所有的商业逻辑和核心数据都放在以太坊区块链上,这使 得它成为一个完全去中心化的应用。
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。