zoukankan      html  css  js  c++  java
  • 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对象中的方法。

  • 相关阅读:
    leetcode 131. Palindrome Partitioning
    leetcode 526. Beautiful Arrangement
    poj 1852 Ants
    leetcode 1219. Path with Maximum Gold
    leetcode 66. Plus One
    leetcode 43. Multiply Strings
    pytorch中torch.narrow()函数
    pytorch中的torch.repeat()函数与numpy.tile()
    leetcode 1051. Height Checker
    leetcode 561. Array Partition I
  • 原文地址:https://www.cnblogs.com/createGod/p/6854590.html
Copyright © 2011-2022 走看看