为什么Phantom,Casper和Meteor需要自己的可执行文件?

时间:2013-08-03 23:59:27

标签: node.js meteor phantomjs casperjs

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

(我发现这使得它们更难以使用,特别是在Windows上。)

1 个答案:

答案 0 :(得分:7)

phantomjs与节点完全分开:

http://phantomjs.org/faq.html

  

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

     答:简答:“没有人可以为两位大师服务。”

     

更长的解释如下。

     

截至目前,这样做在技术上非常具有挑战性。

     

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

     

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

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

流星真的应该与节点紧密结合。有一个类似的框架Derby被构建用作模块。