Web服务器静态文件托管

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

文件目录

Web服务器静态文件托管_第1张图片

 

创建简单的服务器封装(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中放置静态文件就好

Web服务器静态文件托管_第2张图片

 

你可能感兴趣的:(Web服务器静态文件托管)