Web服务器静态文件托管

本文深入探讨了如何创建静态Web服务器的高级版本,包括服务器封装、路由器逻辑以及文件类型的处理。通过`server.js`、`router.js`和`Mine.js`、`Extname.js`的实现,详细介绍了如何托管和管理静态文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次介绍了创建静态的web服务器,今天来聊聊它的pro版,简单的封装和整合。

文件目录

 

创建简单的服务器封装(server.js)

var http=require('http');
var router=require('./router');
http.createServer(function(req,res){
    router(req,"static",res)
}).listen(8100);

封装的router(router.js)

// 导入fs模块
var fs=require('fs');
// 导入path模块
var path=require('path');
var url=require('url');
var Extname=require('./Extname.js');
module.exports=(req,static,res)=>{
    // 在这里对路径解析 获取pathname 避免get传值等影响
    var pathname=url.parse(req.url).pathname;
    if(pathname!="/favicon.ico"){
        if(pathname=="/"){
            pathname="index.html";
        }
        // 根据目录去找到对应的文件
        fs.readFile(static+"/"+pathname,function(error,data){
            if(error){
                console.log(404);
                return false;
            }
            // aname为文件后缀名,根据后缀在extname.js中匹配文件类型
            var aname=path.extname(pathname);
            // console.log(aname);
            var exname=Extname(aname);
            res.writeHead(200,{"Content-Type":""+exname+";charset=UTF-8"});
            res.write(data);
            res.end();
        });
    }
}

Mine.js (用于调用总文件名称的数据)

var fs=require("fs");
var data=null;
//读取文件
//异步获取数据暂时外边拿不到
// fs.readFile("mime.json",function (err,res){
//     if(err)
//     {
//         console.log("404");
//         return false;
//     }
//     data=JSON.parse(res.toString());
// });
data=JSON.parse(fs.readFileSync("mime.json").toString());
module.exports=data;

mine.json直接去npm.js上搜就好了,数据有点多,所以抱歉

Extname.js (获取文件的类型)

var mim=require("./Mime.js");
module.exports=function (exname){
    // 有个小bug,拿到的值没有去 . 所以下面把点去了
    // console.log(exname.slice(1));
    return mim[exname.slice(1)];
    // 如果没有mime.json文件可以用下面简单替代
    // var type="";
    // switch(exname)
    // {
    //     case ".html": type="text/html";break;
    //     case ".css": type="text/css";break;
    //     case ".js": type="text/javascript";break;
    //     case ".json": type="text/json";break;
    //     default : type="text/html";break;
    // }
    // return type;
}

staic中放置静态文件就好

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值