Node常用的自带模块,Node中的异步操作以及使用Node创建web服务器处理请求和响应

记录下Node中常用模块的api:
1.自定义模块:导出方法时exports理论上和module.exports是一样的,但是如果不同,以module.exports为准
2.读写文件模块:fs
    1.读取文件:readFile(文件路径(相对/绝对)),编码,回调函数)
    2.写入文件:writeFile(文件路径(相对/绝对)),编码,回调函数)
3.路径模块:path
    1.当前文件的绝对路径:__dirname(全局变量,不依赖path模块)
    2.名称拼接为路径:path.join(name1,name2,name3...)  为什么要使用此方法,是因为不同操作系统连接符不同,所以不要自行手动拼接
4.url模块:url
    1.根据请求的url字符串获取到参数:url.parse(urlStr,isModel) 如果isModel为true,则会处理为对象返回,如果是false,则是字符串
5.querystring模块:querystring
    1.将参数字符串转为参数对象k/v形式:querystring.parse(queryStr) 可以将url.parse(urlStr,false)的结果使用此方法再次转换为对象
6.mime模块:mime
    1.根据请求的url获取到请求的文件类型:mime.parse 可以根据这个动态获取到请求类型,然后响应时写入到响应头中response.writeHead的content-type中

 

fs模块:

const fs = require('fs');

fs.readFile('./../1.moduleStudy/module-a.js', 'UTF-8', (error, doc) => {
    console.log(error);
    console.log(doc);
});

fs.writeFile('./testWriteFileByNode.txt', '这句话是通过node写入的', error => {
    console.log('文件写入完毕!');
    console.log(error);

});

 

path模块:

const path = require('path');

console.log(__dirname);

var filePath = path.join('firstFolder', 'secondFolder', 'thirdFolder', 'file.txt');
console.log(filePath);

 

url,querystring,mime模块以及使用node创建web服务器:

const http = require('http');
const url = require('url');
const queryString = require('querystring');

var app = http.createServer();

app.on('request', (request, response) => {
    var resultMessage = '欢迎来到Lingbug的Node服务器!';
    var { method, url: urlStr } = request;
    var parameter = null;
    if (method == 'GET') {
        parameter = url.parse(urlStr, true);
        console.log(parameter);
    } else if (method == 'POST') {
        var paraString = '';
        request.on('data', paraStr => {
            paraString += paraStr;
        });
        request.on('end', () => {
            parameter = queryString.parse(paraString);
            console.log(parameter);
        });
    } else {
        resultMessage = '请求方式无法识别:' + method;
    }

    response.writeHead(200, {
        'content-Type': 'text/html;charset=UTF-8'
    });
    response.end(resultMessage);
});

app.listen(83);

console.log('服务器启动成功!');

 

异步操作:async await,promise:

const util = require('util');

var promisifyFunc = util.promisify;
console.log(promisifyFunc);

var testAsyncService = {
    sumAsync1: function(x, y) {
        return new Promise((resolve, reject) => {
            testAsyncService.sum(x, y, r => resolve(r));
        });
    },
    sumAsync2: async function(x, y) {
        // async返回的是promise对象
        return x + y;
    },
    sum: function(x, y, callback) {
        setTimeout(function() {
            callback(x + y);
        }, 5000);
    },
    run: async function() {
        // 第一种方式:使用promise
        // testAsyncService.sumAsync1(5, 6).then(r => {
        //     console.log("第一种方式" + r);
        // });
        // // 第二种方式:使用async关键字
        // testAsyncService.sumAsync2(4, 5).then(r => {
        //     console.log("第二种方式" + r);
        // });
        // 第三种方式:使用promisify将回调函数的方法改为promise的异步方法
        var newFunc = promisifyFunc(testAsyncService.sum);
        console.log(newFunc);

        var sum1 = await newFunc(1, 2);
        console.log('sum1 = ' + sum3);
        var sum2 = await newFunc(sum1, 3);
        console.log('sum2 = ' + sum3);
        var sum3 = await newFunc(sum2, 4);
        console.log('sum3 = ' + sum3);

    }
};

testAsyncService.run();

 

Ending~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值