幻影和 Meteor 是基于 Node 构建的,而 Casper 是基于 Phantom 构建的。为什么他们每个人都需要自己单独的可执行文件,而不是require
通过 Node.js 成为库?
(我发现这让它们更难使用,尤其是在 Windows 上。)
phantomjs 与节点完全分离:
问:为什么 PhantomJS 不写成 Node.js 模块?
A:简短的回答:“没有人可以侍奉两个主人。”
更长的解释如下。
到目前为止,这样做在技术上非常具有挑战性。
每个 Node.js 模块本质上都是 Node.js 核心的“从属”,即“主控”。在当前状态下,PhantomJS(及其包含的 WebKit)需要对所有内容(以同步方式)进行完全控制:事件循环、网络堆栈和 JavaScript 执行。
如果意图只是直接从 Node.js 中运行的脚本中使用 PhantomJS,则可以通过启动 PhantomJS 进程并与之交互来实现这种“松散绑定”。
CasperJS 是建立在 node 之上的,所以它本身显然不是一个 node 模块。尽管在这种情况下,您可以将SpookyJS与 node.js 一起使用。
Meteor 确实应该与 node 更紧密地耦合。有一个类似的框架Derby被构建用作一个模块。