5

幻影和 Meteor 是基于 Node 构建的,而 Casper 是基于 Phantom 构建的。为什么他们每个人都需要自己单独的可执行文件,而不是require通过 Node.js 成为库?

(我发现这让它们更难使用,尤其是在 Windows 上。)

4

1 回答 1

7

phantomjs 与节点完全分离:

http://phantomjs.org/faq.html

问:为什么 PhantomJS 不写成 Node.js 模块?

A:简短的回答:“没有人可以侍奉两个主人。”

更长的解释如下。

到目前为止,这样做在技术上非常具有挑战性。

每个 Node.js 模块本质上都是 Node.js 核心的“从属”,即“主控”。在当前状态下,PhantomJS(及其包含的 WebKit)需要对所有内容(以同步方式)进行完全控制:事件循环、网络堆栈和 JavaScript 执行。

如果意图只是直接从 Node.js 中运行的脚本中使用 PhantomJS,则可以通过启动 PhantomJS 进程并与之交互来实现这种“松散绑定”。

CasperJS 是建立在 node 之上的,所以它本身显然不是一个 node 模块。尽管在这种情况下,您可以将SpookyJS与 node.js 一起使用。

Meteor 确实应该与 node 更紧密地耦合。有一个类似的框架Derby被构建用作一个模块。

于 2013-08-04T01:04:46.577 回答