Node.js NodeJS如何运行的概念以及每个请求的空间
我已经在NodeJS上修补了一段时间了。我似乎仍然不明白节点实际上是如何运行的。也许只是我无法摆脱PHP思维。我知道它与PHP有很大的不同,但我仍然不能理解这个想法——特别是当他们不断重复术语事件循环、事件驱动和REPL时Node.js NodeJS如何运行的概念以及每个请求的空间,node.js,Node.js,我已经在NodeJS上修补了一段时间了。我似乎仍然不明白节点实际上是如何运行的。也许只是我无法摆脱PHP思维。我知道它与PHP有很大的不同,但我仍然不能理解这个想法——特别是当他们不断重复术语事件循环、事件驱动和REPL时 代码启动时是否“永远”运行?它是否像后端的一个大的“ol浏览器”窗口,所有客户端都会看到它,并侦听来自它们的某种onRequest事件 或者每个请求都是一个孤立的沙箱?代码在哪里为每个请求运行,与其他请求分开 我在视频中看到了socket connection chat的
- 代码启动时是否“永远”运行?它是否像后端的一个大的“ol浏览器”窗口,所有客户端都会看到它,并侦听来自它们的某种onRequest事件
- 或者每个请求都是一个孤立的沙箱?代码在哪里为每个请求运行,与其他请求分开
http.createServer(onRequest).listen(80);
var xvz;
function onRequest() {
var abc;
}
在上面的代码片段中,abc位于一个独立的沙箱中。但是,abc仍然可以访问xyz。代码的结果程序是持久的。正如您所描述的,它就像一个巨大的旧浏览器窗口,接收请求并回复请求 阅读下面的例子
var http = request("http");
var shared = 1;
function procreq (req, res)
{
var notshared = 1;
res.writeHead(200, { "Content-Type": "text/plain" });
res.end(String(shared++) + ', ' + String(notshared++));
}
var server = http.createServer(procreq);
server.listen(8080);
通过运行该服务器示例,您可以看到程序是如何持久化的,并且
shared
变量对于所有请求都可见,它是一个真正的服务器共享变量。如果我没记错的话,我认为在PHP中,您可以通过memcached(或者是APC?)实现这一点。只是一个补充:单个请求只需按照您的要求进行隔离即可。每个请求都会调用回调,但是您可以很容易地在请求之间共享资源,因为请求是在同一个程序中处理的。