資源描述:
《node.js開發(fā)入門之buffer用法詳解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應用文檔-天天文庫。
1、9web前端視頻教程http://www.maiziedu.com/course/web/Node.js開發(fā)入門之Buffer用法詳解熟悉JavaScript的童鞋應該對Node.js都不陌生,沒錯Node.js是一個基于ChromeJavaScript運行時建立的平臺,用于方便地搭建響應速度快、易于擴展的網(wǎng)絡(luò)應用。Node.js?使用事件驅(qū)動,?非阻塞I/O?模型而得以輕量和高效,非常適合在分布式設(shè)備上運行數(shù)據(jù)密集型的實時應用。正是由于Node.js的這些特性使得其在如今的編程中越來越受歡迎,對于新手程序
2、猿來說很有必要掌握Node.js技術(shù)。本文小編就將為大家介紹Node.js中Buffer類的使用,希望對大家學習Node.js有幫助吧。???????其實,Buffer類在Node.js的使用中,經(jīng)常會用到,特別是在用Node.js做服務端開發(fā)時,http、tcp、udp、文件io等等類型的操作,都離不開Buffer類。Buffer是什么Buffer代表一個緩沖區(qū),存儲二進制數(shù)據(jù),是字節(jié)流,在網(wǎng)絡(luò)傳輸時,就傳輸?shù)倪@種字節(jié)流。編碼格式雖然一般的字符串是有編碼格式的,比如UTF-8。但Buffer是沒有編碼格式
3、的。兩者可以相互轉(zhuǎn)換,轉(zhuǎn)換時必須指定編碼格式。在http模塊中,http.createServer方法需要的回調(diào)函數(shù)的原型是:function(req,res)???9web前端視頻教程http://www.maiziedu.com/course/web/?這個回調(diào)的第一個參數(shù),req,類型是http.IncomingMessage,而http.IncomingMessage是一個只讀的流,實現(xiàn)了Readable接口,stream.Readable讀到的數(shù)據(jù)(監(jiān)聽data事件可以處理),就是Buffer對象
4、,是字節(jié)流。而我們在程序中使用時,經(jīng)常是要轉(zhuǎn)換為String。反過來,res(類型http.ServerResponse,可寫的流,實現(xiàn)了Writable接口)有個方法setDefaultEncoding,用來設(shè)置流的編碼格式,在write數(shù)據(jù)時,會使用指定的編碼格式來編碼數(shù)據(jù),然后發(fā)送給客戶端。這就是說,網(wǎng)絡(luò)傳輸?shù)氖荁uffer,程序需要處理String,Buffer和String之間可以轉(zhuǎn)換。Buffer有toString方法,可以按指定的編碼格式將字節(jié)流轉(zhuǎn)換為String。在文件系統(tǒng)模塊中,fs.cr
5、eateWriteStream和fs.createReadStream兩個方法都有一個可選參數(shù)options,可以指定defaultEncoding,這里指定的編碼格式,也是用于在Buffer和String之間轉(zhuǎn)換的。目前我們在Node.js里,Buffer在轉(zhuǎn)換為字符串時,toString方法的第一個參數(shù)就是編碼類型,支持常見的編碼格式:utf8,多字節(jié)編碼的Unicode字符,大多數(shù)文檔和網(wǎng)頁采用這種編碼格式ascii,8bit編碼,一個字符占1個字節(jié)utf16le,小端編碼的unicode字符utf1
6、6be,大端編碼的unicodeucs2,unicode編碼,每個字符占兩個字節(jié)base64,Base-64字符串編碼hex,每個字節(jié)編碼為兩個十六進制字符假如你不確認某個編碼格式是否正確,可以使用Buffer.isEncoding(encoding)方法來測試。9web前端視頻教程http://www.maiziedu.com/course/web/在使用Buffer的toString方法時,如果你不指定編碼格式,則默認使用utf8來轉(zhuǎn)換。toString原型:buf.toString([encoding
7、][,start][,end])第一個參數(shù)是編碼格式,第二個是開始位置(0到buf.length-1),第三個是結(jié)束位置(不包含這個索引位置的數(shù)據(jù))。創(chuàng)建一個Buffer實例對于Buffer實例的創(chuàng)建,使用new操作符,有四種方法可實現(xiàn):newBuffer(size),創(chuàng)建一個指buffer定大小的buffernewBuffer(array),根據(jù)一個字節(jié)數(shù)組來創(chuàng)建一個buffernewBuffer(str[,encoding]),根據(jù)一個字符串和編碼格式創(chuàng)建buffer,不指定編碼時默認使用utf8new
8、Buffer(buffer),根據(jù)buffer實例創(chuàng)建一個新的buffer比如下面的代碼可以創(chuàng)建Buffer的實例:varbuf1=newBuffer(256);varbuf2=newBuffer("HelloBuffer");varbuf3=newBuffer([0x65,0x66,0x67]);varbuf4=newBuffer(buf2);但有一點需要說明的是,使用new9web前端視頻教程http://w