美文网首页
用原生http 实现简单 Express 框架

用原生http 实现简单 Express 框架

作者: 梁同桌 | 来源:发表于2017-03-24 16:24 被阅读69次

大概实现思路:封装一个app对象,创建由(http创建)server属性,然后创建一个stack的数组,用来储存use上挂载的方法。 来了来请求,判断路径且循环调用stack里的方法。

app:代码如下

var http = require('http');
var url = require('url');
var proto = {
    stack: []
};

function createServer() {
    var app = {
        task: function(req, res) {
            app.handle(req, res);
        }
    }
    //把proto中的属性拷贝到app对象里
    Object.assign(app, proto);
    return app;
}
//装载函数
proto.use = function(route, fn) {
    var path = route;
    var handle = fn;
    if (typeof route != 'string') {
        handle = route;
        path = "/";
    }
    this.stack.push({
        handle: handle,
        path: path
    });
}
//循环调用函数
proto.handle = function(req, res) {
    var stack = this.stack;
    var index = 0;

    function next(err) {
        var layer = stack[index++];
        var route = layer.path;
        var handle = layer.handle;

        var path = url.parse(req.url).pathname;
        //是否匹配路径,是否匹配开头
        if (path.startsWith(route)) {
            if (err) {
                if (handle.length == 4) {
                    handle(err, req, res, next);
                } else {
                    next(err);
                }
            } else {
                handle(req, res, next);
            }
        } else {
            next();
        }

    }
    next();
}

proto.listen = function(port) {
    var server = http.createServer(this.task);
    server.listen(port);
}

module.exports = createServer;

git地址:https://github.com/hi363138911/express
个人博客: http://www.liangtongzhuo.com

相关文章

  • 用原生http 实现简单 Express 框架

    大概实现思路:封装一个app对象,创建由(http创建)server属性,然后创建一个stack的数组,用来储存u...

  • ES6学习笔记

    *node下用express框架,实现一个简单的mvc *构建工具:gulp / babel / webpack ...

  • 简单实现express框架

    github代码地址 只匹配路由 向外暴露一个createApp函数,函数返回一个app对象。声明routes(路...

  • 20160923 学习笔记 express框架

    20160923 学习笔记 express框架 安装 espress express框架文件 相关知识 http:...

  • Node.js + Express + MongoDB实现简易的

    Express是一个极简的Node.js Web框架。Express官网 学习了express之后,简单实现了一个...

  • Vue框架基础

    原生js与Vue框架的区别 用原生实现双向数据绑定 用Vue实现双向数据绑定 Vue是一个javaScript框架...

  • express入门总结

    1.Express框架 1.1 express是什么? 创建http服务器特别麻烦,express框架解决了这个的...

  • 5 Nodejs Koa、Koa2框架

    基于nodejs的web框架: Express框架[底层封装http模块,基于ES3/5,实现异步需大量回调,即使...

  • express框架的简单实现

    上面这张图画了express的路由处理方式,这也是和koa最大的区别,栈上有一个个的路径以及处理方法,每个路径对应...

  • express

    express (非破坏式框架,不影响node原生方法的使用)

网友评论

      本文标题:用原生http 实现简单 Express 框架

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