2013-08-03 22 views
5

幻影和流星都是建立在節點之外,而卡斯帕是建立在幽靈之外的。爲什麼它們每個都需要自己的獨立可執行文件,而不是通過Node.js成爲require的庫?Phantom,Casper和Meteor爲什麼需要自己的可執行文件?

(我覺得這讓他們更加努力地工作着,特別是在Windows)

+1

那麼,不確定流星,但幻影似乎並沒有實際使用節點。它只是具有一些相同的靈感(尤其是CommonJS)並實現了一些類似的模塊(fs,child_process)。對流星的最佳猜測就是它想要控制項目的結構。 –

+3

Nirk是正確的。使用Phantom時的要求是CommonJS庫,而不是節點:https://github.com/ariya/phantomjs/wiki/API-Reference#module-api ...是的,我發現PhantomJS和windows並不總是很好玩一起。使用LINUX! – cliffbarnes

回答

7

phantomjs是完全獨立的從節點:

http://phantomjs.org/faq.html

問:爲什麼PhantomJS不寫爲Node.js模塊?

答:簡短的回答:「沒有人可以服務兩位大師。」

更長的解釋如下。

截至目前,這在技術上非常具有挑戰性。

每個Node.js模塊實質上是Node.js核心的「奴隸」,即「主」。在當前狀態下,PhantomJS(及其包含的WebKit)需要完全控制(以同步方式)一切:事件循環,網絡堆棧和JavaScript執行。

如果意圖僅僅是從在Node.js中運行的腳本中使用PhantomJS,那麼可以通過啓動PhantomJS過程並與之交互來實現這種「鬆散綁定」。

CasperJS建立在節點之上,所以它本身顯然不是一個節點模塊。雖然在這種情況下,您可以使用SpookyJS和節點。

流星真的應該更加緊密地與節點耦合。有一個類似的框架Derby構建用作模塊。

相關問題