node.js開(kāi)發(fā)入門(mén)之buffer用法詳解

node.js開(kāi)發(fā)入門(mén)之buffer用法詳解

ID:8972544

大?。?3.84 KB

頁(yè)數(shù):9頁(yè)

時(shí)間:2018-04-13

node.js開(kāi)發(fā)入門(mén)之buffer用法詳解_第1頁(yè)
node.js開(kāi)發(fā)入門(mén)之buffer用法詳解_第2頁(yè)
node.js開(kāi)發(fā)入門(mén)之buffer用法詳解_第3頁(yè)
node.js開(kāi)發(fā)入門(mén)之buffer用法詳解_第4頁(yè)
node.js開(kāi)發(fā)入門(mén)之buffer用法詳解_第5頁(yè)
資源描述:

《node.js開(kāi)發(fā)入門(mén)之buffer用法詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

1、9web前端視頻教程http://www.maiziedu.com/course/web/Node.js開(kāi)發(fā)入門(mén)之Buffer用法詳解熟悉JavaScript的童鞋應(yīng)該對(duì)Node.js都不陌生,沒(méi)錯(cuò)Node.js是一個(gè)基于ChromeJavaScript運(yùn)行時(shí)建立的平臺(tái),用于方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js?使用事件驅(qū)動(dòng),?非阻塞I/O?模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集型的實(shí)時(shí)應(yīng)用。正是由于Node.js的這些特性使得其在如今的編程中越來(lái)越受歡迎,對(duì)于新手程序

2、猿來(lái)說(shuō)很有必要掌握Node.js技術(shù)。本文小編就將為大家介紹Node.js中Buffer類(lèi)的使用,希望對(duì)大家學(xué)習(xí)Node.js有幫助吧。???????其實(shí),Buffer類(lèi)在Node.js的使用中,經(jīng)常會(huì)用到,特別是在用Node.js做服務(wù)端開(kāi)發(fā)時(shí),http、tcp、udp、文件io等等類(lèi)型的操作,都離不開(kāi)Buffer類(lèi)。Buffer是什么Buffer代表一個(gè)緩沖區(qū),存儲(chǔ)二進(jìn)制數(shù)據(jù),是字節(jié)流,在網(wǎng)絡(luò)傳輸時(shí),就傳輸?shù)倪@種字節(jié)流。編碼格式雖然一般的字符串是有編碼格式的,比如UTF-8。但Buffer是沒(méi)有編碼格式

3、的。兩者可以相互轉(zhuǎn)換,轉(zhuǎn)換時(shí)必須指定編碼格式。在http模塊中,http.createServer方法需要的回調(diào)函數(shù)的原型是:function(req,res)???9web前端視頻教程http://www.maiziedu.com/course/web/?這個(gè)回調(diào)的第一個(gè)參數(shù),req,類(lèi)型是http.IncomingMessage,而http.IncomingMessage是一個(gè)只讀的流,實(shí)現(xiàn)了Readable接口,stream.Readable讀到的數(shù)據(jù)(監(jiān)聽(tīng)data事件可以處理),就是Buffer對(duì)象

4、,是字節(jié)流。而我們?cè)诔绦蛑惺褂脮r(shí),經(jīng)常是要轉(zhuǎn)換為String。反過(guò)來(lái),res(類(lèi)型http.ServerResponse,可寫(xiě)的流,實(shí)現(xiàn)了Writable接口)有個(gè)方法setDefaultEncoding,用來(lái)設(shè)置流的編碼格式,在write數(shù)據(jù)時(shí),會(huì)使用指定的編碼格式來(lái)編碼數(shù)據(jù),然后發(fā)送給客戶(hù)端。這就是說(shuō),網(wǎng)絡(luò)傳輸?shù)氖荁uffer,程序需要處理String,Buffer和String之間可以轉(zhuǎn)換。Buffer有toString方法,可以按指定的編碼格式將字節(jié)流轉(zhuǎn)換為String。在文件系統(tǒng)模塊中,fs.cr

5、eateWriteStream和fs.createReadStream兩個(gè)方法都有一個(gè)可選參數(shù)options,可以指定defaultEncoding,這里指定的編碼格式,也是用于在Buffer和String之間轉(zhuǎn)換的。目前我們?cè)贜ode.js里,Buffer在轉(zhuǎn)換為字符串時(shí),toString方法的第一個(gè)參數(shù)就是編碼類(lèi)型,支持常見(jiàn)的編碼格式:utf8,多字節(jié)編碼的Unicode字符,大多數(shù)文檔和網(wǎng)頁(yè)采用這種編碼格式ascii,8bit編碼,一個(gè)字符占1個(gè)字節(jié)utf16le,小端編碼的unicode字符utf1

6、6be,大端編碼的unicodeucs2,unicode編碼,每個(gè)字符占兩個(gè)字節(jié)base64,Base-64字符串編碼hex,每個(gè)字節(jié)編碼為兩個(gè)十六進(jìn)制字符假如你不確認(rèn)某個(gè)編碼格式是否正確,可以使用Buffer.isEncoding(encoding)方法來(lái)測(cè)試。9web前端視頻教程http://www.maiziedu.com/course/web/在使用Buffer的toString方法時(shí),如果你不指定編碼格式,則默認(rèn)使用utf8來(lái)轉(zhuǎn)換。toString原型:buf.toString([encoding

7、][,start][,end])第一個(gè)參數(shù)是編碼格式,第二個(gè)是開(kāi)始位置(0到buf.length-1),第三個(gè)是結(jié)束位置(不包含這個(gè)索引位置的數(shù)據(jù))。創(chuàng)建一個(gè)Buffer實(shí)例對(duì)于Buffer實(shí)例的創(chuàng)建,使用new操作符,有四種方法可實(shí)現(xiàn):newBuffer(size),創(chuàng)建一個(gè)指buffer定大小的buffernewBuffer(array),根據(jù)一個(gè)字節(jié)數(shù)組來(lái)創(chuàng)建一個(gè)buffernewBuffer(str[,encoding]),根據(jù)一個(gè)字符串和編碼格式創(chuàng)建buffer,不指定編碼時(shí)默認(rèn)使用utf8new

8、Buffer(buffer),根據(jù)buffer實(shí)例創(chuàng)建一個(gè)新的buffer比如下面的代碼可以創(chuàng)建Buffer的實(shí)例:varbuf1=newBuffer(256);varbuf2=newBuffer("HelloBuffer");varbuf3=newBuffer([0x65,0x66,0x67]);varbuf4=newBuffer(buf2);但有一點(diǎn)需要說(shuō)明的是,使用new9web前端視頻教程http://w

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。