2a01ae9942939ee2b3954a6727d2bb92

對 Nodejs 的看法

tonytonyjan閒聊 節點 中發起
最後由 tonytonyjan回應 , 2164次閱讀

http://nodejs-vs-ror.nodejitsu.com/
我今天才看到 Node.js 在 github 上的瀏覽人次已經超越 RoR 了。我其實對統一前後台語言這個特點倍受吸引。

我想 Node.js 未來要取代 RoR 成為在 web framework 的王者頭銜恐怕只是時間的問題。

截至 ,共收到 5 條回應
19e786a2a74377ff6e052d87fd8d1fa8
xdite 1樓, 於回應

想太多 zzz

19e786a2a74377ff6e052d87fd8d1fa8
xdite 2樓, 於回應

如果你對 Rails 再熟一點,你就會發現這樣的 statement 完全不成立...

2a01ae9942939ee2b3954a6727d2bb92
tonytonyjan 3樓, 於回應

跪求高見

19e786a2a74377ff6e052d87fd8d1fa8
xdite 4樓, 於回應

首先,Web Framework 是要用來作產品的。

Rails 會成為 Web Framework 的王者,是因為它的高速開發性,以及豐富的 Ecosystem。

高速開發性,是因為內建了許多 built-in feature 和 best practices,能讓開發者在抽象階層上快速實踐商業邏輯。這得益於 Ruby 本身的語言特性,以及 Rails 設計時的架構想法。

  • 對照到 Node.js。
  1. JavaScript 不是一個 friendly language,甚至這個語言在本身設計上就在許多相當大的問題。而到近年來才誕生了 CoffeeScript,讓開發者可以用把語言門檻再次壓低(消除很多 bad part )。

  2. Node.js 目前的特性是高效能。這是開發者常有的問題,看到「高效」就「高潮」,接著就會誤認這東西以後就能統治世界了。問題是:「高效能」並不能讓開發者完成一個產品。Node.js 目前可以做的是「高效能的 Web Service API backend」。

關於 Web Framework,Node.js 缺的東西還一大堆。Express.js 並不太能算是「可以商業使用」的東西。

接下來,是豐富的 Ecosystem。

一個專案,想快速完成使命,一定會強力借鑒語言/框架背後豐富的 Ecosystem。既然會用到很多套件,那就會開始有 dependency 問題。

python 的 django 一度號稱也要幹掉 Rails。講了那麼多年(4-5 年)來,整個框架等級還停留在 Rails 1.1 等級,Rails 都要出 4 了。python 的人最痛苦的是,他們有一個堪用的 auto installer : easy_install。但 python 的 package system dependency 爛的跟 hell 一樣。專案稍微複雜一點,一引入新的套件就到處爆炸。

Ruby / Rails 花了多年才發展出 Bundler,一舉解決 dependency 問題。目前的 npm 有辦法短時間追上嗎?我不覺得。

dependency 很重要嗎?要造 framework 或用套建堆疊組專案時,這真的非常重要。

再來是身為一個 backend webframework,需要具備的基礎輪子。這方面就實在太多了。

Node.js 本身只是一套 Event I/O server-side JavaScript。與其要說他是一套框架,它更像是一門語言上的語言。能讓開發者 build stuff。很多人利用這點特性,去 build command line application 以及 middleware。實際上這也是 Node.js 最擅長的領域。

Noed.js 取代 Rails 變成 web framework 的王者?我覺得這根本是一個錯誤命題吧。

2a01ae9942939ee2b3954a6727d2bb92
tonytonyjan 5樓, 於回應

#4樓 @xdite 謝謝 XDite 前輩,你的文章總是讓我學到很多東西= )

我在網路上看到許多人拿 node.js 和 rails 來比較,結果也被牽著鼻子走了。昨晚這麼聽你說,我又去爬了一些文章,他們提到說 node.js 充其量不過是 rails 的 event machine,意思是 rails 和 node.js 並不衝突。

所以我想我以後可以在 rails 中一些需要用到像 comet 技術的地方用 node.js 替換。

需要 登入 後方可回應,如果你還沒有帳號按這裡 註冊