美文网首页
Nodejs 入门(二)

Nodejs 入门(二)

作者: babybus_superdo | 来源:发表于2016-05-07 19:34 被阅读81次

    1、如何创建一个server

    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 worl2d\n');
    }).listen(8888);
    
    // 终端打印信息
    console.log('Server running at http://127.0.0.1:8888/');
    

    2.读取文件的两种方式

    //1.同步
    var fs = require("fs")
    
    var data = fs.readFileSync('input.txt');
    
    console.log(data.toString());
    console.log("程序执行结束")
    
    //2.异步
    var fs = require("fs");
    
    fs.readFile('input.txt', function(err, data){
        if(err) return console.error(err);
        console.log(data.toString());
    });
    
    console.log("程序执行结束")
    

    3.EventEmitter时间分发的使用

    //引入 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('程序执行完毕。');
    
    //另一种绑定监听的方式 和 监听的解除
    
    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)
    eventEmitter.on('connection', listener2)
    
    var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
    console.log(eventListeners + " 个监听器监听连接事件。");
    
    // 处理 connection 事件
    eventEmitter.emit('connection');
    
    // 移除监听绑定的listenrt1函数
    eventEmitter.removeListener('connection', listener1);
    console.log('listener1 不再受监听。');
    
    // 触发连接事件
    eventEmitter.emit('connection');
    
    eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
    console.log(eventListeners + " 个监听器监听连接事件。");
    
    console.log("程序执行完毕。");
    
    

    4.Buffer的使用

    // 创建buff方式1:指定长度
    var buf = new Buffer(10);
    
    // 创建buff方式2: 给定数组
    var buf = new Buffer([10, 20, 30 ,40 ,50]);
    
    // 创建buff方式3: 字符串
    // 支持的编码格式: ascii utf8 utf16le ucs2 base64 hex
    var buf = new Buffer("www.runoob.com", "utf-8");
    
    // 写入缓冲区操作
    buf = new Buffer(256);
    len = buf.write("www.runoob.com");
    console.log("写入字节数:" + len);
    
    // 读取缓冲区数据
    buff = new Buffer(26);
    for (var i = 0; i >26; i++) {
        buff[i] = i + 97;
    }
    
    // 输出:abcdefghijklmnopqrstuvwxyz
    console.log(buf.toString("ascii"));
    // 输出abcde
    console.log(buf.toString("ascii", 0, 5));
    // 输出abcde
    console.log(buf.toString("utf8", 0, 5));
    // 默认使用uft8输出
    console.log(buf.toString(undefined, 0, 5));
    
    // Buffer转成json
    var buf = new Buffer("www.runoob.com");
    var json = buf.toJSON(buf);
    console.log(json);
    
    // 缓冲区合并
    var buffer1 = new Buffer('菜鸟教程');
    var buffer2 = new Buffer('www.runoob.com');
    car buffer3 = Buffer.concat([buffer1,buffer2]);
    console.log('buffer3 内容:' + buffer3.toString());
    
    // 缓冲区比较
    var buffer1 = new Buffer('ABC');
    var buffer2 = new Buffer('ABCD');
    var result  = buffer1.compare(buffer2);
    
    if(result < 0 ){
        console.log(buffer1 + "在 " + buffer2 + "之前");
    }else if(result == 0){
        console.log(buffer2 + "与 " + buffer2 + "相同");
    }else{
        console.log(buffer1 + "在 " + buffer2 + "之后");
    }
    
    // 缓冲区拷贝
    var buffer1 = new Buffer('ABC');
    // 拷贝一个缓冲区
    var buffer2 = new Buffer(3);
    buffer1.copy(buffer2);
    console.log("buffer2 content:" + buffer2.toString());
    
    // 缓冲区裁剪
    var buffer1 = new Buffer('runoob');
    //剪切缓冲区
    var buffer2 = buffer1.slice(0, 2);
    console.log("buffer2 content:" + buffer2.toString());
    
    // 缓冲区的长度
    var buffer = new Buffer('www.runoob.com');
    // 缓冲区的长度
    console.log("buffer length:" + buffer.length);
    

    5.Stream的使用

    • 1.Stream的读取
    // 1.Stream 会一个抽象接口,Node中有很多对象实现了这个接口。例如,对http服务器发起请求的request对象就是一个Stream,还有stdout(标准输出)
    // 2.Stream 有四种流类型
    //   1.Readable - 可读操作。
    //   2.Writable - 可写操作
    //   3.Duplex   - 可读可写操作
    //   4.Transform- 操作被写入数据,然后读出结果
    // 所有的Stream对象都是EventEmitter的实例。常用的事件有
    // data - 当有数据可读时触发
    // end  - 没有更多的数据可读时触发。
    // error- 在接收和写入过程中发生错误时触发
    // finish-所有数据已被写入到底层系统时触发
    
    var fs = require('fs');
    var data = '';
    
    // 创建可读流
    var readerStream = fs.createReadStream('input.txt');
    
    // 设置编码为 utf8.
    readerStream.setEncoding('UTF8');
    
    //处理流时间 --> data , end, and error
    
    readerStream.on('data', function(chunk){
        data += chunk;
    });
    
    readerStream.on('end', function(){
        console.log(data);
    });
    
    readerStream.on('error', function(err){
        console.log(error.stack);
    });
    
    console.log("程序执行完毕。");
    
    • 2.Stream的写入
    // 写入流
    
    var fs = require("fs");
    var data = '菜鸟教程官网地址:www.runoob.com';
    
    // 创建一个可以写入的流, 写入到文件 output.txt 中
    var writerStream = fs.createWriteStream('output.txt');
    
    // 使用utf8 编码写入数据
    writerStream.write(data, 'UTF8');
    
    // 标记文件末尾
    writerStream.end();
    
    // 处理流事件 --> data, end, and error
    writerStream.on('finish', function(){
        console.log("写入完成。");
    });
    
    writerStream.on('error', function(err){
        console.log(err.stack);
    });
    
    console.log('程序执行完毕');
    
    • 3.Stream内容拷贝
    // 管道流
    var fs = require('fs');
    
    // 创建一个可读流
    var readerStream = fs.createReadStream('input.txt');
    
    // 创建一个可写流
    var writerStream = fs.createWriteStream('output.txt');
    
    // 管道读写操作
    // 读取 input.txt 文本内容,并将内容写入到output.txt中
    readerStream.pipe(writerStream);
    
    console.log('程序执行完毕');
    
    • 4.Stream的链式
    var fs = require('fs');
    
    var zlib = require('zlib');
    
    // 解压 input.txt.gz 文件为 input.txt
    fs.createReadStream('input.txt.gz').pipe(zlib.createGunzip()).pipe(fs.createWriteStream('input.txt'));
    
    console.log('文件解压完成。');
    

    6.方法传递

    function execute(someFuction, value){
        someFuction(value);
    }
    
    execute(function(word){console.log(word)}, "yangqingshan");
    

    _本站文章为 宝宝巴士 SD.Team 原创, 转载务必在明显处注明:(作者官方网站: 宝宝巴士 ) _
    _转载自【宝宝巴士SuperDo团队】原文链接: http://www.jianshu.com/p/08110a342281

    相关文章

      网友评论

          本文标题:Nodejs 入门(二)

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