• node入门学习(一)


    一、安装node.js

    方式很多npm,git等,新手建议从官网上直接去下载node的安装包。一键安装.

    二、创建一个web服务器。

    const http = require('http');
    http.createServer(function(request,response){
        response.writeHead(200,{'Content-Type':'text/plain'});
        response.end('Hello World');
    }).listen(8888);
    console.log('server start http://127.0.0.1:8888')

    三、读取文件的方式(同步,异步)

    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(error,data){
        if(error){
        console.log(error);
      }; console.log(data.toString()); }); console.log(
    '异步执行')

    三、事件循环

    var events = require('events');
    
    var eventEmitter = new  events.EventEmitter();//创建一个事件对象
    
    function handEvent(){
    
        eventEmitter.emit('data_connection'); //调用 data_connection事件
    };
    function data_connection(){
        console.log('数据已经连接');
    };
    eventEmitter.on('connection',handEvent);
    eventEmitter.on('data_connection',data_connection);
    
    
    eventEmitter.emit('connection');   //调用,on绑定的connection事件
    
    console.log('程序执行完毕');
    /*
     * 事件 执行的过程.
     * 1. require('events')  events 模块
     * 2.new events.EventEmitter(); 创建以事件模块
     * 3. eventEmitter.on();  绑定事件
     * 4.eventEmitter.emit();  触发绑定事件的函数
     * 
     */

    四、数据缓冲区

    1.向缓存区写入数据

    var buf = new Buffer(26);  // buf 的字节数
    
    var l  = buf.write('start nodejs'); // 向node Buffer缓冲区写入数据.并返回长度
    console.log('字节长度为:' + l);   //12

    2.读取缓冲区的内容

    var buf = new Buffer(26);  // buf 的字节数
    
    for(var i = 0; i < 26; i++){
        buf[i] = i + 97;
    };
    
    var str = buf.toString('utf8',0,8);  //buf.toString(encoding,start,end);
    //编码格式,  开始位置, 结束位置
    console.log(str);

    3.Buffer 转为JSON对象

    var buf = new Buffer('hello world');
    var json = buf.toJSON(buf);
    
    console.log(json); 
    //{ type: 'Buffer',data: [ 104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100 ] }

    4.concat();合并几个Buffer对象

    var buf1 = new Buffer('hello');
    var buf2 = new Buffer(' ');
    var buf3 = new Buffer('world');
    var count = Buffer.concat([buf1,buf2,buf3]); 
    //Buffer.concat([]);  concat(); 中的参数必须是对象
    console.log(count.toString());// hello world

    5.缓冲区的比较buf1.compare();

    var buf1 = new Buffer('A');
    var buf2 = new Buffer('B');
    var result = buf1.compare(buf2);
    console.log(result); //-1;
    
    /*
        1. result < 0;  说明 buf1 在 buf2之前
        2. result == 0;   说明 buf1 和buf2相等
        3.result > 0 ; 说明 buf2在 buf2之前
    
     */

    6.拷贝缓冲区 buf.copy();

    var buf1 = new Buffer('hello');
    var buf2 = new Buffer('worl');
    buf1.copy(buf2);
    console.log(buf2.toString());//hello
    
    //buf1.copy(target,start,end);
    //target 拷贝的对象,start 起始位置, end 结束位置

    7.缓冲区的剪切 buf.slice();

    var buf1 = new Buffer('hello');
    var end = buf1.slice(0,2); //he
    console.log(end.toString()); //he
    
    //buf1.slice(start,end); start.开始的位置,结束的位置

    8.缓冲区的长度 buf.length

    var buf1 = new Buffer('hello');
    var l = buf1.length;
    console.log(l); //5;缓冲区 长度

    五、stream

    1.从流中读取数据 createReadStream();

    var fs = require('fs');
    var txt = '';   //用于储存 stream.txt中的内容
    
    //1.创建可读的流
    var readStream = fs.createReadStream('stream.txt');
    
    //2.设置编码格式
    readStream.setEncoding('UTF8');
    
    //3.事件流的处理 data,end,error
    
    //a.  data 事件
    readStream.on('data',function(chunk){
        txt += chunk;
    });
    
    // b  end 事件
    readStream.on('end',function(){
        console.log(txt);
    });
    
    //c错误情况
    
    readStream.on('error',function(error){
        console.log(error.stack)
    });
    
    console.log('执行完毕')

    2.写入流 createWriteStream();

    var fs = require('fs');
    var data = '这是一个写入的stream流';
    
    var writeStream = fs.createWriteStream('output.txt');
    
    //写入数据  并设置格式
    
    writeStream.write(data,'UTF8');
    writeStream.end();
    
    //事件处理流 data end error
    
    writeStream.on('finish',function(data){
        console.log('写入完成')
    });
    
    console.log('程序执行完毕');

    3.管道流 pipe 从一个文件读取东西,放到另外一个文件中

    var fs = require('fs');
    var readStream = fs.createReadStream('output.txt');
    var writeStream = fs.createWriteStream('null.txt');
    
    //把output.txt 中的内容 写 到null.txt中
    readStream.pipe(writeStream);
    
    console.log('写入完毕');

    4.链式流 通过pipe来压缩,解压文件

    a.压缩文件

    var fs = require("fs");
    var zlib = require('zlib');
    
    // 压缩 input.txt 文件为 input.txt.gz
    fs.createReadStream('input.txt')
      .pipe(zlib.createGzip())
      .pipe(fs.createWriteStream('input.txt.gz'));
      
    console.log("文件压缩完成。");

    b.解压文件

    var fs = require('fs');
    var zlib = require('zlib');
    fs.createReadStream('input.txt.gz')
      .pipe(zlib.createGunzip())
      .pipe(fs.createWriteStream('newInput.txt'));
    
    console.log('解压完毕')

    六、入门学习(一)完毕。

    主要知识为 1.创建web服务器 2.同步,异步,读取文件的方法。

    3.事件绑定机制 4.Buffer缓冲区对象 5.stream对象中的方法。

  • 相关阅读:
    2017-2018-2 20155234『网络对抗技术』Exp5:MSF基础应用
    20155234 exp4 恶意代码分析
    20155234 Exp3 免杀原理与实践
    20155234 Exp2 后门原理与实践
    20155234 昝昕明 《网络对抗技术》实验一 PC平台逆向破解
    20165232 第二周学习总结
    # 2017-2018-2 20155231《网络对抗技术》实验九: Web安全基础实践
    2017-2018-2 20155231《网络对抗技术》实验八: WEB基础实验
    2017-2018-2 20155231《网络对抗技术》实验五: MSF基础应用
    2017-2018-2 20155231《网络对抗技术》实验七: 网络欺诈防范
  • 原文地址:https://www.cnblogs.com/createGod/p/6854590.html
Copyright © 2020-2023  润新知