2011-11-29 29 views
1

我有一個我正在構建的應用程序,它非常適用於craigslist,但功能有限。我通常會爲這種應用使用Rails,但我對學習nodejs/backbonejs框架感興趣,看起來這是一個很好的機會。Nodejs/rails/backbone架構

我不確定nodejs和/或backbonejs如何適應這個解決方案?我不一定非要使用rails,如果有意義的話,我可以使用nodejs和backbonejs。

感謝

回答

6

您當然可以使用Node.js的或者Rails或兩者與Backbone.js的 - 我已經使用了所有或這些技術的組合,棧和他們都是偉大的。選擇使用哪些應該取決於你正在建設什麼,並且在一定程度上取決於你使用每種技術的舒適程度。

與節點
Node.js的更換Rails可以很容易地更換導軌的功能,即談話的數據庫,包含模型的邏輯,服務頁面和資源和控制路由選擇。有大量的tons of modules可用於此。一個常見的解決方案是使用Express(一個簡單的Sinatra類型的web框架)爲頁面提供服務,並處理模板,並使用ODM/ORM來處理數據庫對象。還有更廣泛的類似rails的框架,比如Geddy。

我採取的節點上作爲直接替代Rails的
如果您只是想的Rails的功能,使用Rails的。 Ruby/Rails代碼看起來更乾淨,並且在我看來更具可管理性,並且它更成熟一些(隨時可以火焰...)。如果你服務於很多不同的頁面,Rails在組織事物方面做得很好。但是,如果您製作的是單頁應用程序,這是Backbone的主要用例之一,那麼很多Rails軟件包都是不必要的 - 您只需要模型邏輯和數據庫交互。在這種情況下,類似Express(Node)或Sinatra(Ruby)的ORM和RESTful路由在後端和前端之間進行通信將很合適。

附加功能與節點
爲節點的更引人注目的用例是帶有實時或多人遊戲方面的網站;節點非常適合併發和異步。如果您有客戶端互相發送數據,而無需重新加載頁面或將數據從服務器推送到客戶端,而無需其他頁面加載(使用此功能的模塊爲Socket.io),請使用節點。再次,這是一個用例,它適用於Backbone迎合的單頁或高交互界面。

+0

因此,讓我們來看看我的例子 - 一個像Craigslist這樣的Web應用程序,你會認爲這是一個實時應用程序,你會使用nodejs和backbone而不是rails嗎? – ed1t

+0

不錯的概述。 ed1t:我沒有看到任何關於類似craigslist的網站的真實情況。這主要是一個數據管理問題,而不是一個UI問題,除非你有一個原始的問題。 – maxl0rd

+0

@ ed1t是的,你可以使用節點向客戶端推送更新,如新列表(而不是輪詢)。對於標準的CRUD的東西 - 你可以使用Rails或Node,這一切都在我的答案... – cmpolis