我们知道Node.js适合于IO密集型应用,不适合于CPU密集型应用。
JS和Node.js区别:
JS运行于客户端浏览器中,存在兼容性问题;数据类型:值类型+引用类型(ES+DOM/BOM+自定义)
Node.js运行于服务器端(V8引擎),不存在兼容性问题;数据类型:值类型+引用类型(ES+扩展对象+自定义)。
Node.js中每个.js文件都是一个“Module”,每个模块都可以引入其它模块;也可以导出自己的成员供其它模块来使用。
1. node.js原生模块——querystring
querystring模块——用于处理http请求url中的查询字符串
var obj = qs.parse(str) 把查询字符串解析为js对象。---反序列化
var str = qs.stringify(obj) 把js对象转换为查询字符串。--序列化
这是所谓的序列化和反序列化过程。
- 序列化: 将数据结构或对象转换成二进制串的过程
- 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程
2.node.js官方提供的原生模块——url
URL模块用于解析一个http请求地址,获取其中各个不同的部分。
var obj = url.parse(str) 把一个URL字符串解析为一个对象
var obj = url.parse(str,true) 把一个URL字符串解析为一个对象,并且把其中的查询字符串也解析为一个对象。
3.node.js官方提供的原生的模块——buffer
buffer,也称为缓冲区,本质是一块内存区域,用于暂存以后用到的数据(可能是字符串,数据,视频等),该区域被称为缓存区。
---分配一个指定大小的缓冲区:var buf1 =Buffer.alloc(1024);
---使用一个数字数字创建一个缓冲区: var buf2 = Buffer.from([1,3,5]);
---使用一个字符串创建一个缓冲区 :var buf3=Buffer.from('abcd');
---把一个缓冲区中的数据转换为字符串:var str = buf3.toString();
4.node.js官方提供的原生模块——fs
fs模块提供了对文件系统中的文件/目录进行增删改查和读写的功能。
---同步读取文件中的内容:var data = fs.readFileSync(file);
---同步向文件中写出内容(删除已有内容):fs.writeFileSync(file,str/buf);
---同步向文件中追加写出内容(不删除已有的内容):fs.appendFileSync(file,str/buf);
---异步读取文件中的内容:fs.readFile(file,function(err,data){});
---异步向文件中写出内容(删除已有的内容):fs.writeFile(file,str/buf,function(err{})
5.node.js官方提供的原生模块http
HTTP模块可用于编写基于HTTP协议的客户端程序(即浏览器),也可以用于编写基于HTTP协议的客户端程序。
用HTTP模块编写一个web服务器:
---接受客户的的http请求信息;
---解析客户的请求信息;
---读取客户端请求的文件
---向客户端发送http响应消息,主体就是客户端请求的文件。
var server = http.createServer();
server.listen(80);
server.on('request',function(req,res){
//解析请求信息
//向客户端写出响应消息}