2012-06-01 54 views
1

免責聲明:這個問題會有點不限。我也希望回覆部分基於開發者偏好。通過非Javascript服務器使用基於Javascript的服務器有什麼優勢?

我最近在Express.js上進行了一些研究(通過Node.js進行耦合),我正在努力尋找如何將這些技術應用到我當前開發網站的工作流程中。最近我一直在使用Wordpress或Ruby on Rails,之前將在Apache上運行,後者將運行在它自己的專有服務器上(我假設)。

現在也許我只是沒有理解一些東西,但我沒有看到有利於獲得對基於Javascript的框架/服務器的支持。如果在我的工作流程的這一部分有明確的優勢,他們會是什麼?我一直無法找到任何方法來適應(每個說)Rails應用程序或Wordpress網站。有人能指出我在實施這些技術方面的一些更好的幫助嗎?

最後一個問題,如果有人在其瀏覽器中禁用Javascript,會發生什麼情況?基於Javascript的服務器如何反應(如果有的話)?

+1

在您的服務器上運行的Javascript與運行在瀏覽器上的JavaScript無關。 –

+0

您最有可能*不會將它安裝到Rails應用程序或WP網站中 - 它們不會在JS服務器上運行。如果你的服務器端技術比現有的服務器端技術做得更好,速度更快等,你可以將JS服務器與另一個服務器端應用程序結合使用。 wBrowser JS沒有以任何方式連接到服務器JS - 什麼機制會使這個問題重要? –

回答

3

有兩個很大的差異:

事件循環

的Node.js是從平時的Apache的概念不同的一點,因爲它的方式處理連接。 Node不使用同步連接,而是使用事件循環進行非阻塞操作。請注意,這不是唯一的Javascript和有基於C和Python的框架,也啓用了類似的事件循環方法,但是在Javascript中它可能是最自然的感覺,因爲這是JS自推出以來的工作方式。

假設,這應該使您能夠處理更多的併發客戶端。然而,它沒有像常規阻塞解決方案那麼多的現實世界的曝光,所以這種方法不像大多數當前的實現那樣成熟。實際的性能差異值得懷疑,因爲它取決於應用程序的確切要求。

代碼共享

這一點比以往不同的爭議要少得多,但在本質上,如果你有客戶端和服務器都使用同一種語言,你可以重複使用大量的代碼,而不是不得不用多種語言重寫數據結構等,節省了大量的開發時間。但是,您必須瞭解服務器端JS的概念與您在瀏覽器上所瞭解的不同,例如您沒有使用jQuery或Prototype的動態JS,但它的結果和用例更類似於PHP被廣泛用於。

+0

讓我補充一點,Node.js的推廣優勢之一(我不瞭解Express)是開發人員不必擔心編寫高效安全的多線程代碼,因爲沒有線程。 – echristopherson

1

將Javascript作爲服務器端語言的主要優點是您使用單一語言編寫整個系統。

這在方面的優勢:開發者切換

    • 學習曲線和精神方面,也提供了一個用於在兩個環境之間共享代碼的一些可能性。

    然而,這最後一點是比它的聲音,對於一些原因不太有幫助的,而這正是缺點進來:由於

    • 沒有太多的代碼其實是可以共享的,兩種環境實際上存在差異。也許有一些驗證代碼,所以你知道你在客戶端和服務器上執行相同的檢查,也許有一些實用功能,但是這只是關於它。
    • 您使用的庫在兩者之間將完全不同:jQuery僅適用於客戶端,而Node具有特定於服務器的庫。
    • 因此,作爲開發人員,您仍然需要在環境之間進行精神上下文切換,因爲這兩種環境是不同的。他們可能會分享一種語言,但他們的操作模式是不同的,他們所做的是不同的。實際上,在兩者之間共享語言實際上會使上下文切換變得更加困難,並且這可能導致錯誤。
    • 最後,值得注意的是,儘管Node得到了開發者社區的大量關注,但它仍然是新的並且正在迅速發展:如果您是一家企業將其視爲開發平臺,那麼它可能還沒有完全實現足夠穩定以建立一個重大項目。
  • +0

    值得一提的是,在諸如驗證和狀態計算是代碼主要部分的遊戲等應用程序中,共享這些應用程序的能力是非常寶貴的。然而,總的來說,我還沒有在節點的這個方面找到很多優勢。 – bkconrad

    +0

    儘管如此,有很多庫爲客戶端JS和Node提供等效或類似的庫,例如模板,數據存儲,推送通知等。 – zatatatata

    相關問題