【问题标题】:Why do Phantom, Casper, and Meteor need their own executables?为什么 Phantom、Casper 和 Meteor 需要自己的可执行文件?
【发布时间】:2013-08-03 23:59:26
【问题描述】:

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

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

【问题讨论】:

  • 嗯,不确定meteor,但Phantom 似乎并没有真正使用Node。它只是有一些相同的灵感(尤其是 CommonJS)并实现了一些类似的模块(fs、child_process)。对流星的最佳猜测只是它想要控制项目的结构。
  • 尼尔克是正确的。使用 Phantom 时需要的是 CommonJS 库,而不是节点:github.com/ariya/phantomjs/wiki/API-Reference#module-api ... 是的,我发现 PhantomJS 和 windows 并不总是一起玩得很好。使用 Linux!

标签: node.js meteor phantomjs casperjs


【解决方案1】:

phantomjs 完全独立于节点:

http://phantomjs.org/faq.html

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

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

更详细的解释如下。

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 2019-05-16
    相关资源
    最近更新 更多