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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:

本节书摘来自异步社区《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的执行,接下去没什么可做的,停止。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js:从零开始构建后端服务
【10月更文挑战第42天】在数字时代的浪潮中,掌握一门后端技术对于开发者来说至关重要。Node.js,作为一种基于Chrome V8引擎的JavaScript运行环境,允许开发者使用JavaScript编写服务器端代码,极大地拓宽了前端开发者的技能边界。本文将从Node.js的基础概念讲起,逐步引导读者理解其事件驱动、非阻塞I/O模型的核心原理,并指导如何在实战中应用这些知识构建高效、可扩展的后端服务。通过深入浅出的方式,我们将一起探索Node.js的魅力和潜力,解锁更多可能。
|
2月前
|
JSON 缓存 JavaScript
深入浅出:使用Node.js构建RESTful API
在这个数字时代,API已成为软件开发的基石之一。本文旨在引导初学者通过Node.js和Express框架快速搭建一个功能完备的RESTful API。我们将从零开始,逐步深入,不仅涉及代码编写,还包括设计原则、最佳实践及调试技巧。无论你是初探后端开发,还是希望扩展你的技术栈,这篇文章都将是你的理想指南。
|
29天前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
44 12
|
2月前
|
JavaScript NoSQL API
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发如同一座灯塔,指引着数据的海洋。本文将带你航行在Node.js的海域,探索如何从一张白纸到完成一个功能完备的RESTful API。我们将一起学习如何搭建开发环境、设计API结构、处理数据请求与响应,以及实现数据库交互。准备好了吗?启航吧!
|
2月前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
2月前
|
JavaScript 中间件 关系型数据库
构建高效的后端服务:Node.js 与 Express 的实践指南
在后端开发领域,Node.js 与 Express 的组合因其轻量级和高效性而广受欢迎。本文将深入探讨如何利用这一组合构建高性能的后端服务。我们将从 Node.js 的事件驱动和非阻塞 I/O 模型出发,解释其如何优化网络请求处理。接着,通过 Express 框架的简洁 API,展示如何快速搭建 RESTful API。文章还将涉及中间件的使用,以及如何结合 MySQL 数据库进行数据操作。最后,我们将讨论性能优化技巧,包括异步编程模式和缓存策略,以确保服务的稳定性和扩展性。
|
2月前
|
JSON JavaScript API
深入浅出Node.js:从零开始构建RESTful API
【10月更文挑战第39天】 在数字化时代的浪潮中,API(应用程序编程接口)已成为连接不同软件应用的桥梁。本文将带领读者从零基础出发,逐步深入Node.js的世界,最终实现一个功能完备的RESTful API。通过实践,我们将探索如何利用Node.js的异步特性和强大的生态系统来构建高效、可扩展的服务。准备好迎接代码和概念的碰撞,一起解锁后端开发的新篇章。
|
2月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
44 4
|
3月前
|
Web App开发 JavaScript 中间件
构建高效后端服务:Node.js与Express框架的完美结合
【10月更文挑战第21天】本文将引导你走进Node.js和Express框架的世界,探索它们如何共同打造一个高效、可扩展的后端服务。通过深入浅出的解释和实际代码示例,我们将一起理解这一组合的魅力所在,并学习如何利用它们来构建现代Web应用。
71 1
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API