美文网首页
重写express

重写express

作者: youareyou | 来源:发表于2020-08-12 17:17 被阅读0次
    • 模拟express 的实现原理*
    module.exports=function () {
      return app;
    };
    var md=[];
    var routers={};
    function app(req,res) {
      var i=0;
      function next() {
        if(i==md.length) {
          router(req,res);
          return;
        }
          md[i++](req,res,next);
      }
        next();
    }
      function router(req,res) {
        var u=req.url.toLowerCase();
        var m=req.method.toLowerCase();
        if(!routers[m]){res.end('method is wrong!');return;}
        if(!routers[m][u]){res.end('url is wrong!'); return;}
        routers[m][u](req,res);
      }
    // routers={'get':{url1:fn1,url2:fn2},'post':{url4:fn4,url5:fn5}};
    app.use=function (fn) {
      md.splice((md.length-1),0,fn);
    };
    app.get=function (url,fn) {
      url=url.toLowerCase();
      routers['get'] ||routers['get']={};
      routers['get'][url]=fn;
    };
    app.post=function (url,fn) {
      url=url.toLowerCase();
      routers['post'] || routers['post']={};
      routers['post'][url]=fn;
    };
    
    • use()添加到 md 的中间件函数。
    • 把路由部分routers,在函数router 内比对后调相对应的函数执行。

    相关文章

      网友评论

          本文标题:重写express

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