【问题标题】:npm http and syntax explainationnpm http 及语法解释
【发布时间】:2016-12-29 04:13:07
【问题描述】:

我需要对下面的一些语法和正在执行的代码的顺序进行一些说明。

我猜它首先从创建服务器开始

var server = http.createServer(handleRequest);

然后server.listen 函数被执行。

但是在浏览器上,当用户以'/' 之类的路径结束时,handleRequest 函数是从哪里调用的,以及返回并存储在var server 中的函数。并且.listen 部分在server.listen 包的npm http 部分就像createServer 一样吗?

// Here we require/import the HTTP module
var http = require("http");

// Here we define a port to listen to
var PORT = 8080;

// Here we create a generic function to handle requests and responses
function handleRequest(request, response) {

  // The below statement is triggered (client-side) when the user visits the PORT URL
  response.end("It Works!! Path Hit: " + request.url);
}

// Here we use the Node HTTP package to create our server.
// We then pass it the handleRequest function to empower it with functionality.
var server = http.createServer(handleRequest);

// Here we start our server so that it can begin listening to client requests.
server.listen(PORT, function() {

  // The below statement is triggered (server-side) when a user visits the PORT URL
  console.log("Server listening on: http://localhost:%s", PORT);

});

【问题讨论】:

  • 我知道这并不能回答问题,但是http 模块是 Node 核心的内置模块,不需要使用 npm 安装它

标签: javascript http server


【解决方案1】:

HTTP 模块是 Node 直接内置的模块。 createServer() 返回一个服务器实例,它有一个名为listen 的方法。这实质上为request 事件设置了一个事件侦听器。当传入请求进入时,HTTP 将其定向到handleRequest() 函数

【讨论】:

    【解决方案2】:

    http 是节点 (docs) 的一部分,只是默认不加载,所以我们必须要求它。

    var server = http.createServer(handleRequest) 创建一个新的http.Server 实例,设置变量server 以引用它刚刚创建的那个实例,并告诉它将任何请求路由到函数handleRequest。

    server.listen(PORT) 使用创建的 http.Server 实例并使用 PORT 等于的端口调用其侦听方法,告诉 server 侦听指定的端口。所以.listen 是http 模块的一部分

    每当server 收到请求时,就像您转到http://localhost:8080/ 一样,它会使用两个参数调用handleRequest,第一个是请求,第二个是我们可以写入的响应。 handleRequest 从给定的请求参数中获取 url,然后将字符串加上 url 写入响应参数并结束有效发送响应的响应。

    【讨论】:

    • 感谢您的解释。它开始变得更加清晰。当handleRequest函数作为参数传递给http.createServer时,它成为该实例的属性作为服务器作为我猜的回调函数,所以每当发出请求时,都会调用回调函数handleRequest?跨度>
    • @Anonymous 正如你所说,handleRequest 就像一个回调,它是异步的。所以服务器等待请求,然后每当对该服务器实例发出请求时,它都会调用requestListener(requestData, responseData)(注意 requestListener 来自文档http.createServer docs。requestData 和 responseData 只是随机名称,表示数据被调用函数与),在这种情况下是handleRequest。
    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2020-04-20
    相关资源
    最近更新 更多