Node.js是什么?为什么他们现在死了?

Node.js是什么?为什么他们现在死了?,node.js,Node.js,在0.7.0中,引入了[sic]。除了一些模糊的想法,他们提供了类似线程的功能,但没有线程的问题之外,我从未理解过这一点。并且可能有助于解决节点的调试/错误处理问题 但是,无论是在那个博客上,还是在最初的几个谷歌搜索结果中,都没有人解释过它们是什么。什么是分离物?为什么要将它们引入节点 今天早上,一系列GitHub问题(、、甚至可能更多)都以“隔离死了”的评论结束了。怎么搞的?从我所能看出的0.7的标题特性来看,这个被认为是好主意为什么会消亡呢?这里解释道: 我还没来得及收到消息,Ben就抢了

在0.7.0中,引入了[sic]。除了一些模糊的想法,他们提供了类似线程的功能,但没有线程的问题之外,我从未理解过这一点。并且可能有助于解决节点的调试/错误处理问题

但是,无论是在那个博客上,还是在最初的几个谷歌搜索结果中,都没有人解释过它们是什么。什么是分离物?为什么要将它们引入节点


今天早上,一系列GitHub问题(、、甚至可能更多)都以“隔离死了”的评论结束了。怎么搞的?从我所能看出的0.7的标题特性来看,这个被认为是好主意为什么会消亡呢?

这里解释道:


我还没来得及收到消息,Ben就抢了我一把:)

你可以把孤立看作是V8运行时的一个独立实例。它有自己的内存管理(GC)。该名称来自Chrome执行引擎,其中有多个选项卡,每个选项卡都有自己的JavaScript环境引擎。每个选项卡(和JS环境)都必须相互“隔离”,因此页面中的任何一个都不能访问另一个页面环境(window.local或window.document)。这就是为什么V8具有Isolate对象的原因,它允许它在相互独立(隔离)的多个环境(页面/选项卡)中并行运行。

为了防止@isaacs postet中断,这里的内容是:

隔离功能旨在使运行成为可能 线程中的child_process.fork(),而不是完整进程。这个 其理由是为了更便宜地启动新的子节点 实例,并允许使用共享 二进制插件中的内存,同时保留节点的 通过将子进程保持在完全隔离的状态来实现子进程 实例

这是一个信息量很大的实验,但最终证明是成功的 在节点的内部功能中造成太多不稳定,无法证明 现在继续。这需要很大的复杂性 添加到libuv和node中,可能不会产生足够的增益 值得投资

我们将回滚主控中添加到的更改 支持隔离,而不是专注于领域和其他 承诺增加稳定性,使调试更容易。这一变化 将在0.7.3中着陆。我们完全有可能决定使用 v8将在node的某些未来版本中隔离,但它们不会在 0.8

如果您热切期待使用此功能,请 您对这个决定感到震惊或沮丧,请与我联系 直接的。我们不想让任何人陷入困境,我也是 请理解,此功能已承诺使用一段时间。如果这 给你带来困难,让我们想出另一种方法让你发挥作用 处理的案件

后退并不容易,但做实验意味着 有时发现你走错了方向。这个 我们越早做出改变,事情就越容易

谢谢


据我所知,隔离是单独的节点v8实例,在单个进程中作为线程运行。(请注意,术语的使用与dart对同一术语的使用无关。)您提到“将重点放在域和其他承诺提高稳定性和简化调试的事物上”。现在什么是域名?有没有关于域名的其他信息?我想我听到ryan在某处解释隔离行动的域。但是很想找到更多的信息。@mamu更多的信息很快就要来了。域的前提是将不同的IO操作分组在一起,这样每个请求就可以在一个地方处理错误,而不是在每个进程中处理错误。Cloudflare刚刚发布了直接使用V8隔离的Workers,我希望我可以在节点上使用它。