Node創建靜態服務器

Node創建靜態服務器

預備工作

在項目中新建static文件夾,新建404.html、index.html、css文件夾(css測試文件)、image文件夾(image測試文件)、js文件夾(js測試文件)、json文件夾(json測試文件)等靜態文件。

響應式請求頭

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

處理類似/index.html?43894349493

pathName = url.parse(req.url).pathname;

完整代碼

const getType = require('./getType').getType;
const http = require('http');
const fs = require('fs');
const path = require('path');
const url = require('url');

http.createServer(function (req, res) {
    let pathName = req.url;
    // console.log(pathName);
    // console.log(url.parse(req.url).pathname);
    pathName = url.parse(req.url).pathname;
    pathName === '/' ? pathName = '/index.html' : "";
    // console.log(pathName);
    fs.readFile('./static' + pathName, function (err, data) {
        // console.log('./static' + pathName);
        if (err) {
            console.log('404');
            fs.readFile('./static/404.html', function (error, data) {
                res.writeHead(404, {"Content-Type":"text/html;charset='uft-8'"});
                res.write(data);
                res.end();
            });
            return;
        }
        // console.log(pathName);
        let type = getType(path.extname(pathName));
        res.writeHead(200, {"Content-Type":type + ";charset='uft-8'"});
        res.write(data);
        res.end();
    })
}).listen(8080);

靜態路由

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章