events
事件
又称为发布订阅模式
又称为观察者模式
当主题对象发生变化时,会通知所有的观察者对象,更新自己的行动
获取时间模块
var events = require("events");
注册事件
// 方法1
newDad.addListener("lee",test1);
// 方法2
newDad.on("lee",test2)
// 绑定一次的事件
newDad.once("le",test1);
发射事件
// 当用addListener或者on绑定事件的时候,同一个事件可以发射多次
newDad.emit("lee");
newDad.emit("lee");
// 但当用once绑定的事件时,无论发射几次该事件,只会执行一次
newDad.emit("le");
newDad.emit("le");
删除事件
// 删除绑定的事件
newDad.removeListener("lee",test1);
// 删除所有的事件,既然是删除所有事件,里面就不需要加参数
newDad.removeAllListeners();
buffer
buffer:缓存区,暂时存放在内存里的一段数据。JS语言自身只有字符串类型,没有二进制数据类型,在处理文件流时,必须使用到二进制数据,因此在Node.js中,定义一个buffer类,该类用来创建一个专门存放二进制数据缓存区
buffer有一个八位字节一个字节元素组成的数组,单位用16进制表示,取值范围0-255
创建buffer对象
//创建方式1 随机创建1个buffer
var buffer = new Buffer(10);
console.log(buffer);
//更改buffer,参数1 更改的数 参数2:从什么位置更该,参数3,更改到什么位置
buffer.fill(255,2);
console.log(buffer);
buffer.fill(255,2,4);
console.log(buffer);
//创建方式2 通过字符串创建
var buffer = new Buffer("大家好");
console.log(buffer);
//toString() 将buffer格式转化为中文
console.log(buffer.toString());
//通过数组创建buffer
var buffer = new Buffer([0xe5,0xa4,0xa7,0xe5,0xae,0xb6,0xe5,0xa5,0xbd]);
//打印出来的buffer 会自动将0x 去掉
console.log(buffer);
console.log(buffer.toString());
path
normalize:规范化字符串路径
var path = require("path");
// ./ 是同级 ../ 是上一级
//index.php 前面有一个 ../ 会网上跳一级,所以跳过test1直接到test
var urlPath = "././////test/test1/../index.php";
var newPath = path.normalize(urlPath);
console.log(newPath);
join 将多个参数值字符串结合成一个路径字符串
var newPath1 = path.join(__dirname,"test","test1/mycode","index.php");
console.log(newPath1);
resolve:把参数解析为一个绝对路径
1.以应用程序的根目录为起点,根据参数的值解析出一个绝对路径
- .当前目录 ..上级目录
- 普通字符串代表下一级目录
- 如果没有下一个参数,返回当前路径
- /代表盘符的根目录
var urlPath1 = "test/test1/test.php";
var newPath2 = path.resolve(urlPath1);
console.log(newPath2);
http
http:超文本传输协议,是互联网使用最广的一个协议.HTTP模块主要用于搭建HTTP服务器和客户端,使用HTTP服务器或客户端功能必须带哦用HTTP模块
var http = require(“http”);var url = require(“url”);//创建服务器//http继承自tcpvar server = http.createServer(function (req,res) { var urlstr = req.url;//获取请求的路径 var urlMethod = req.method;//获取请求的方法 //console.log(urlMethod);
res.end(“hello”);});
server.listen(8080);
HTTP模拟客户端
//nodejs的服务端
var http = require("http");
var server = http.createServer(function (req,res) {
var str = "";
req.on("data",function (chunk) {
str += chunk;
})
req.on("end",function () {
console.log(str);
})
var obj = {
name:"dr",
age:19
}
res.write(JSON.stringify(obj));
res.end();
})
server.listen(8989);
//通过nodejs模拟客户端 客户端请求服务端
var http = require("http");
var options = {
method:"post",
host:"localhost",
port:8989,
path:"/"
};
/** request :发请求
* http.request() 返回一个 http.ClientRequest类的实例。
* ClientRequest实例是一个可写流对象。
* 如果需要用POST请求上传一个文件的话,
* 就将其写入到ClientRequest对象
**/
var request = http.request(options,function (res) {
var str = "";
res.on("data",function (chunk) {
str += chunk;
})
res.on("end",function () {
console.log(str);
})
})
var obj = {
name:"RR",
age:188
}
request.write(JSON.stringify(obj));
request.end();