欢迎来到天天文库
浏览记录
ID:8972544
大小:23.84 KB
页数:9页
时间:2018-04-13
《node.js开发入门之buffer用法详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、9web前端视频教程http://www.maiziedu.com/course/web/Node.js开发入门之Buffer用法详解熟悉JavaScript的童鞋应该对Node.js都不陌生,没错Node.js是一个基于ChromeJavaScript运行时建立的平台,用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。正是由于Node.js的这些特性使得其在如今的编程中越来越受欢迎,对于新手程序
2、猿来说很有必要掌握Node.js技术。本文小编就将为大家介绍Node.js中Buffer类的使用,希望对大家学习Node.js有帮助吧。 其实,Buffer类在Node.js的使用中,经常会用到,特别是在用Node.js做服务端开发时,http、tcp、udp、文件io等等类型的操作,都离不开Buffer类。Buffer是什么Buffer代表一个缓冲区,存储二进制数据,是字节流,在网络传输时,就传输的这种字节流。编码格式虽然一般的字符串是有编码格式的,比如UTF-8。但Buffer是没有编码格式
3、的。两者可以相互转换,转换时必须指定编码格式。在http模块中,http.createServer方法需要的回调函数的原型是:function(req,res) 9web前端视频教程http://www.maiziedu.com/course/web/ 这个回调的第一个参数,req,类型是http.IncomingMessage,而http.IncomingMessage是一个只读的流,实现了Readable接口,stream.Readable读到的数据(监听data事件可以处理),就是Buffer对象
4、,是字节流。而我们在程序中使用时,经常是要转换为String。反过来,res(类型http.ServerResponse,可写的流,实现了Writable接口)有个方法setDefaultEncoding,用来设置流的编码格式,在write数据时,会使用指定的编码格式来编码数据,然后发送给客户端。这就是说,网络传输的是Buffer,程序需要处理String,Buffer和String之间可以转换。Buffer有toString方法,可以按指定的编码格式将字节流转换为String。在文件系统模块中,fs.cr
5、eateWriteStream和fs.createReadStream两个方法都有一个可选参数options,可以指定defaultEncoding,这里指定的编码格式,也是用于在Buffer和String之间转换的。目前我们在Node.js里,Buffer在转换为字符串时,toString方法的第一个参数就是编码类型,支持常见的编码格式:utf8,多字节编码的Unicode字符,大多数文档和网页采用这种编码格式ascii,8bit编码,一个字符占1个字节utf16le,小端编码的unicode字符utf1
6、6be,大端编码的unicodeucs2,unicode编码,每个字符占两个字节base64,Base-64字符串编码hex,每个字节编码为两个十六进制字符假如你不确认某个编码格式是否正确,可以使用Buffer.isEncoding(encoding)方法来测试。9web前端视频教程http://www.maiziedu.com/course/web/在使用Buffer的toString方法时,如果你不指定编码格式,则默认使用utf8来转换。toString原型:buf.toString([encoding
7、][,start][,end])第一个参数是编码格式,第二个是开始位置(0到buf.length-1),第三个是结束位置(不包含这个索引位置的数据)。创建一个Buffer实例对于Buffer实例的创建,使用new操作符,有四种方法可实现:newBuffer(size),创建一个指buffer定大小的buffernewBuffer(array),根据一个字节数组来创建一个buffernewBuffer(str[,encoding]),根据一个字符串和编码格式创建buffer,不指定编码时默认使用utf8new
8、Buffer(buffer),根据buffer实例创建一个新的buffer比如下面的代码可以创建Buffer的实例:varbuf1=newBuffer(256);varbuf2=newBuffer("HelloBuffer");varbuf3=newBuffer([0x65,0x66,0x67]);varbuf4=newBuffer(buf2);但有一点需要说明的是,使用new9web前端视频教程http://w
此文档下载收益归作者所有