2013-01-22 45 views
6

我們所有的應用程序的JavaScript框架是PHP MVC和與頂部在客戶端非常簡單的js的行爲層。我們要構建的JavaScript越來越停止請求「片斷」來執行簡單的行爲(如,加載不同的jQuery插件所有的地方)。我們不使用JavaScript MVC框架並尋找適合我們新應用程序的最佳解決方案。對pushState的「hijax」

其中最有吸引力的解決方案是讓渲染服務器端對我們來說,像Twitter does。他們稱之爲「Hijax +服務器端渲染」。我們不希望有一個完全成熟的MVC框架中的JavaScript但是從博客這些報價都非常吸引我們:

通過合同,我們的組件依附到一個DOM節點,聽通過委託,火災事件DOM上的事件,這些事件通過DOM事件冒泡廣播給其他組件。其次,我們所有的組件都是使用AMD定義的。

我們一直在試圖建立自己的東西,但沒有高水平的JavaScript專業知識,我們無法在這方面取得進展。類似jquery-pjax對於非常簡單的情況似乎也是一個很好的解決方案。

我們正在尋找:

  1. 一個UI /數據隔離,以鬆耦合夫婦XHR與DOM
  2. 事件驅動的用戶界面,使開發者可以將監聽到所有類型的DOM對象

有沒有像這樣的JavaScript框架?隨着pushState越來越多的關注,我希望有一些可用。有任何想法嗎?

+1

國際海事組織的Twitter的方法是相當悲慘的。早在六月份,我寫了一個[demo js bookmarklet](http://dist.meekostuff.net/meeko-twitter/)和[article](http://www.meekostuff.net/blog/Twitter-without-Hashbangs/ )展示了他們如何通過逐步增強mobile.twitter.com來遷移到'pushState'。我使用了我的[HTMLDecor](http://github.com/meekostuff/HTMLDecor/)js框架,演示只花了幾天時間。 Twitter需要多少個人工月才能遷移? –

+0

有趣的評論Sean :-)然而,我們並沒有過渡到js hijax,因爲希望獲得性能提升,我們有時需要行爲腳本,而html無法完成這項工作,並且我們希望儘量減少我們的服務器端應用程序。這就是爲什麼我們認爲hijax會非常適合我們。當javascript被禁用時,您應該得到「舊」整頁渲染應用程序的後備。我完全同意「hashbangs已經死了」:它們不靈活,漸進式增強成爲不可行 –

+0

這是新twitter.com的另一個問題 - 如果禁用js,則無法發送推文。漸進式增強作爲後續思考。 –

回答

0

我要去嘗試回答盡我的能力,你的問題。有了這樣說,我會說,你的問題是非常廣泛,相當曖昧。您尚未成功地在JavaScript庫中傳達您正在尋找的內容。您提到了很多不同的主題,這些主題都很複雜,每個主題都可以在客戶端開發中用於特定目的。儘管所有這些概念的實現都可能存在,但沒有一個明確的答案可以解決您的所有問題。

我會與你「UI /數據隔離」的第一個點開始。這個概念實際上是關於問題的分離。你希望你的UI與你的數據分開存在。您真正需要的是爲您的HTML反映您的數據模型的當前狀態。你也希望這會自動發生。這是一個MVC設計模式非常常見的工作流程。 JavaScript有提供給您多種選擇:Backbone.jsAngularJSEmberJS,而這樣的例子不勝枚舉...

在我個人的使用相當多的這些不同框架的經驗,我建議Backbonejs爲它的靈活和輕巧的性質。在骨幹網,我們有一個「觀」是可以直接連接到數據模型的概念。它還通過它的Routes機制支持您所期望的「pushSate」概念。

「事件驅動的用戶界面」部分可以由任意數量的不同JavaScript庫處理。 jQuery可能是將事件附加到「各種dom元素」上最受歡迎的庫。 Backbone.js還允許使用其View對象輕鬆設置事件委託(通過事件冒泡)。

簡而言之,如果您正在尋找將結構添加到您的JavaScript中......它確實取決於究竟是您要的是什麼。只是簡單的事情,一些手工製作的jQuery就可以做到。如果你真的想要一個更具MVC風格的應用程序,那麼這個應用程序就有可能發展壯大,但Backbone等MVC框架是可行的。