node入門學習(一)

1、安裝node.jsnode

方式不少npm,git等,新手建議從官網上直接去下載node的安裝包。一鍵安裝.git

2、建立一個web服務器。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')

3、讀取文件的方式(同步,異步)npm

1.同步json

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(
'異步執行')

3、事件循環服務器

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();  觸發綁定事件的函數
 * 
 */

4、數據緩衝區異步

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;緩衝區 長度

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('解壓完畢')

 

 

6、入門學習(一)完畢。

主要知識爲 1.建立web服務器 2.同步,異步,讀取文件的方法。

3.事件綁定機制 4.Buffer緩衝區對象 5.stream對象中的方法。

相關文章
相關標籤/搜索