美文网首页
node.js模块

node.js模块

作者: 张鸽 | 来源:发表于2017-06-08 19:28 被阅读0次
    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)
    <i>注:如果文件存在,该方法写入的内容会覆盖旧的文件内容。</i>
    参数
    参数使用说明如下:
    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("数据写入成功!");
    });
    

    以上代码执行结果如下:
    <blockquote>
    $ node file.js
    准备写入文件
    数据写入成功!
    </blockquote>

    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("程序执行完毕。");
    

    接下来让我们执行以上代码:
    <blockquote>
    $ node main.js
    连接成功。
    数据接收成功。
    程序执行完毕。
    </blockquote>

    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("程序执行完毕。");
    

    接下来让我们执行以上代码:
    <blockquote>
    $ node main.js
    2 个监听器监听连接事件。
    监听器 listener1 执行。
    监听器 listener2 执行。
    listener1 不再受监听。
    监听器 listener2 执行。
    1 个监听器监听连接事件。
    程序执行完毕。
    </blockquote>

    相关文章

      网友评论

          本文标题:node.js模块

          本文链接:https://www.haomeiwen.com/subject/bwutqxtx.html