zoukankan      html  css  js  c++  java
  • Node实现静态服务器

    1.Node里面是没有Web容器之说的,所以URL上的路径跟实际文件的路径并不是一致,这里我们手动实现一个简单的原生静态服务,让Node能够找到路径的文件,实现静态服务器功能。文件夹的任何文件都能被找到。

    2.比如在index.html加一个图片时,Node的fs去找这个图片,但是WriteHead你就要写这个MIME类型,为image/jpg,虽然不写,Chrome浏览器可以显示(开发者工具可以看到这个1.jpg的Response Headers里不存在 Content-Type),有的浏览器是不能显示的,又比如CSS的文件你不写MIME类型,浏览器是识别不了了。

    3.path模块获得后缀,然后写一个函数case所有情况,写进特定的MIME类型,这里也可以在函数里面再fs读一个写好的json文件,把所有类型都可以对应起来(教程上的小作业)。

    //因为Node路由路径和实际文件路径并不一定一致,没有Web容器的原因,这里我们仿照Web路由的实现
    var http = require("http");
    var url = require("url");
    var fs = require("fs");
    var path = require("path");
    
    http.createServer(function(req, res) {
        //得到用户的路径
        var pathname = url.parse(req.url).pathname;
        if(pathname == "/") {
            pathname = "index.html";
        }
        //拓展名
        var extname = path.extname(pathname);
        // console.log(extname);
        //真的读取这个文件
        //缺点,太智能,但是不能检测是什么类型的文件
        fs.readFile("./static/" + pathname, function(err, data) {
            //data是一个Buffer,二进制的数据流
            if(err) {
                //如果文件不存在,就返回404
                fs.readFile("./static/404.html", function(err, data) {
                    res.writeHead(404,{"Content-type":"text/html;chaset=UTF8"});
                    res.end(data);
                });
                return ;//必须这个,不然会走到下个data
            }
            //MIME类型,就是
            //网页文件:text/html
            //jpg文件:image/jpg
            var  mime = getMIME(extname)
            res.writeHead(200,{"Content-type":mime});
            res.end(data);
        })
    }).listen(3000,"127.0.0.1")
    
    function getMIME(extname) {
        switch (extname) {
            case ".html":
                return "text/html";
                break;
            case ".jpg":
                return "image/jpg";
                break;
            case ".css":
                return "text/css";
                break;
            }
    }
  • 相关阅读:
    Python3 使用requests库读取本地保存的cookie文件实现免登录访问
    Python3 使用requests库登陆知乎并保存cookie为本地文件
    python中的ConfigParser模块
    python中json的使用
    python中的IO模块
    python中的apscheduler模块
    ubuntu14静态ip配置
    在ubuntu14中搭建邮箱服务器
    python 生成器
    python中列表生成式
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7745851.html
Copyright © 2011-2022 走看看