2011-10-19 17 views
10

Mam ładną aplikację napisaną w Silverlight. Aby umożliwić obsługę większej liczby przeglądarek, rozważamy przepisanie z interfejsem HTML5.Jaki jest rozsądny sposób używania wzorców kodowania MVVM z HTML5

Jaki byłby rozsądny sposób na przejście z Silverlight przy użyciu XAML i C# z wzorami kodowania MVVM w interfejsie HTML5.

Z drugiej strony, jeśli nie jest to dobry pomysł, a wzór MVVM powinien zostać porzucony, proszę wyjaśnić, dlaczego.

+1

Chciałbym również poznać równoważny framework "Caliburn.Micro" dla HTML/Javascript. Wiem wszystko na temat Knockout, ale wydaje mi się, że to głównie dotyczy brudnej pracy związanej. A co z ładowaniem widoków, nawigacji, widoków podrzędnych itd. O ile mi wiadomo, extjs wydaje się być jedyną strukturą, która próbowała rozwiązać ten problem. –

Odpowiedz

6

Knockout to świetna biblioteka javascript, która pomaga pisać strony klienta MVVM. Możesz tworzyć modele widoków w javascript i wiązać je za pomocą szablonów html (przy pomocy szablonów jquery). Twoje modele widoku mogą używać ajax do pobierania danych.

Zasadniczo jest to to samo, co tworzenie Silverlight - zamiast XAML i javascript zamiast C#/VB.Net masz HTML. Możesz nawet używać tych samych usług internetowych ... co może być pomocne, jeśli planujesz zaoferować później oba interfejsy lub konwersje.

Edit
myślałem, że mogę dodać, że IMHO MVVM nie powinien być opuszczony, to naprawdę robi wielką pracę rozdzielania obawy (myślę, gdy realizowane poprawnie), ale wielka wygrana na pewno jest to, że wywoływacz myślenie o umyśle lub oddzielenie odpowiedzialności w aplikacji. Użyłem Knockout.js do projektów internetowych i Caliburn.Micro dla Silverlight i naprawdę podobał mi się ten styl rozwoju.

1

Knockout to wzór MVVM zaimplementowany w HTML/Javascript z wiązaniem danych i wszystkim. http://knockoutjs.com/

Jeśli chcesz osiągnąć po prostu poprzez manipulację DOM i jesteś przyzwyczajony i lubisz wzór MVVM, Knockout powinien być dobrym wyborem.

1

Tak, wzór MVVM dla HTML 5 nazywa się MVC. Najłatwiejsze do wdrożenia z MVC3. Zapewnia warstwę abstrakcji w odniesieniu do kodu JavaScript, obsługę ViewModels (inaczej Widoki) i separację problemów między widokami, dostępem do danych i logiką biznesową.

Najlepsze ze wszystkich jest to, że sprawdzanie poprawności i obsługa zdarzeń interfejsu użytkownika są dla ciebie przewodowo w prosty sposób, pozwalając ci się pozbyć zawiłości programów obsługi zdarzeń JavaScript dla różnych kontrolek HTML.

Jednak jeśli ściśle chcesz trzymać się kodu HTML & JavaScript, sugeruję rozwijanie własnych klas JavaScript (tak, JS jest językiem funkcjonalnym, ale nadal możesz je tworzyć), które reprezentują twoją warstwę interfejsu użytkownika i obsługują zdarzenia interfejsu użytkownika. Następnie utwórz własną bibliotekę Ajax, aby uzyskać szeregowe dane JSON z klas UI na serwer z powrotem. Na koniec utwórz własne klasy logiki biznesowej (również w javascript), aby kontrolować klasy UI i DataAccess (ajax). Krótko mówiąc ... dużo brudnej roboty.

1

Istnieje również eksperymentalna biblioteka Model Driven Views (MDV) od Google. Niestety, jest przeznaczony tylko jako prototypowa prezentacja. Koncepcyjnie jest naprawdę fajnie, ale przygotuj się na samodzielne naprawianie błędów.

http://code.google.com/p/mdv/

0

Istnieje również JSViews. Ten nie jest tak gładki jak Knockout, ale jest szybszy w aktualizacji DOM. Projekt jest luźno powiązany z jquery, ponieważ jego autor znajdował się za szableniami zapytań o złomowanie.

Powiązane problemy