美文网首页
在node.js环境中加载一个网站

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

作者: 一苇一航 | 来源:发表于2018-08-10 12:21 被阅读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. 判断请求地址
    • 当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';
        }
    }
    

    相关文章

      网友评论

          本文标题:在node.js环境中加载一个网站

          本文链接:https://www.haomeiwen.com/subject/umekbftx.html