1.在node中,Buffer类是随着node内核一起发布的核心库。Buffer库为Node.JS 带来了一种存储原始数据的方法,可以让Node处理二进制的数据。几个Buffer模块常用的方法如下:
①new Buffer(size);new Buffer(buffer);new Buffer(str,codetype);
②buf.length ; buf.write(string...);
③buf.toString() ; buf.toJson() ; buf[index];
④buf.equals(otherbuffer) ; buf.compare(otherbuffer) ; buf.copy() ; buf.slice() ;
2.node中的Stream(流)
①Node中有四种流类型:读流、写流、可读可写流和写入并读流。
var fs = require("fs");
var readStream=fs.creatReadStream("fileName");
②所有的Stream对象都是EventEmitter的实例,常用的事件有:
data:当有数据可读时触发;
end:没有更多的数据可读时触发;
error:在接收和写入过程中发生错误时触发;
finish:所有的数据已经被写入底层系统时触发。
③管道提供了一个输出流到输入流的机制:readStream.pipe(writeStream);可以将多个流组合成一个链式流。
3.模块是node应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个node文件就是一个模块,这个文件可能是JS代码、JSON或者编译过的C/C++扩展。
4.node提供了exports和require两个对象。其中exports是模块公开的接口,require用于从外部获取一个模块的接口,即获取模块的exports对象。
5.创建模块
①exports.apiFunc =function(){};
②function apiFunc(){};module.exports=apiFunc;(个人理解:exports对象被赋值为apiFunc对象);
注意:②相对于①的唯一变化是使用module.exports=apiFunc代替了①的写法。②在外部引用该模块时,其接口对象就是要输出的apiFunc对象本身,而不是原先的exports对象了。
6.Node.JS模块加载
①node模块分为核心模块和文件模块。核心模块:node标准API中提供的模块,可通过require直接获取;文件模块:JavaScript代码、JSON或者C/C++代码(编译好的)。
②加载顺序:
优先加载核心模块;
然后是以路径形式加载的文件模块;
最后既不是核心模块也不是以路径形式表示的模块,则现在当前目录下的node_modules目录中查找该模块是否存在。若不存在,则继续在其父目录的node_modules目录中查找,直到根目录为止。
6.node路由
①我们要为路由提供请求的URL和其他需要的GET和POST参数,随后路由需要根据这些数据来执行相应的代码。
②需要的以上所有数据都会被包含在request对象中,该对象会作为相应的回调函数的第一个参数传递。为了解析这些数据,需要额外的node模块,分别是URL和queryString模块。