您好,匿名用户
随意问技术百科期待您的加入

NodeJS中间件框架Connect的一些疑问

0 投票

大家好,小菜有些问题,求解答,谢谢!

最近看了NodeJS的Connect框架的代码(传送门:https://github.com/senchalabs/connect)。查看文档得知Coonect的使用方法如下:

// 由API文档明显知道,可以这样调用createServer
    // HTTP
    var server = connect.createServer(
        connect.logger()
      , connect.static(__dirname + '/public')
    );
    // HTTPS
    var server = connect.createServer(
        { key: key, cert: cert }
      , connect.logger()
      , connect.static(__dirname + '/public')
    );
    // 或者直接:
    connect(
        connect.logger()
      , connect.static(__dirname + '/public')
    ).listen(3000);

翻看Connect的源代码得知connect.createServer函数的实现如下:

function createServer() {
      function app(req, res){ app.handle(req, res); }
      utils.merge(app, proto);
      app.stack = [];
      return app;
    };

在该函数里面没有发现如何处理传入参数的实现...

继续跟踪其proto.js的实现代码,只有app.use和app.handle两个函数,并没有发现在哪里调用了...但可以很肯定connect.createServer()返回的是NodeJS核心的http lib里面的http.Server的实例。

我目前的水平就只能到这里了:)

由于暂时没有安装NodeJS的环境[ 不好意思,偶在网吧:)( ],所以请有NodeJS环境的童鞋麻烦Debug一下,能够分析一下Connect的调用过程,特别是createServer运行的过程,以及实现好的“中间件”是如何进入到connect的中间件的“大循环”里面的。

万分感谢!求NodeJS大侠出来拯救小菜!谢谢!

用户头像 提问 2012年 12月1日 @ Singed 上等兵 (275 威望)
分享到:

1个回答

0 投票
 
最佳答案

首先多谢 @gaosboy 的关心,多谢你在微博上的转发!在这里先说声真诚的谢谢...

由于我习惯git clone 某个代码仓库的最新的代码,毕竟是最新的代码好分析而且比较跟得上潮流哈.但这次我基本无语,因为我clone回来的NodeJS Connect的代码是未完成的代码,或者说是正在开发的代码....

我还真没有想过我习惯git clone最新代码这个"好习惯"也会带来这次莫名其妙的郁闷!

最后我找到1.7.1的NodeJS Connect的代码,传送门 https://github.com/senchalabs/connect... 看到/lib/connect.js里面的代码我立刻就知道我clone错版本的代码了!

function createServer() {
          if ('object' == typeof arguments[0]) {
            return new HTTPSServer(arguments[0], 
    `        `Array.prototype.slice.call(arguments, 1)
            );
          } else {
            return new HTTPServer(
              Array.prototype.slice.call(arguments)
            );
          }
        };

非常感谢在NodeJS邮件列表上回答我问题的 @Hsu Ping Feng,你的提示很给力,深刻地让我反省了这个不看版本clone代码的错误....虽然你可能看不懂中文,在这里我还是要给你回复一个真诚的感谢!

实在是不好意思,麻烦大家的观看和回复....

谢谢大家的关注....

谢谢...

登录SF看到 @牛小腩 同学的回复...其实Js我还是很懂的,只是Clone错版本的代码啦!现在NodeJS Connect的最新的代码还是在开发中的,根本就是还没有成型的代码,难怪我看不下去了!谢谢你的见解!谢谢你!

最后谢谢大家!谢谢SF!

用户头像 回复 2012年 12月1日 @ Jayce 上等兵 (271 威望)
选中 2012年 12月1日 @Singed
提一个问题:

相关问题

0 投票
1 回复 34 阅读
0 投票
1 回复 40 阅读
用户头像 提问 2013年 11月22日 @ Lucia 上等兵 (416 威望)
+1 投票
0 回复 17 阅读
用户头像 提问 2013年 9月9日 @ Malzahar 上等兵 (335 威望)
0 投票
0 回复 145 阅读
+1 投票
1 回复 109 阅读
用户头像 提问 2012年 12月1日 @ Lucia 上等兵 (416 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...