前端开发如何通过nodejs创建web服务器

今天刚学的如何应用nodejs创建web服务器,对学习资料进行整理归纳下,希望大神们给指点下!

项目整体分类

前端开发如何通过nodejs创建web服务器_第1张图片

首页布局




    
    
    
    
    




router下config.js文件配置

const url_util = require("url");
const fs = require("fs-extra");
const path = require("path");
const mime = require("mime");
const router = {
    get(path,cb){
        this.routes.push({
            path,
            method : "get",
            handler : cb
        })
    },
    handler: function (req, res) {
        //改装res使其拥有render方法来渲染整个页面
        this.refitRes(res);
        let url_info = url_util.parse(req.url);
        let pathname = url_info.pathname;
        //判断是否为资源请求,是的话读取对应的文件,然后响应
        if(pathname.startsWith("/static/")){
            this.responseStatic(pathname,res);
        }
        this.routes.forEach(route => {
            if (route.path == pathname) {
                route.handler(req, res);
            }
        })
    },
    responseStatic(pathname,res){//找到对应的文件
        fs.readFile(path.join(__dirname,".." + pathname),(err,content)=>{
            if(err) throw err
            res.writeHead(200,{"Content-type" : mime.getType(pathname)})
            res.end(content)
        })
    },
    refitRes(res){
        res.render = function (html) {
            //找到HTML文件并响应
            fs.readFile(path.join(__dirname, `../static/${html}.html`), (err, content)=> {
                if (err) throw err;
                res.writeHead(200,{"Content-type" : "text/html;charset=utf8"});
                res.end(content);
            })
        }
    }
}
module.exports = router
router下index.js配置

const router = require("./config")
router.get("/",(req,res) =>{
    res.render("index")
})
module.exports = router.handler.bind(router);
config下index.js配置

const config = {
    dev : {
        port : 3000
    },
    pro : {
        port : 80,
        hostname : "www.xxxx.com"
    }
}
module.exports = config;
创建一个nodejs服务器(server.js)

const  http = require("http");
const config = require("./config");
const router = require("./router");
const mode = 'dev';
const server = http.createServer(router);
server.listen(config[mode].port,config[mode].hostname,() =>{
    console.log(`server is listening...`);
});





你可能感兴趣的:(前端开发如何通过nodejs创建web服务器)