在node.js环境中加载一个网站

2018-08-10  本文已影响3人  一苇一航

网站项目是在网上随便找的,文件夹名称为static

导入模块

const http = require('http');
const fs = require('fs');
const url = require('url');
const path = require('path');

创建服务器,并在其中加载网站

  1. 通过http.createServer()创建一个服务器
const server = http.createServer(function (req, res) {}
  1. 声明变量pathname , 格式化URL
let pathname = url.parse(req.url).pathname;
  1. 判断请求地址
if (pathname == '/' || pathname == '/index') {
        fs.readFile('./static/index.html', function (err, data) {
            if (err) {
                fs.readFile('./static/404.html', function (err) {
                    if (err) throw err;
                    res.end(data);
                })
            }
            res.setHeader('Content-Type', 'text/html;charset=utf8');
            res.end(data);
        })
    }
//获取后缀名
let suffix = path.extname(pathname);
// 声明mime变量,等于mime值  例:text/html
let mime = getExtName(suffix);
fs.readFile('./static/' + pathname, function (err, data) {
  //响应头
            res.setHeader('Content-Type', mime + ';charset=utf8');
            res.end(data)
        })

完整服务器代码

const server = http.createServer(function (req, res) {
    let pathname = url.parse(req.url).pathname;
    // console.log(pathname)
    if (pathname == '/' || pathname == '/index') {
        fs.readFile('./static/index.html', function (err, data) {
            if (err) {
                fs.readFile('./static/404.html', function (err) {
                    if (err) throw err;
                    res.end(data);
                })
            }
            // res.setHeader('Content-Type', 'text/html;charset=utf8');
            res.end(data);
            // console.log(data.toString())
        })
    } else {
        //获取后缀名
        let suffix = path.extname(pathname);
        let mime = getExtName(suffix);
        fs.readFile('./static/' + pathname, function (err, data) {
            res.setHeader('Content-Type', mime + ';charset=utf8');
            res.end(data)
        })
    }
})

server.listen('3000', '127.0.0.1')

判断文件类型,返回对应的响应头(在服务器外部判断)

// 上图代码
 res.setHeader('Content-Type', mime + ';charset=utf8');
function getExtName(suffix) {
    // console.log(suffix)
    switch (suffix) {
        case '.html':
            return 'text/html';
        case '.css':
            return 'text/css';
        case '.js':
            return 'text/javascript';
        case '.jpg':
            return 'images/jpg';
        case '.png':
            return 'images/png';
        default:
            return 'text/plain';
    }
}
上一篇下一篇

猜你喜欢

热点阅读