10

Buduję (dość prostą) aplikację internetową, która ostatecznie będzie używana w równym stopniu na komputerach i urządzeniach mobilnych. Używam Railsów na zapleczu, ale rzeczywista aplikacja będzie budowana jako aplikacja z jedną stroną, więc Rails po prostu obsłuży początkowe zasoby frontend i będzie działał jako backend REST.Javascript MVC framework + jQuery Mobile

Chciałbym użyć jQuery Mobile dla zoptymalizowanego pod kątem mobilności UX, w tym widoków list, wprowadzania dotykowego (np. Przesuń palcem, aby edytować element), itp. (Uwaga: rozważałem tylko wykorzystanie struktury interfejsu użytkownika, takiej jak Twitter Bootstrap lub Foundation, ale zdecydowanie skorzystałbym na bardziej rozbudowanym mobilnym zoptymalizowanym UX, który włącza jQuery Mobile.)

Chciałbym również użyć struktury Javascript MVC, aby lepiej uporządkować mój kod JavaScript. Grałem z kilkoma frameworkami, ale nie użyłem żadnego z nich dogłębnie i wciąż debatuję nad ostatecznym wyborem.

Moje główne pytanie dotyczy tego, które z tych struktur MVC (lub MVVM) sprawdzają się dobrze w połączeniu z jQuery Mobile.

Na bok, moja silna preferencja byłaby oparta na powiązaniach danych, takich jak Knockout, Ember, Angular lub Batman (w rzeczywistości, w oparciu o moje początkowe eksperymenty, całkiem lubię Batmana), który automatycznie aktualizuje interfejs użytkownika, gdy zmienia się warstwa modelu. Jednak mogłem zobaczyć, że jest to sprzeczne z jQuery Mobile, która również wprowadza znaczące zmiany w DOM, chce również posiadać skrót lokalizacji, itp.

Alternatywą byłoby użycie jednego z niższych poziomów, takich jak Plecak lub Kręgosłup. Przypuszczam, że warstwa routingu nadal wywoływałaby konflikty, ale mógłbym przynajmniej użyć warstwy modelu, kontrolera i widoku (a zwłaszcza trwałości REST).

A może jest to podejście hybrydowe, w którym oparta na danych strategia MVC oparta na danych jest używana do wszystkiego w wersji na komputery, a warstwa widoku jest w jakiś sposób zamieniona na jQuery Mobile w wersji mobilnej, wciąż wykorzystując model i kontroler warstwy?

Powodzenia w jednym z frameworków MVC opartych na powiązaniach danych? Masz szczęście z plecakiem lub kręgosłupem? Czy któryś z nich działał wystarczająco dobrze z jQuery Mobile, że poleciłbyś je? Jakieś inne rekomendacje?

Zdaję sobie sprawę, że to pytanie jest nieco otwarte, bez jednej poprawnej odpowiedzi, ale uważam, że jest to nadal odpowiednie pytanie dla Stackoverflow.

Odpowiedz

2

ponieważ nie otrzymał odpowiedzi po tak długim czasie mogę wnieść tylko z mojego głosu dla dwóch ram

backbone.js jest klasycznym jedna, silna społeczność

Jednak moim ulubionym jest Ember z punktu desgin z widok. Jednym z celów Ember.js jest uproszczenie integracji narzędzi, z których już korzystasz, a niektóre funkcje jquery zostaną wymienione w kilku przykładach dokumentacji.

nie jestem pewien o jQuery Mobile, użyłem głównie z normalnym jQuery, ale do tej pory dobrze wyglądać

Należy pamiętać, że Ember nie poświęcić trochę wydajności, jeżeli osiąga lepsze abstrakcję. Zazwyczaj to faworyzuję.

+0

dzięki za odpowiedź .Nie pracowałem nad tym projektem przez jakiś czas, więc nie wybrałem jeszcze finalnego stosu. Jestem pewien, że Ember.js może być gotowy do pracy, ale wciąż jestem nieco sceptyczny, ponieważ może nie być idealną kombinacją z jQuery Mobile. Wydajność może być też problemem dla urządzeń mobilnych. Teraz jestem skłonny do używania Spine (jestem pewien, że Backbone też będzie w porządku). –

+0

Cześć Mirko. Istnieje wiele bibliotek, które nie są zaprojektowane tak, aby dobrze się bawić razem z innymi. Słyszałem, że wiele osób chwalących Ember, ponieważ gra ładnie z jQuery, lepiej niż Backbone. Szukając MVC z Javascriptem, pamiętaj, że zobaczysz wiele mikro-frameworków. Szkielet jest późniejszy, lekki i wydajny. Inni, jak Ember, starają się być pełnym rozwiązaniem skupionym na jednym problemie. Jego działanie jest nieco gorsze (nie bez powodu) i nie słyszałem, jak dobrze pasuje do środowiska mobilnego. – SystematicFrank

1

Jeśli dotycząca o spektaklu, proponuję udać się z Backbone gdyż nie jest ram full-stack, co oznacza, że ​​może być dość szybko w porównaniu do innych ram full-stack