NodeJS4-3静态资源服务器实战_优化成近似同步写法

实例3 上面有点回调,优化成近似同步的写法

route.js

const fs =require('fs')
const promisify = require('util').promisify;
const stat = promisify(fs.stat)
const readdir = promisify(fs.readdir);
module.exports=async function(req,res,filePath){
    
    try{
        const stats =await stat(filePath)
        if(stats.isFile()){
            res.statusCode = 200
            res.setHeader('content-Type','text/plain')
            fs.createReadStream(filePath).pipe(res);
            // fs.readFile(filePath,(err,data)=>{
            //     res.end(data)
            // });
        }else if(stats.isDirectory()){
            //所有异步调用必须用await
            const files =await readdir(filePath);
            res.statusCode = 200
            res.setHeader('content-Type','text/plain')
            res.end(files.join(','));
        }
    }catch(ex){
        console.error(ex);
        res.statusCode = 404
        res.setHeader('content-Type','text/plain')
        res.end(`${filePath} is not a directory or file\n ${ex.error}`)
    }
}

app.js

const http = require('http');
const chalk = require('chalk')
const  path = require('path')
const conf = require('./config/defaultConfig.js');
const route = require('./config/helper/route')
const server = http.createServer((req,res)=>{
    const url = req.url;
    //拿到文件路径
    const filePath = path.join(conf.root,req.url)
    route(req,res,filePath)
});

server.listen(conf.port,conf.hostname,()=>{
    const addr = `http://${conf.hostname}:${conf.port}`;
    console.log(`Server started at ${chalk.green(addr)}`);  
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值