Javascript 是Node.js';s';createServer';应该为每个html、js和css文件分别调用吗?
从node.js的server.js: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());
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请求,直到您停止它。没有理由为每个请求创建服务器。