1、用node.js创建一个HTTP服务器
var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('<h1>Node.js</h1>'); res.end('<p>Hello World</p>'); }).listen(3000)
listen函数创建了事件监听,使得node.js进程不会退出事件循环。
2、回调函数
var fs = require('fs'); fs.readFile('file.txt', 'utf-8', function(err, data) { if(err) { console.error(err); } else { console.log(data); } }); console.log("end")程序的执行结果是先打印出end,然后输出文件的内容。
fs.readFile 调用时所做的工作只是将异步式I/O请求发送给了操作系统,然后返回并执行后面的语句,执行完成以后进入事件循环监听。当fs接收到I/O请求完成的事件时,事件循环会主动调用回调函数完成后续工作。
3、事件
Node.js的所有异步式I/O操作在完成时都会发送一个事件到事件队列。在开发者看来,事件是有EventEmitter对象提供。前面提到的fs.readFile和http.createServer的回调函数都是通过EventEmitter来实现的。下面我们用一个简单的例子说明EventEmitter的用法。
var EventEmitter = require('events').EventEmitter; var event = new EventEmitter(); event.on('some_event', function() { console.log('some_event occured.'); }); setTimeout(function() { event.emit('some_event'); }, 1000);
1秒中后事件发射器对象event发射了事件some_event,此时会调用some_event的事件监听器。
4、Node.js的事件循环机制
node.js诚寻由事件循环开始,到事件循环结束,所有的逻辑都是事件的回调函数。事件循环会检查事件队列中有没有未处理的事件,直到程序结束。下面说下事件循环的原理。
相关推荐
Node.js 是一个基于JavaScript 的服务器端运行时环境,允许开发者使用JavaScript语言来编写服务器端代码。Node.js 的出现改变了传统的服务器端开发模式,提供了一个高效、灵活的服务器端开发解决方案。 Node.js ...
描述中提到的“Smashing Node.js: JavaScript Everywhere”是一本专注于教授Node.js知识、以及如何使用Node.js开发高效Web应用的书籍。书中不仅会介绍Node.js的基础知识,还会提供实际的示例,帮助开发者掌握如何...
学习node.js 前端 深入浅出 Node.js (一):什么是 Node.js 深入浅出 Node.js (二): Node.js&NPM; 的安装与配置 深入浅出 Node.js (三):深入 Node.js 的模块机制 深入浅出 Node.js (四): Node.js 的事件...
《canvas.ts: Node.js Canvas LMS客户端初探》 Canvas.ts是一个基于Node.js的客户端库,主要用于与Canvas Learning Management System (LMS) 进行交互。Canvas LMS是一款广泛使用的在线学习平台,它允许教师创建...
《Node.js开发实务:初探JavaScript 应用程式设计》是一本专为开发者介绍Node.js技术的书籍。这本书的核心在于帮助读者理解如何利用JavaScript进行服务器端编程,通过一系列的实例来深入浅出地讲解Node.js的基本概念...
**天气预报应用——基于Node.js的初探** 在IT领域,JavaScript不仅局限于浏览器中的脚本语言,它也可以在服务器端运行,这就是Node.js的魅力所在。本文将深入探讨"weather-node.js"项目,这是一个使用Node.js编写的...
《HelloWorld.Node.js:探索Node.js的初探》 在编程世界中,"Hello, World!"是最基础且经典的示例,它通常用于演示一个新语言或框架的基本用法。本篇文章将围绕“HelloWorld.Node.js”这个项目,深入探讨Node.js这...
Got 在内部使用 Keyv 来支持各种存储适配器。 对于更具可扩展性的东西,您可以使用官方 Keyv 存储... 响应对象通常是一个 Node.js HTTP 响应流,但是,如果从缓存返回,它将是一个类似响应的对象,其行为方式相同。
《Node.js初探:从项目实践中学习》 Node.js,作为JavaScript在服务器端的运行环境,自2009年诞生以来,凭借其高效的非阻塞I/O模型、丰富的生态系统和与前端技术的无缝对接,迅速赢得了开发者们的青睐。本项目...
《Node.js原生实现HTTP服务框架初探》 在当今的Web开发领域,Node.js以其高效、异步I/O处理的特性受到了广大开发者们的青睐。本文将深入探讨一个基于原生Node.js实现的简单HTTP服务框架——"node_frame_demo"。这个...
**奇聊——Node.js与Sails框架初探** 在当今的Web开发领域,JavaScript已经不再局限于浏览器端,而是成为了一种全栈式编程语言。Node.js的出现使得JavaScript能够运行在服务器端,处理数据和构建复杂的后端服务。在...
《Infinigon-Free-for-All:使用Node.js构建游戏初探》 Infinigon-Free-for-All 是一个基于 Node.js 的开源项目,旨在为玩家提供一个免费的多人在线战斗环境,让开发者和游戏爱好者能够体验到Infinigon游戏的乐趣。...
说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http、网页分析工具cherrio。 使用http直接获取url路径对应网页资源,然后使用cherrio分析。 这里我主要学习过的案例自己敲了一遍,加深...
Electron允许你维护一个JavaScript代码库,并创建可在Windows、macOS和Linux上运行的跨平台桌面应用程序,使得跨平台桌面开发变得容易。Electron嵌入 Chromium和Node.js,使得WEB开发人员无需本地开发经验也能够容易...
Node.js是一种使用JavaScript语言进行服务器端编程的技术。它基于Google Chrome浏览器中的JavaScript引擎V8进行开发,允许开发者利用JavaScript这门在浏览器端流行的编程语言,来编写服务器端的脚本。Node.js之所以...
总结起来,"corax-node-game:我的测试节点游戏"是一个基于Node.js和JavaScript的游戏开发项目,旨在探索和实践Node.js在游戏开发中的应用。通过这个项目,开发者可以学习如何使用JavaScript构建服务器端游戏逻辑,...
NodePokerAI项目就是一个典型的例子,它采用Node.js这一流行的JavaScript运行环境,构建了一个基于神经网络的扑克AI系统,为未来可能的C++版本打下了基础。本文将深入探讨这个项目中的关键技术和知识点。 首先,...
《基于Egg.js、Vue.js和MySQL的Web应用开发初探》 在现代Web开发领域,框架和技术的组合是构建高效、可维护的应用程序的关键。本篇将详细讲解如何使用Egg.js作为后端框架,Vue.js作为前端框架,以及MySQL作为数据库...
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,其特点是单线程、非阻塞I/O,特别适合处理高并发场景。 3. **前端数据流管理**:在前端开发中,数据流管理至关重要。文档中提到的“浅谈React数据流管理”...
Node.js是由Ryan Dahl在2009年推出的JavaScript运行环境,它让JavaScript能够脱离浏览器,在服务器端运行。Node.js基于Chrome的V8引擎,具备事件驱动、非阻塞I/O的特性,这使得它在处理高并发请求时表现出色。 1. ...