Может ли Sencha Touch хорошо сочетаться с шаблоном MVVM, подобным KnockoutJS? - PullRequest
7 голосов
/ 27 июля 2011

В настоящее время я создаю веб-приложение поверх KnockoutJS - правда, программирование для счастья!

Я достиг стадии, когда мне нужно было добавить среду разработки для мобильных устройств, и обдумывал свой выбор.

В настоящее время я склонен использовать Sencha Touch из-за его зрелости и уникальных плагинов, которые мне нужны.

Меня беспокоит только то, будет ли Sencha Touch, декларативное кодирование JavaScript для OO +, хорошо соответствовать инфраструктуре MVVM, например Knockout?

Я имею в виду, что Knockout использует концепцию, согласно которой представление (HTML-страница) будет вызывать модель путем привязки данных. ExtJS (Sencha Touch) не обогащает View ... вместо этого он ожидает, что весь контент HTML написан декларативно.

Я имею дело с нефтью и водой здесь? Что ты думаешь?

Примечание: мне интересно знать, будут ли эти две разные архитектуры хорошо работать вместе. Менее интересно слышать о том, как Sencha Touch сравнивается с другими системами.

Ответы [ 4 ]

5 голосов
/ 23 ноября 2012

GluJS обеспечивает MVVM для ExtJS 3.x и 4.x.Обвязка Sencha Touch находится в стадии разработки.Эти ребята также предоставляют подход аккуратной спецификации (SVVM).Этот материал действительно должен быть частью базовой базы кода Sencha, и модель класса ExtJS 4.x будет идеально подходить, так как 4.x может обеспечить хуки для двухстороннего связывания, которое использует GluJS.

DeftJS : Еще одна хорошая опция, которая хорошо поддерживается - DeftJS ;библиотека с открытым исходным кодом, которая добавляет MVC с ViewControllers (поэтому не совсем полный MVVM) к Sencha ExtJS и Touch.Он также добавляет инверсию управления (IoC) и Promises / Deferreds для более чистого асинхронного кодирования.

Обновление ...

Sencha ExtJS 5.x теперь поддерживает полноценный MVVM с моделями просмотра, и мы ожидаем, что следующий основной выпуск ... Sencha Touch 3.x... вероятно, сделает то же самое.ExtJS 5.x также был обновлен и теперь включает те же базовые классы и модель классов, что и Sencha Touch, так что это повышает вероятность того, что Touch 3.x будет соответствовать той же модели представления, что и ExtJS 5.x.

KnockoutJSделает то, что делает очень хорошо, но это только одна часть того, что вам нужно.Недостатком является то, что вам в конечном итоге придется охотиться за всеми недостающими частями, а затем играть «Верни мне, если сможешь», скрестив пальцы, что все биты все еще поддерживаются в следующем году «кем-то».В отличие от этого, API-интерфейсы Sencha предоставляют большую часть того, что вам нужно для создания и поддержки всего приложения в рамках одного цикла версий.Ознакомьтесь с заголовком «Современный веб-стек» в разделе этого блога .

4 голосов
/ 29 июля 2011

Это масло и ... другой вид масла. Sencha Touch имеет собственную MVC-архитектуру с привязкой и шаблоном данных, а также огромным количеством других вещей, таких как мобильные виджеты, обработка событий, тематика, графики и визуализация, библиотеки и т. Д. Я ожидаю, что у вас возникнут серьезные трудности при попытке смешайте два. Но если вам удастся сделать это, мы будем рады услышать об этом (я человек сенча)

Обновление: как Тони упоминает ниже - glu.js для Sencha вышел после того, как я ответил на этот вопрос - http://www.conarrative.com/glujs.html. Это в значительной степени именно то, что вы ищете, если вы хотите стиль MVVM против MVC (и нам нравится их подход)

3 голосов
/ 29 ноября 2011

Это определенно возможно, и я использовал оба для моего последнего проекта.Однако вам нужно отпустить нокаутирующую наиболее интересную часть: привязки элементов dom и большинство возможностей магазинов.Вместо этого вам необходимо прослушать изменения модели представления и соответственно обновить представления ExtJS.Не все компоненты ExtJS являются привязываемыми к представлению, например, для слайдеров.Так как я человек Flex (вы можете связать все что угодно в flex и, если честно, все остальное - отстой (да, даже sencha) после того, как вы привыкли связывать, просто набрав {}), я почувствовал что-то не так и использовал нокаут для своей модели.Мы говорим о том, что var a var var var var on on change так что нокаут там был идеальным.Многое нужно было сделать вручную, например привязки вида модели, и, в конце концов, я не могу сказать, что горжусь результатом, поскольку это не самый организованный код (на самом деле выглядит довольно некрасиво), и я бы не рекомендовал егоесли у вас нет большого количества зависимостей между вашими моделями.

0 голосов
/ 13 августа 2013

Я написал сообщение в блоге, в котором описан один подход к шаблону MVVM в Sencha Touch , в котором используется встроенная технология MVC Sencha Touch без ответа на другую платформу.

По сути, идея вращаетсявокруг факта, что Sencha Touch очень «основан на магазине»: когда запись изменяется, событие запускается в хранилище записи, а не в самой записи.Поэтому, если мы связываем xtypes видов моделей с хранилищем, мы можем просто перебирать эти представления и обновлять их по мере необходимости при изменении записи.

В целом это решение составляет всего пару десятков строк.Это хорошая легкая альтернатива, если вы не собираетесь изучать другой фреймворк, такой как GluJS.

...