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

网站项目是在网上随便找的,文件夹名称为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. 判断请求地址
  • 当pathname=='/' 时,通过fs.readFile()读取首页index.html
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);
        })
    }
  • else
//获取后缀名
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';
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容