2012-12-16 66 views
10

我在構建基於Clojure的Web應用程序時有點掙扎。這是一個簡單的CRUD應用,我開始探索Clojure網絡生態系統。我正在嘗試使用不同的庫,例如HiccupEnlive,CompojureNoir(儘管Noir似乎處於貶損的邊緣)。Clojure'豐富'網絡應用程序

我的問題實際上是兩個問題。首先是缺乏構建clojure網絡應用程序的約定。其次,我需要一些關於創建'豐富'html組件的提示。

我對Clojure方式的喜愛是讓不同的圖書館一起玩耍的方便性。用呃逆換取活力並不是什麼大不了的事情。一切都扮演着單一和簡單的角色。與JSF這樣的複雜框架非常不同。

但有一點:這個偉大的自由讓我感覺有點失落。在JSF中,我知道它的位置在哪裏。我使用Spring來集成所有組件,Spring-Security處理所有會話內容。組件庫讓我免於處理html,javascript和ajax問題的壓力。

特別是前面提到的組件庫是我在Clojure中丟失的東西。我發現自己實現了像交替行顏色,分頁,列排序,增量過濾器等功能的數據表。這讓我對如何同步這些組件的瀏覽器和服務器狀態提出疑問,特別是當包含ajax時。我無法在網上找到任何成熟的答案。

框架的優點:一旦理解了規則和限制,您就可以構建應用程序並專注於業務規則。技術基礎設施得到處理,不應該成爲一種分心。

對Clojure世界有什麼建議?是ClojureScript One的解決方案嗎?我還沒有看過它。有誰知道任何提供類似功能的組件庫,例如RichFaces數據表?有處理Ajax的首選方法嗎?


+0

此論壇不供討論。這是爲了解決一個特定的問題。 Clojurescript爲瀏覽器端轉儲Javascript。對於後面的Noir剛被棄用贊成Compojure。 – octopusgrabbus

+0

我知道這個論壇不是討論。但我並不期望這個「正確」的答案。但我會刪除最後一句。正如我所說,我沒有真正看過'clojurescript One'。我知道clojurescript是什麼。 'Clojurescript One'在我看來似乎是一切的起點。但我可能錯了,它只是一個以clojurescript開頭的教程應用程序。 – nansen

回答

3

所有我可以給你一些指導原則:在JSON或EDF

  • 客戶端和服務器之間

    • 交換消息的客戶端獨立於您的狀態管理代碼的GUI代碼
    • 將您的狀態管理代碼放在交叉處,以便您可以在瀏覽器之外對其進行測試
    • 安排您的客戶端GUI代碼儘可能獨立於特定的庫,或具有活躍社區和依賴性最小的圖書館
  • +0

    什麼是交叉? (點3) – Bill

    +0

    交叉是當你的代碼的一個路徑被cljsbuild(lein插件)從你的Clojure源代碼複製到你的Clojurescript源代碼時,這是通過你的project.clj中的一行來完成的。我使用的是將你的代碼的一部分編寫爲純Clojure,並且完全沒有Clojurescript依賴關係,這使得使用正常的Clojure環境進行測試成爲可能。 – Hendekagon

    +1

    我一定會喜歡看看[GitHub](http://github.com)中的源代碼的完整示例。可行? –