Каков разумный способ использования шаблонов кодирования 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, поскольку его автор находился за теперь отмененными шаблонами запросов.