Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是Node.js';s';createServer';应该为每个html、js和css文件分别调用吗?_Javascript_Jquery_Node.js_Http - Fatal编程技术网

Javascript 是Node.js';s';createServer';应该为每个html、js和css文件分别调用吗?

Javascript 是Node.js';s';createServer';应该为每个html、js和css文件分别调用吗?,javascript,jquery,node.js,http,Javascript,Jquery,Node.js,Http,从node.js的server.js: var server = http.createServer( function( argRequest, argResponse ) { console.log("createServer: We got a hit @ " + new Date());

从node.js的server.js:

var server = http.createServer( function( argRequest, argResponse )
                                {
                                    console.log("createServer: We got a hit @ " + new Date());          
                                    var filePath = ""
                                    if( argRequest.url === '/')
                                    {
                                        filePath = './public/index.html'
                                    }
                                    else
                                    {
                                        filePath = './public' + argRequest.url
                                    }

                                    serveStatic( argResponse, filePath )
                                }
                            )

server.listen( 3000, function()
                     {
                        console.log("\nlisten: Server listening on port 3000!\n")
                     }
上述节点代码的输出:

:~/Documents/a_mean/githib$ nodemon server.js 
[nodemon] 2.0.6
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`

listen: Server listening on port 3000!

createServer: We got a hit @ Thu Feb 11 2021 11:27:36 GMT+0530 (... Standard Time)
./public/index.html
createServer: We got a hit @ Thu Feb 11 2021 11:27:36 GMT+0530 (... Standard Time)
./public/stylesheets/style.css
createServer: We got a hit @ Thu Feb 11 2021 11:27:36 GMT+0530 (... Standard Time)
./public/socket.io/socket.io.js
createServer: We got a hit @ Thu Feb 11 2021 11:27:36 GMT+0530 (... Standard Time)
createServer: We got a hit @ Thu Feb 11 2021 11:27:36 GMT+0530 (... Standard Time)
./public/javascripts/chat.js
./public/javascripts/chat_ui.js
输出显示对js、css和html文件的单独调用。这是预期的行为吗?这不意味着服务器会被重复创建吗


这是关于“favicon”被获取的,但我在输出中没有看到任何这样的东西


这里发生了什么?

这是预期的行为。这里发生的事情是这样的:您使用
http.createServer
函数创建一个服务器,并在其中传递回调。发生的情况不会立即调用此回调。问题是谁调用了这个回调

接下来您要做的是使用侦听功能侦听端口3000上的事件

让我们回到谁触发回调的问题上来?节点是一个运行时,它是事件驱动的。因此,只要有HTTP事件,它就会触发回调。因此,Nodejs负责在每次发生事件时调用函数(回调)

下面是一个用于探索NodeJ内部的链接

输出显示对js、css和html文件的单独调用。这是预期的行为吗

对。对于HTTP1.x,客户端必须显式地请求每个URL

这不意味着服务器会被重复创建吗

否。这意味着每次出现请求事件时,都会调用传递给
createServer
的回调函数


作为比较:

document.querySelector(“按钮”)
.addEventListener(“单击”),()=>警报(“单击”)

单击我
这是预期行为吗?
这不意味着服务器被重复创建吗?
否。@tkausl请解释这种行为背后的原因。您创建一次服务器,它会处理http请求,直到您停止它。没有理由为每个请求创建服务器。