Есть ли структура JavaScript MVC (micro-)?

Есть ли какой-либо клиентский JavaScript MVC (micro-) frameworks?

У меня довольно сложная форма HTML, и она выиграет от шаблона MVC.

Я полагаю, что хорошее решение обеспечит следующее:

  • Модель и просмотр обновляют контроллер при изменении значений (шаблон наблюдателя)
  • Заполнение модели из данных формы при загрузке страницы
  • Заполнение формы из модели при изменении модели

Ajax, комета, JSONP и все, что джаз серьезно переборщил.

Ответ 1

Магистраль - это отличная легкая рама. Попробуйте: http://backbonejs.org/

Ответ 2

JavaScriptMVC - отличное решение. Все это подход плагина позволяет вам выбирать только те функции, которые вам нужны. Начиная с версии 2.0, он основан на jQuery.

При постепенном улучшении вашего сайта, который остался до пользователя, поскольку JMVC предоставляет только средний уровень для разработки - вам решать сделать этот выбор дизайна самостоятельно.

Однако JavaScriptMVC является просто лучшей библиотекой JavaScriptMVC общего назначения из-за своих мощных контроллеров делегирования событий.

Делегирование событий позволяет избежать необходимости прикреплять обработчики событий и просто создавать правила для вашей страницы.

Наконец, JMVC намного больше, чем архитектура MVC. Он имеет все части цикла разработки:

  • Генераторы кода
  • Интегрированное тестирование Selenium и Env.js
  • Документация Engine
  • Автоматический Concat + Compress
  • Обнаружение ошибок и отчетность

Ответ 3

Spine имеет API, похожий на Backbone, но он намного меньше. Он имеет прототипное наследование.

Ответ 4

AngularJS хорошо работает вместе с jQuery и очень поможет вам с структурой MVC и строгим разделением проблем.

Полная тестовая среда и инъекция зависимостей включены...

Проверьте это на http://angularjs.org

Ответ 5

Действительно есть: http://www.javascriptmvc.com/

Я думаю, вы найдете это достаточно!

Ответ 6

Я думаю, что это похоже на что-то, что вы должны проверить: http://knockoutjs.com/

(В качестве программиста silverlight/wpf это была библиотека, которая заставила меня наконец начать изучать javascript. Она основана на модели Model-View-View-Model (MVVM), так как для меня сейчас кажется хорошим выбором! )

Ответ 7

Существует популярный Backbone.js

Ответ 8

Ember.js

Это три функции, которые делают Ember радостью:

  • Наручники
  • Вычислимые свойства
  • Автоматическое обновление шаблонов

Наручники

Используйте привязки для сохранения свойств между двумя разными объектами в синхронизации. Вы просто объявляете привязку один раз, и Ember будет следить за тем, чтобы изменения распространялись в любом направлении.

Здесь вы создаете привязку между двумя объектами:

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

Привязки позволяют вам архивировать ваше приложение с использованием шаблона MVC (Model-View-Controller), а затем легко успокоиться, зная, что данные всегда будут корректно перемещаться из слоя в слой.

Вычислимые свойства

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

Автообновление шаблонов

Ember использует Handlebars, семантическую библиотеку шаблонов. Чтобы взять данные из вашего приложения JavaScript и поместить его в DOM, создайте тег и поместите его в свой HTML-код, где бы вы ни хотели:

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

Ответ 9

Stapes.js

Полное раскрытие: я являюсь автором этой библиотеки:)

Если вы ищете что-то действительно крошечное (1.5kb minified/gzipped), посмотрите и скажите, нравится ли вам это.

Ответ 10

Если ваши требования действительно просты, вы можете написать свой собственный простой MVC, например Alex Netkachov.

Его примеры построены на dojo (Примечание: они не работают для меня на его странице из-за отсутствующего файла dojo.js), но вы можете следовать шаблону в простом Javascript.

Ответ 11

Вероятно, это слишком сложно, но SproutCore - это структура MVC, и она не работает 't выглядит тяжелее, чем JavaScriptMVC или TrimPath Junction.

К сожалению, ни один из них, похоже, не построен по принципу прогрессивного улучшения.

Ответ 12

Популярная среда ActionScript MVC PureMVC была недавно перенесена на JavaScript. У меня еще не было возможности попробовать это, но я уверен, что это хорошо.

Ответ 13

Просьба также проверить jquery-claypool.

jquery-claypool - это небольшая, быстрая, плавная инфраструктура mvc, построенная на jquery, основанная на моем опыте работы с django, rails, spring и т.д. Его очень легкий вес и работает как на клиентском, так и в серверном средах.

он обеспечивает структуру маршрутизации для чистого mvc, регистрации категорий, фильтров (aop), ленивого создания контроллеров, инверсии управления, согласования по конфигурации и не намного большего по дизайну.

он не делает ничего, что уже делает jquery, похоже на jquery и работает как хорошая структура: просто.

jquery-claypool

Надеюсь, вы проверите это.

Ответ 14

Ямал - самый легкий, которого я видел. Он также основан на jQuery (бонус). Не использовали.

http://jamal-mvc.com/

Ответ 15

Если вы хотите держать вещи под контролем и достаточно простыми, вам может не понадобиться фреймворк, а просто реализовать свой собственный шаблон mvc. Просто проверьте эту статью: Модель-View-Controller (MVC) с JavaScript от Alex Netkachov в 2006 году.

Ответ 16

Попробуйте kitty. Это всего лишь 1.4KB, и его единственная зависимость - EJS.

Ответ 18

UPDATE 2016: Sammy.js, похоже, заброшен.

Посмотрите Sammy.js

Текст с сайта:

Небольшая webframework с классом.

  • МАЛЕНЬКИЙ Ядро Sammy сжато только 16 КБ и сжато 5,2 тыс. и gzipped
  • МОДУЛЬНЫЙ Sammy построен на системе плагинов и адаптеров. Включите только код, который вам нужен. Также легко извлечь свой собственный код в плагины многократного использования.
  • CLEAN Весь API был разработан, чтобы его было легко понять и прочитать. Сэмми пытается поощрить хорошую инкапсуляцию и дизайн приложений.
  • FUN Какая реальная точка развития, если это не приятно. Сэмми пытается следовать методу MATZ. Он оптимизирован для счастья разработчика.

Ответ 19

Я бы не назвал это микро-каркасом, но это наверняка выглядит интересно: Cappuccino Web Framework

Ответ 20

CorMVC, легко понять и начать с jquery based и не зависит от какой-либо серверной технологии

Ответ 21

Я разработал очень простую структуру Javascript MVC под названием MCV. Он не выполняет именно то, что вы просите, но он легко расширяется с помощью помощников. Во всяком случае, это определенно микро (1,9kb упакован).

Он работает более или менее, как Джамал, но я решил бросить свое по двум причинам:

  • удалить зависимость jQuery (хотя я использую его вместе с jQuery большую часть времени)
  • делает его расширяемым с помощниками. Они являются аналоговыми поведением CakePHP, компонентами и помощниками.

Ответ 22

Просто, чтобы сделать список немного более полным: ActiveJS

Ответ 23

Я поддержал AngularJS (полное раскрытие, я участвую в ограниченном использовании с усилиями angular dev), и я очень взволнован этим. Я сделал параллельное сравнение, взяв одну из функций для внутреннего проекта (извините, у меня нет подписки) и реализовано как в AngularJS, так и в Backbone. Это было отличное упражнение, и, в конце концов, я очень склоняюсь к Angular. Основные разработчики отлично справляются с ответами на вопросы, и они отлично справились со встроенной привязкой данных, тестированием unit/e2e и документацией. Его все еще в бета-версии с 1.0 выходит в ближайшем будущем. Бета очень стабильна.

Существует немного сдвига парадигмы, и они используют совершенно другой подход, чем большинство. Интеграция ваших любимых плагинов jquery требует немного усилий, но выполнима и выполнена (angular -contrib on github).

Я скажу (и это проблема для большинства js-ориентированных фреймворков), убедитесь, что вы исследуете, как сделать ваш контент оптимизированным для SEO (если это важно для вас). Начиная с присоединения к сообществу angular в июне, я заметил, что интерес растет, и многие люди делают сообщения о том, что они смотрели на Backbone и другие, но действительно любят то, что они видят в Angular.

Ответ 24

Была привязана к ключевому значению инфраструктура JavaScript под названием "Coherent", которая была вдохновлена ​​Apple Cocoa Bindings. Рамка была куплена Apple, но есть еще старая копия в http://github.com/trek/coherentjs/tree/master.

Ответ 26

Я тоже собираюсь подключиться сюда - AFrameJS работает с jQuery, MooTools и Prototype.

Ответ 30

Can.js имеет все, что вам нужно, и весит всего лишь 8 килобайт. Он взял лучшие бит от JavaScriptMVC и переработал его в одну небольшую, но в то же время систему kickass с наблюдателями, виджеты, привязку, работы. Он совместим с основными структурами (jQuery, Dojo Toolkit, MooTools и т.д.). Документация отличная, и авторы реагируют. Это определенно стоит посмотреть.