nodejs重要的内置模块
1.http模块
// Node的模块分两种:核心模块 也叫内置模块、 第三方模块
// 核心模块:每一个模块提供了不同的功能 比如http模块用于搭建服务器 比如fs模块 用于操作文件和文件夹 比如 url模块用于操作url字符串 比如querystring模块 用于解析query字符串
// 引入http模块
var http = require("http");
// http.createServer() 方法用于搭建服务器
var server = http.createServer(function(req, res) {
// Node利用这个函数进行前端请求的处理
// req: request 请求
// res: response 响应
// console.log(req.url);
// console.log(req.method);
// console.log(req.connection.remoteAddress);
// res.setHeader("content-type", "text/plain;charset=utf-8");
// res.end("别瞎吵吵,认真听课");
// // 判定url
if (req.url === "/a") {
res.setHeader("content-type", "text/plain;charset=utf-8");
res.end("别瞎吵吵,认真听课");
} else if (req.url === "/b") {
res.setHeader("content-type", "text/plain;charset=utf-8");
res.end("网盘领取资料");
}
});
// server就是服务器的实例
server.listen(3000);
2.fs模块
var fs = require("fs");
// 读取index.html的内容
// fs.readFile("WWW/index.html", function(err, data) {
// // 回调函数
// // err 表示读取过程中可能发生的错误 比如文件不存在
// // data 表示读取成功的时候 读取到的数据
// console.log(data.toString())
// });
// 读取second.html的内容
// fs.readFile("WWW1/second.html", function(err, data) {
// console.log(err)
// if (!err) {
// console.log(data.toString())
// }
// })
// 追加文件 向文件内追加内容 如果文件不存在 那么先创建文件 不会创建对应的不存在的文件夹
// 第一个参数是目标文件
// 第二个参数是追加的内容
// 第三个参数是回调函数
// fs.appendFile("WWW1/hello.txt", "小宝贝", function(err) {
// console.log(err)
// })
// 删除文件
// fs.unlink("WWW/hello.txt", function(err) {
// console.log(err)
// })
// 文件夹操作
// 创建
// fs.mkdir("Beautiful", function(err) {
// console.log(err)
// })
// 删除 只能删除空文件夹
// fs.rmdir("Beautiful", function(err) {
// console.log(err);
// })
3.url模块
var url = require("url");
var urlStr = "https://www.baidu.com:443/index.html?a=1#sadfsadf";
// JSON.parse 字符串 => 对象|数组
// JSON.stringify 对象|数组 => 字符串
// url.parse 字符串 => 对象
var obj = url.parse(urlStr);
console.log(obj);
// 将host属性修改
obj.host = 'www.qianfeng.com:443';
// url.format 对象 => 字符串
var urlStr1 = url.format(obj);
console.log(urlStr1); // 我们发现域名被修改了
4.qs模块
// 引入http模块
var http = require("http");
var fs = require("fs");
var url = require("url");
var qs = require("querystring");
var MimeType = {
"css": "text/css",
"html": "text/html",
"jpg": "image/jpeg",
"png": "image/png",
"js": "application/x-javascript"
}
// 用arr充当临时数据库
var arr = [{
username: "wanglaowu",
password: 12345678
},
{
username: "wanglaoliu",
password: 12345678
}
];
var server = http.createServer(function(req, res) {
// 处理 url
var urlObj = url.parse(req.url);
var pathname = urlObj.pathname;
// 接口
// 判定前端请求是接口还是静态资源
// if (pathname === "/checkusername" && req.method.toLowerCase() === "get") {
// // 说明这个请求是检测用户名
// // 获取前端提交的数据
// var username = qs.parse(urlObj.query).username;
// // 去数组中查找这个用户名是否已经存在
// // var isExist = arr.some(function(value) {return value.username === username})
// var isExist = arr.some(value => value.username === username);
// if (isExist) {
// // 不能用
// res.end(JSON.stringify({ error: 1, data: '该用户名已经被占用' })); // end方法用于给前端返回数据并断开连接 该方法只接受字符串和buffer
// } else {
// // 能用
// res.end(JSON.stringify({ error: 0, data: "可以使用" }));
// }
// // 为了防止一个请求被多次处理
// return;
// }
if (pathname === "/checkusername" && req.method.toLocaleLowerCase() === 'get') {
// console.log(1);
//取得请求参数
var username = qs.parse(urlObj.query).username;
// console.log(qs.parse(urlObj.query));
//比较
var isExist = arr.some(function(value) { return value.username === username });
if (isExist) {
res.end(JSON.stringify({ error: 1, data: '该用户名已经被占用' }));
} else {
res.end(JSON.stringify({ error: 0, data: '可以使用' }))
}
return;
}
// 处理post请求
if (pathname === "/regist" && req.method.toLowerCase() === "post") {
// 获取前端提交过来的数据
// 因为post请求携带的数据的量 可大 可小
// 所以 node为了处理post这种请求方式 所以设置了两个事件 data end
// data事件表示数据每发送一部分都会触发
// end事件 表示数据全部接收完毕
var data = "";
req.on("data", function(data_chunk) {
// console.log(1)
data += data_chunk;
})
req.on("end", function() {
console.log(data)
var obj = qs.parse(data);
arr.push(obj)
res.end(JSON.stringify({ error: 0, data: "注册成功" }))
})
// 为了防止一个请求被多次处理
return;
}
fs.readFile("WWW" + pathname, function(err, data) {
if (err) {
res.setHeader('content-type', "text/plain;charset=utf-8");
res.end("404, 抱歉,文件不存在")
return;
};
// 获取.的位置
var dotIdx = req.url.lastIndexOf(".");
var extName = req.url.slice(dotIdx + 1);
res.setHeader('content-type', MimeType[extName] + ";charset=utf-8");
res.end(data);
})
});
// server就是服务器的实例
server.listen(3000);