nodejs创建静态服务器

如何用nodejs手写一个简单但实用的静态服务器?看就完事了

首先,建立项目文件 如图所示:

然后,复制粘贴:(当然我写了注释,作为学习来说,复制是不够的)

  • server.js
var http=require('http');
//导入fs模块
var fs=require("fs");
//导入path模块
var path=require("path");
var url=require("url");
var Exname=require("./Extname.js");
http.createServer(function (req,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");
                //在页面404时可以请求404页面
                return false;
            }
            //现在数据可以打印出去  但是文件的类型不一致   text/html   text/css  text/javascript 等等不一致
            //根据后缀名 确认类型
            var aname=path.extname(pathname);
            var exname=Exname(aname);
            res.writeHead(200,{"Content-Type":""+exname+";charset=UTF-8"});
            res.write(data);
            res.end();
        });
    }
}).listen(8100);
  • 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;
}

  • Mime.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;
  • mime.json

大家可以去npm.js去下载,太长了~~~~~~

给大家看一眼成果图

 

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值