代码之家  ›  专栏  ›  技术社区  ›  batman

如何使用正确的请求和响应对象调用函数?

  •  -1
  • batman  · 技术社区  · 6 年前

    我有一段代码:

    var http = require('http');
    function createApplication() {
        let app = function(req,res,next) {
            console.log("hello")
        };
    
        return app;
    }
    
    app = createApplication();
    
    app.listen = function listen() {
        var server = http.createServer(this);
        return server.listen.apply(server, arguments);
    };
    
    app.listen(3000, () => console.log('Example app listening on port 3000!'))
    

    这里没什么好奇心。但当我运行此代码并转到 localhost:3000 ,我能看到 hello 正在打印。我不知道这个函数是如何被调用的。此外,函数接收 req 和; res 对象也一样。不知道这里发生了什么。

    2 回复  |  直到 6 年前
        1
  •  2
  •   Patrick Evans    6 年前

    http.createServer() requestListener

    https://nodejs.org/api/http.html#http_http_createserver_options_requestlistener

    listen() app.listen() this createApplication

    http.createServer(function(req,res,next) {
      console.log("hello")
    });
    

    var http = require('http');
    var server = http.createServer();
    server.on('request',function(req,res,next) {
      //callback anytime a request is made
      console.log("hello")
    });
    server.listen(3000);
    
        2
  •  -1
  •   Narek Hakobyan    6 年前

    // content of index.js
    const http = require('http')
    const port = 3000
    
    const requestHandler = (request, response) => {
      console.log(request)
      response.end('Hello Node.js Server!')
    }
    
    const server = http.createServer(requestHandler)
    
    server.listen(port, (err) => {
      if (err) {
        return console.log('something bad happened', err)
      }
    
      console.log(`server is listening on ${port}`)
    })