Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why do Phantom, Casper, and Meteor need their own executables?

Phantom and Meteor are built off Node, and Casper is built off Phantom. Why do they each need their own separate executable, rather than being libraries you require through Node.js?

(I find it makes them harder to work with, especially on Windows.)

like image 333
mpen Avatar asked Aug 03 '13 23:08

mpen


1 Answers

phantomjs is completely separate from node:

http://phantomjs.org/faq.html

Q: Why is PhantomJS not written as Node.js module?

A: The short answer: "No one can serve two masters."

A longer explanation is as follows.

As of now, it is technically very challenging to do so.

Every Node.js module is essentially "a slave" to the core of Node.js, i.e. "the master". In its current state, PhantomJS (and its included WebKit) needs to have the full control (in a synchronous matter) over everything: event loop, network stack, and JavaScript execution.

If the intention is just about using PhantomJS right from a script running within Node.js, such a "loose binding" can be achieved by launching a PhantomJS process and interact with it.

CasperJS is built on top of node, so it obviously isn't a node module by itself. Although in that case, you can use SpookyJS with node.

Meteor really should be more tightly coupled with node. There's a similar framework Derby built for use as a module.

like image 139
SheetJS Avatar answered Oct 27 '22 01:10

SheetJS