目录

clipboard.png

识别响应html,css,js

path.extname(p)

返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串。

index.html => .html

index.js

exports.getMime = function (extname) {
    switch (extname) {
        case '.html':
            return 'text/html';
        case '.css':
            return 'text/css';
        case '.js':
            return 'text/javascript';
        default:
            return 'text/html';
    }
}

tets.js

var http = require('http');
var fs = require('fs')
var path = require('path');
var mimeModel = require('./model/index.js');


http.createServer(function (req, res) {
    var pathname = req.url;
    if (pathname == '/') {
        pathname = '/index.html'
    }
    var extname = path.extname(pathname);
    if (pathname != '/favicon.ico') {
        console.log(pathname)
        fs.readFile('static/' + pathname, function (err, data) {
            if (err) {
                console.log('404');
                //如果没有就返回404页面
                fs.readFile('static/404.html', function (error, data404) {
                    if(error){
                        console.log(error)
                    }
                    res.writeHead(404, { 'Content-Type': "text/html;charset='utf-8'" });
                    res.write(data404)
                    res.end()
                })

            } else {
                //根据不同的类型文件,head响应加载不同的文件格式
                var mime = mimeModel.getMime(extname);
                res.writeHead(200, { 'Content-Type': ""+mime+";charset='utf-8'" });
                res.write(data)
                res.end()
            }
        })
    }
}).listen(8000);

clipboard.png

识别响应所有文件类型

mime.json

clipboard.png

index2.js

exports.getMime = function(fs,extname){
    var data = fs.readFileSync('./mime.json');
    var Mimes = JSON.parse(data.toString());
    return Mimes[extname] || 'text/html';
}
// Mimes['.html'] => text/html

test3.js

var http = require('http');
var fs = require('fs')
var path = require('path');
var url = require('url');
var mimeModel = require('./model/index2.js');


http.createServer(function (req, res) {
    var pathname = url.parse(req.url).pathname;
    if (pathname == '/') {
        pathname = '/index.html'
    }

    // path.extname(p)返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。如果一个路径中并不包含'.'或该路径只包含一个'.' 且这个'.'为路径的第一个字符,则此命令返回空字符串。
    var extname = path.extname(pathname);
    if (pathname != '/favicon.ico') {
        console.log(pathname)
        fs.readFile('static/' + pathname, function (err, data) {
            if (err) {
                console.log('404');
                fs.readFile('static/404.html', function (error, data404) {
                    if(error){
                        console.log(error)
                    }
                    res.writeHead(404, { 'Content-Type': "text/html;charset='utf-8'" });
                    res.write(data404)
                    res.end()
                })

            } else {
                var mime = mimeModel.getMime(fs,extname);
                res.writeHead(200, { 'Content-Type': ""+mime+";charset='utf-8'" });
                res.write(data)
                res.end()
            }
        })
    }
}).listen(8000);

![图片上传中...]


渣渣辉
1.3k 声望147 粉丝