Каков разумный способ использования шаблонов кодирования MVVM с HTML5

У меня есть приложение, написанное в Silverlight. Чтобы обеспечить большую поддержку кросс-браузера, мы рассматриваем возможность перезаписи с интерфейсом HTML5.

Каким будет разумный способ перехода от Silverlight с использованием XAML и С# с шаблонами кодирования MVVM в интерфейсе HTML5.

С другой стороны, если это не очень хорошая идея, и шаблон MVVM следует отказаться, объясните, почему.

Ответ 1

Knockout - отличная библиотека javascript, которая помогает вам писать клиентскую часть MVVM. Вы создаете свои модели просмотра в javascript и привязываетесь к ним с помощью html-шаблонов (с помощью шаблонов jquery templating). Модели просмотра могут использовать ajax для извлечения данных.

По сути, это то же самое, что и для разработки Silverlight. У вас есть HTML вместо XAML и javascript вместо С#/VB.Net. Вы даже можете использовать одни и те же веб-службы... что может быть полезно, если вы планируете позже предлагать оба интерфейса или преобразовать.

Edit
Мысль о том, что я бы добавил, что IMHO MVVM не следует оставлять, так как на самом деле он отлично справляется с решением проблем (я думаю, когда он выполняется правильно), но большая победа, конечно же, в том, что разработчик думает о ней или в мышлении или отделяет ответственность в приложении. Я использовал Knockout.js для веб-проектов и Caliburn.Micro для Silverlight и действительно наслаждался этим стилем разработки.

Ответ 2

Нокаут - это шаблон MVVM, реализованный в HTML/Javascript с привязкой данных и всеми. http://knockoutjs.com/

Если то, что вы хотите, можно достичь просто с помощью DOM-манипуляции, и вы привыкли к шаблону MVVM, и, как и шаблон MVVM, нокаут должен быть хорошим выбором.

Ответ 3

Да, шаблон MVVM для HTML 5 называется MVC. Наиболее легко реализуется с MVC3. Предоставляет слой абстракции в отношении кода JavaScript, поддержку ViewModels (aka Views) и разделение проблем между представлениями, доступом к данным и бизнес-логикой.

Лучше всего, что проверка и обработка событий UI связаны с вами простым способом, позволяя вам абстрагироваться от тонкостей обработчиков событий JavaScript для различных элементов управления HTML.

Однако, если вы строго хотите придерживаться HTML и JavaScript, я предлагаю перевести свои собственные классы JavaScript (да, JS - это функциональный язык, но вы все равно можете сделать это), которые представляют ваш уровень пользовательского интерфейса и обрабатывают события пользовательского интерфейса. Затем создайте свою собственную библиотеку Ajax для получения последовательных данных JSON взад и вперед от классов пользовательского интерфейса до конца сервера. Наконец, создайте свои собственные классы бизнес-логики (также в javascript) для управления вашими интерфейсами пользовательского интерфейса и DataAccess (ajax). Короче.... много грязной работы.

Ответ 4

Существует также экспериментальная библиотека Model Driven Views (MDV) от Google. К сожалению, он предназначен только для демонстрации прототипа. Концептуально, это действительно здорово, но будьте готовы сделать некоторые исправления ошибок самостоятельно.

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

Ответ 5

Также есть JSView. Это не так гладко, как нокаут, но быстрее обновляется DOM. Проект слабо связан с jquery, поскольку его автор находился за теперь отмененными шаблонами запросов.