node.js模块

Http模块

Http模块主要用于搭建HTTP服务。
实例:

var http = require('http');
http.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
  • 上面代码第一行var http = require("http"),表示加载http模块
  • 调用http模块的createServer方法,创造一个服务器实例
  • request方法用于发出HTTP请求
  • response.writeHead方法表示,服务器端回应一个HTTP头信息
  • response.end方法表示,服务器端回应的具体内容,以及回应完成后关闭本次对话
  • listen方法用于启动服务器监听指定端口
fs模块

fs是filesystem的缩写,该模块提供本地文件的读写能力
Node 导入文件系统模块(fs)语法如下所示:

var fs = require("fs")

readFile方法用于异步读取数据。

实例
创建 input.txt 文件,内容如下:

菜鸟教程官网地址:www.runoob.com

文件读取实例
创建 file.js 文件, 代码如下:

var fs = require("fs");
// 异步读取
fs.readFile('input.txt', function (err, data) {
   if (err) {
      return console.error(err);
   }
   console.log("异步读取: " + data.toString());
});

writeFile方法用于异步写入文件。

语法
以下为异步模式下写入文件的语法格式:
fs.writeFile(file, data[, options], callback)
注:如果文件存在,该方法写入的内容会覆盖旧的文件内容。
参数
参数使用说明如下:
file - 文件名或文件描述符。
data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。
options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 'w'
callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。
实例
接下来我们创建 file.js 文件,代码如下所示:

var fs = require("fs");

console.log("准备写入文件");
fs.writeFile('input.txt', '我是通过写入的文件内容!',  function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("数据写入成功!");
});

以上代码执行结果如下:


$ node file.js
准备写入文件
数据写入成功!

events 模块

Node 的大部分核心事件API 都是异步事件驱动的。为此需要一个监听异步的操作来了解情况。为此events 模块就诞生了,可以监听I/O的情况

我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();

EventEmitter实例可以使用on 或addListener 监听事件,emit 方法触发事件,removeListener方法移除事件绑定,listenerCount方法求监听器个数
//绑定事件处理程序:

eventEmitter.on('eventName', eventHandler);

eventEmitter.addListener('eventName',eventHandler);

//触发事件:

eventEmitter.emit('eventName');

//移除事件绑定

eventEmitter.removeListener('connection', listener1);

//返回监听事件个数

EventEmitter.listenerCount(eventEmitter,'connection');

实例
创建 main.js 文件,代码如下所示:

// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandler = function connected() { console.log('连接成功。'); 
// 触发 data_received 事件  
eventEmitter.emit('data_received');}
// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler); 
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){ console.log('数据接收成功。');});
// 触发 connection 事件 
eventEmitter.emit('connection');console.log("程序执行完毕。");

接下来让我们执行以上代码:


$ node main.js
连接成功。
数据接收成功。
程序执行完毕。

var events = require('events');
var eventEmitter = new events.EventEmitter();

// 监听器 #1
var listener1 = function listener1() {
   console.log('监听器 listener1 执行。');
}

// 监听器 #2
var listener2 = function listener2() {
  console.log('监听器 listener2 执行。');
}

// 绑定 connection 事件,处理函数为 listener1 
eventEmitter.addListener('connection', listener1);

// 绑定 connection 事件,处理函数为 listener2
eventEmitter.on('connection', listener2);

var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");

// 处理 connection 事件 
eventEmitter.emit('connection');

// 移除监绑定的 listener1 函数
eventEmitter.removeListener('connection', listener1);
console.log("listener1 不再受监听。");

// 触发连接事件
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");

console.log("程序执行完毕。");

接下来让我们执行以上代码:


$ node main.js
2 个监听器监听连接事件。
监听器 listener1 执行。
监听器 listener2 执行。
listener1 不再受监听。
监听器 listener2 执行。
1 个监听器监听连接事件。
程序执行完毕。

你可能感兴趣的:(node.js模块)