node笔记(三)-利用HTTP模块 URl模块 Path模块 Fs模块创建一个静态WEB服务器

目录

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);

![图片上传中...]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值