2012-12-16 24 views
10

Mam trochę trudności podczas budowania aplikacji internetowej opartej na Clojure. Jest to prosta aplikacja CRUD, którą zacząłem badać w ekosystemie Clojure. Eksperymentuję z różnymi bibliotekami, takimi jak Hiccup, Enlive, Compojure i Noir (choć Noir wydaje się być na skraju przestarzałości)."Bogate" aplikacje internetowe z Clojure

Moje pytanie to właściwie dwa pytania. Po pierwsze jest na apparant brak konwencji do budowy aplikacji internetowych clojure. Po drugie potrzebuję wskazówek dotyczących tworzenia "bogatych" komponentów html.

To, co kocham w Clojure, to łatwość łączenia różnych bibliotek. Zastąpienie ożywienia czkawką i odwrotnie nie jest wielkim problemem. Wszystko odgrywa swoją pojedynczą i prostą rolę. Bardzo różni się od złożonych ram, takich jak JSF.

Ale jest kwestia: ta wielka wolność sprawia, że ​​czuję się trochę zagubiony. W JSF wiem, gdzie wszystko ma swoje miejsce. Używam Springa, aby zintegrować wszystkie komponenty, Spring-Security, aby obsłużyć wszystkie sesje. Biblioteki komponentów zwalniają mnie ze stresu związanego z rozwiązywaniem problemów html, javascript i ajax.

Zwłaszcza wyżej wymienione biblioteki komponentów są tym, czego mi brakuje w Clojure. Zacząłem implementować rzeczy takie jak datatable z funkcjami takimi jak zmieniające się kolory wierszy, paginacja, porządkowanie kolumn, przyrostowy filtr i tak dalej. I pozostawia mi pytania dotyczące synchronizacji stanu przeglądarki i serwera takich komponentów, szczególnie gdy dołączony jest ajax. Nie mogłem znaleźć żadnej dojrzałej odpowiedzi w sieci.

Zaleta frameworków: po zrozumieniu zasad i ograniczeń można zbudować aplikację i skoncentrować się na regułach biznesowych. Infrastruktura techniczna jest obsługiwana i nie powinna rozpraszać.

Jakie są sugestie dotyczące świata Clojure? Czy rozwiązanie to jest ClojureScript One? Jeszcze się nad tym nie zastanawiałem. Czy ktoś zna biblioteki komponentów, które oferują podobne funkcje, jak na przykład pliki danych RichFaces? Czy istnieje preferowany sposób radzenia sobie z ajaxem?


+0

To forum nie jest do dyskusji. Ma na celu rozwiązanie konkretnego problemu. Clojurescript zrzuca JavaScript po stronie przeglądarki. Z drugiej strony Noir został właśnie przestarzały na rzecz Compojure. – octopusgrabbus

+0

Jestem świadomy, że to forum nie jest przeznaczone do dyskusji. Ale nie oczekuję jednej "właściwej" odpowiedzi. Ale usunę to ostatnie zdanie. Jak już powiedziałem, tak naprawdę nie zajrzałem do "clojurescript One". Wiem, co to jest clojurescript. "Clojurescript One" wydawało mi się punktem wyjścia do wszystkiego. Ale może się mylę i to jest tylko samouczek, który zaczyna się od clojurescript. – nansen

Odpowiedz

3

Wszystko, co mogę dać Ci kilka wskazówek:

  • wymiany komunikatów pomiędzy klientem a serwerem w JSON lub EFR
  • oddzielają kod GUI z kodu stan zarządzania na kliencie
  • umieść kod zarządzania państwowego w skrzyżowaniu, aby można było przetestować go poza przeglądarką
  • zorganizuj, aby kod GUI klienta był tak niezależny od konkretnej biblioteki, jak to możliwe, lub biblioteki z aktywnymi społecznościami i najmniejszymi zależnościami
+0

Co to jest crossover? (punkt 3) – Bill

+0

Krosowanie następuje po zadeklarowaniu ścieżki kodu, który ma być skopiowany przez cljsbuild (wtyczka lein) ze źródła Clojure do źródła Clojurescript, odbywa się to za pomocą linii w pliku project.clj.Użyłem tego w sensie uczynienia tej części twojego kodu czystym Clojure, bez absolutnie żadnych zależności Clojurescript, co umożliwia testowanie w normalnym środowisku Clojure. – Hendekagon

+1

Z pewnością chciałbym rzucić okiem na pełny przykład ze źródłami w [GitHub] (http://github.com). Wykonalny? –

Powiązane problemy