`

(一)、node.js 初探

 
阅读更多

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后端技术初探.pdf

    Node.js 是一个基于JavaScript 的服务器端运行时环境,允许开发者使用JavaScript语言来编写服务器端代码。Node.js 的出现改变了传统的服务器端开发模式,提供了一个高效、灵活的服务器端开发解决方案。 Node.js ...

    Smashing Node.js JavaScript Everywhere

    描述中提到的“Smashing Node.js: JavaScript Everywhere”是一本专注于教授Node.js知识、以及如何使用Node.js开发高效Web应用的书籍。书中不仅会介绍Node.js的基础知识,还会提供实际的示例,帮助开发者掌握如何...

    深浅node.js.rar

    学习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 LMS客户端初探》 Canvas.ts是一个基于Node.js的客户端库,主要用于与Canvas Learning Management System (LMS) 进行交互。Canvas LMS是一款广泛使用的在线学习平台,它允许教师创建...

    Examples-Node.js_20140424:Node.js开发实务:初探JavaScript 应用程式设计书本范例

    《Node.js开发实务:初探JavaScript 应用程式设计》是一本专为开发者介绍Node.js技术的书籍。这本书的核心在于帮助读者理解如何利用JavaScript进行服务器端编程,通过一系列的实例来深入浅出地讲解Node.js的基本概念...

    weather-node.js:入门级node.js

    **天气预报应用——基于Node.js的初探** 在IT领域,JavaScript不仅局限于浏览器中的脚本语言,它也可以在服务器端运行,这就是Node.js的魅力所在。本文将深入探讨"weather-node.js"项目,这是一个使用Node.js编写的...

    HelloWorld.Node.js

    《HelloWorld.Node.js:探索Node.js的初探》 在编程世界中,"Hello, World!"是最基础且经典的示例,它通常用于演示一个新语言或框架的基本用法。本篇文章将围绕“HelloWorld.Node.js”这个项目,深入探讨Node.js这...

    Got:Node.js 的人性化和强大的 HTTP 请求库-开源

    Got 在内部使用 Keyv 来支持各种存储适配器。 对于更具可扩展性的东西,您可以使用官方 Keyv 存储... 响应对象通常是一个 Node.js HTTP 响应流,但是,如果从缓存返回,它将是一个类似响应的对象,其行为方式相同。

    Node.js-first-projects

    《Node.js初探:从项目实践中学习》 Node.js,作为JavaScript在服务器端的运行环境,自2009年诞生以来,凭借其高效的非阻塞I/O模型、丰富的生态系统和与前端技术的无缝对接,迅速赢得了开发者们的青睐。本项目...

    node_frame_demo.zip

    《Node.js原生实现HTTP服务框架初探》 在当今的Web开发领域,Node.js以其高效、异步I/O处理的特性受到了广大开发者们的青睐。本文将深入探讨一个基于原生Node.js实现的简单HTTP服务框架——"node_frame_demo"。这个...

    kitchat:第一个 Node.js 应用

    **奇聊——Node.js与Sails框架初探** 在当今的Web开发领域,JavaScript已经不再局限于浏览器端,而是成为了一种全栈式编程语言。Node.js的出现使得JavaScript能够运行在服务器端,处理数据和构建复杂的后端服务。在...

    infinigon-free-for-all:这个 Node.js 模块在免费模式下创建了一个 Infinigon 游戏

    《Infinigon-Free-for-All:使用Node.js构建游戏初探》 Infinigon-Free-for-All 是一个基于 Node.js 的开源项目,旨在为玩家提供一个免费的多人在线战斗环境,让开发者和游戏爱好者能够体验到Infinigon游戏的乐趣。...

    node.js基础模块http、网页分析工具cherrio实现爬虫

     说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http、网页分析工具cherrio。 使用http直接获取url路径对应网页资源,然后使用cherrio分析。 这里我主要学习过的案例自己敲了一遍,加深...

    Electron框架初探 - 前端中心 - Confluence

    Electron允许你维护一个JavaScript代码库,并创建可在Windows、macOS和Linux上运行的跨平台桌面应用程序,使得跨平台桌面开发变得容易。Electron嵌入 Chromium和Node.js,使得WEB开发人员无需本地开发经验也能够容易...

    初探nodeJS

    Node.js是一种使用JavaScript语言进行服务器端编程的技术。它基于Google Chrome浏览器中的JavaScript引擎V8进行开发,允许开发者利用JavaScript这门在浏览器端流行的编程语言,来编写服务器端的脚本。Node.js之所以...

    corax-node-game:我的测试节点游戏

    总结起来,"corax-node-game:我的测试节点游戏"是一个基于Node.js和JavaScript的游戏开发项目,旨在探索和实践Node.js在游戏开发中的应用。通过这个项目,开发者可以学习如何使用JavaScript构建服务器端游戏逻辑,...

    NodePokerAI:基于神经网络的 NodeJS 扑克 AI。 主要是未来 C++ 版本的原型

    NodePokerAI项目就是一个典型的例子,它采用Node.js这一流行的JavaScript运行环境,构建了一个基于神经网络的扑克AI系统,为未来可能的C++版本打下了基础。本文将深入探讨这个项目中的关键技术和知识点。 首先,...

    egg+vue+mysql v1.0.0版demo

    《基于Egg.js、Vue.js和MySQL的Web应用开发初探》 在现代Web开发领域,框架和技术的组合是构建高效、可维护的应用程序的关键。本篇将详细讲解如何使用Egg.js作为后端框架,Vue.js作为前端框架,以及MySQL作为数据库...

    携程技术合集 2019.pdf

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,其特点是单线程、非阻塞I/O,特别适合处理高并发场景。 3. **前端数据流管理**:在前端开发中,数据流管理至关重要。文档中提到的“浅谈React数据流管理”...

    beginning-with-nodejs:使用NodeJS和Express的第一步

    Node.js是由Ryan Dahl在2009年推出的JavaScript运行环境,它让JavaScript能够脱离浏览器,在服务器端运行。Node.js基于Chrome的V8引擎,具备事件驱动、非阻塞I/O的特性,这使得它在处理高并发请求时表现出色。 1. ...

Global site tag (gtag.js) - Google Analytics