nodejs重要的内置模块

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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值