一、安裝node.js 方式很多npm,git等,新手建議從官網上直接去下載node的安裝包。一鍵安裝. 二、創建一個web伺服器。 三、讀取文件的方式(同步,非同步) 1.同步 2.非同步 三、事件迴圈 四、數據緩衝區 1.向緩存區寫入數據 2.讀取緩衝區的內容 3.Buffer 轉為JSON對象 4 ...
一、安裝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對象中的方法。