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 前端 深入浅出 Node.js (一):什么是 Node.js 深入浅出 Node.js (二): Node.js&NPM; 的安装与配置 深入浅出 Node.js (三):深入 Node.js 的模块机制 深入浅出 Node.js (四): Node.js 的事件...
Node.js后端技术初探.pdf
Got 在内部使用 Keyv 来支持各种存储适配器。 对于更具可扩展性的东西,您可以使用官方 Keyv 存储... 响应对象通常是一个 Node.js HTTP 响应流,但是,如果从缓存返回,它将是一个类似响应的对象,其行为方式相同。
Examples-Node.js-主分支 由Mandice贡献者撰写的书籍示例。 执照 根据MIT许可获得许可 作者 版权所有(c)2013 Mandice贡献者< >
说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http、网页分析工具cherrio。 使用http直接获取url路径对应网页资源,然后使用cherrio分析。 这里我主要学习过的案例自己敲了一遍,加深...
electorn 学习初探,通过hello world开始,一个简单的应用
第一阶段:python基础准备本阶段主要是学习python开发入门知识,html+css、javascript、jquery、python编程基础、python初探等,让你轻松入门python语言。 第二阶段:Pythonweb开发本阶段是主要Python开发基础知识的...
用来记录学习过程以及分享技术所得的个人 blog ...《养只爬虫当宠物(Node.js 爬虫爬取 58 同城租房信息)》 《微信小程序 Demo》 《CSS 居中的几种方式》 《CSS 常见布局》 《Node.js 实现用户登陆 session》
webpack 模块联邦学习源码 - 微前端解决方案初探 03 模块联邦(概述、案例介绍、应用初始化)
一、node概要 对nodeJS早有耳闻,但是一直迟迟没有对它下手,哈哈哈,今儿咱就来初探一下它。 nodeJS是个啥东东? nodeJS,我的理解就是可以运行在后端的JavaScript。 为什么它能够在后端运行呢? 这就得归功于V8...
puppeteer 是一个Chrome官方出品的headless Chrome node库。它提供了一系列的API, 可以在无UI的情况下调用Chrome的功能, 适用于爬虫、自动化处理等各种场景 根据官网上描述,puppeteer 具有以下作用: 生成页面截图...
所谓静态资源就是指 图片,js文件,css文件等常见的文件 在浏览器中显示的内容有 HTML、有 js、有 jpg等等,这些都叫静态资源 ……那么,浏览器是如何区分它们,决定什么内容用什么形式来显示呢?答案是 MIME ...