Существует ли (микро)фреймворк JavaScript MVC?

Есть ли клиентский JavaScript MVC ( микро-)фреймворки?

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

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

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

Ajax, комета, JSONP и все такое прочее - серьезное излишество.


person Community    schedule 22.12.2008    source источник
comment
Я ошибаюсь или это просто плохая идея (или, возможно, фреймворк соответствует модным словечкам)?   -  person    schedule 23.12.2008
comment
Я начал работать над чем-то некоторое время назад, потому что у меня было то же чувство, что и у вас. Это настолько минимально, насколько это возможно, AMD и настолько беспристрастно, насколько я мог это понять. Это означает отсутствие jQuery и т. д. Я знаю, что это уже закрыто, но я думаю, что это может быть тем, что вы искали: github.com/Wolfy87/tarmac — в последнее время я почти ничего с ним не делал, потому что думал, что буду единственным пользователем.   -  person Olical    schedule 16.07.2013
comment
github.com/yuval-a/ZOE   -  person Yuval A.    schedule 20.12.2015
comment
Взгляните на TodoMVC, в котором сравниваются (почти) все доступные платформы JavaScript с помощью простого приложения TODO.   -  person koppor    schedule 17.09.2016
comment
Посмотрите на stimulusjs — для существующего приложения с разметкой, сгенерированной на стороне сервера, я нашел эту структуру минимальной, наименее инвазивной и точной. Действительно интересно работать. Но может не удовлетворить все ваши требования   -  person Sudhir N    schedule 09.12.2020


Ответы (30)


Backbone — отличный легкий фреймворк. Попробуйте: http://backbonejs.org/

person Community    schedule 30.12.2010
comment
Я ОЧЕНЬ рад, что нашел Backbone. - person Aaron Greenlee; 11.01.2011
comment
Согласен, надо обязательно посмотреть! - person ; 11.01.2011
comment
Как использовать Backbone в MVC? - person IsmailS; 20.10.2011
comment
@TristanJuricek есть ли бесплатная альтернатива пипкоду? - person Matt; 01.04.2012
comment
Пропустите Backbone и перейдите прямо к Spine. У него гораздо более логичная реализация MVC. - person Chris Jaynes; 19.05.2012

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

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

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

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

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

  • Генераторы кода
  • Интегрированное тестирование Selenium и Env.js
  • Механизм документации
  • Автоматическое объединение + сжатие
  • Обнаружение ошибок и отчетность
person Community    schedule 22.08.2009
comment
+1 для JavascriptMVC - я уже использовал его для нескольких приложений, и это довольно приятно. Пропустите примеры генерации кода на веб-сайте. Я полагаю, что они нужны только для того, чтобы успокоить фанатов Rails. :) Начните с базовой объектной модели JQueryMX и создайте контроллер. - person Chris Jaynes; 31.08.2011
comment
Поскольку я сделал этот комментарий, я переключился на использование Require и Spine. В конечном счете, они меньше, элегантнее и менее «предприимчивы», чем JMVC. JMVC был хорош для нашей команды разработчиков Java, чтобы внести коррективы в JS, но это просто не выдерживает, когда вы начинаете лучше понимать JS... - person Chris Jaynes; 19.05.2012
comment
MVC-часть JMVC теперь называется can.js. - person PHearst; 19.04.2014

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

person Community    schedule 09.05.2011
comment
Он также написан на CoffeeScript и использует классы в стиле CoffeeScript — не то чтобы это огромная победа, но это приятно. - person a paid nerd; 12.11.2011
comment
Я предполагаю, что поэтому он меньше, чем магистраль? Код Coffeescript более компактен... - person Brenden; 20.01.2012
comment
Я люблю Спайн. Используйте его с RequireJS для чистой удивительности. Пусть вас не пугает тот факт, что это CoffeeScript, он отлично работает и с обычным JS... - person Chris Jaynes; 19.05.2012
comment
Браузер поддерживает IE ›= 9, поэтому убедитесь, что он соответствует профилю ваших посетителей. - person Richard; 22.12.2014

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

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

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

person Community    schedule 22.08.2011
comment
Angularjs пока что лучший в конце 2013.... Я думаю.... - person Tony Bao; 25.10.2013
comment
angular - это не микрофреймворк:/ - person iConnor; 01.02.2014
comment
Согласитесь, Angular — это не микрофреймворк. - person Vojta; 12.03.2014
comment
да, кривая обучения также непропорциональна ее преимуществам по сравнению с другими фреймворками. - person vsync; 31.03.2014
comment
angular — полная противоположность микрофреймворку. это зверь. - person hasen; 23.03.2015

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

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

person Community    schedule 22.12.2008
comment
На этом сайте есть мигающий тег. о_0 - person Tad Donaghe; 22.12.2008
comment
этот сайт у меня вообще не загружается - person Josh; 25.08.2009
comment
Попробуйте еще раз, должно снова заработать. - person Filip Ekberg; 26.08.2009

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

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

person Community    schedule 24.12.2010
comment
Как программист silverlight/wpf, я оценил нокаут, магистраль и пару других. В конце дня я перешел на Angular. Есть крепления и МНОГОЕ ДРУГОЕ. - person jonperl; 12.04.2012

Ember.js

Вот три функции, которые делают Ember приятным в использовании:

  1. Привязки
  2. Вычисляемые свойства
  3. Автообновление шаблонов

Привязки

Используйте привязки для синхронизации свойств между двумя разными объектами. Вы просто объявляете привязку один раз, и 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 (модель-представление-контроллер), а затем спокойно отдыхать, зная, что данные всегда будут правильно передаваться от слоя к слою.

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

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

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

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

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>
person Community    schedule 27.01.2012
comment
ember выгодно использовать поверх backbone в любом случае.... если спецификации не так ясны на начальных этапах.. - person Bijendra; 16.11.2012
comment
Мне нравится emberJS, но он не микро, а ОГРОМНЫЙ, потому что это плоский фреймворк. - person iConnor; 10.02.2014
comment
Использование Ember и микрофреймворка в одном предложении недопустимо. - person tdc; 02.11.2015

Stapes.js

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

Если вы ищете что-то действительно маленькое (1,5 КБ в минимизированном/сжатом формате), взгляните и скажите мне, нравится ли вам это.

person Community    schedule 16.03.2012
comment
Отлично выглядит на первый взгляд! Мне нравится ваш акцент на прототипном наследовании (без симулированных классов и без запутанного оператора new). Что кажется ненужным, так это еще один each и map. Они уже есть в Underscore.js и jQuery. - person feklee; 28.07.2012

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

person Community    schedule 09.12.2010


Это, вероятно, излишне для того, что вам нужно, но SproutCore – это среда MVC, и он выглядит не более тяжеловесным, чем JavaScriptMVC или < от TrimPath. href="http://code.google.com/p/trimpath/wiki/TrimJunction" rel="nofollow noreferrer">перекресток.

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

person Community    schedule 04.02.2009
comment
Основные MVC-компоненты JavaScriptMVC примерно на 1 тыс. больше, чем сжатые с помощью gzip в Backbone (при этом имеют ряд дополнительных функций). И JMVC полностью способен создавать прогрессивно улучшаемые приложения. Вы бы просто выбросили слой модели. - person Justin Meyer; 24.03.2011

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

person Community    schedule 04.02.2009
comment
Мне нравится это для гибкости. Простой и мощный. - person Glenn; 01.09.2009

Также проверьте jquery-claypool.

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

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

он не делает ничего, что уже делает jquery, он похож на jquery и работает так, как должен работать хороший фреймворк: просто.

jquery-claypool

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

person Community    schedule 01.09.2009
comment
Каким вы видите Claypool по отношению к Backbone? - person Pepijn; 17.06.2011

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

http://jamal-mvc.com/

person Community    schedule 17.08.2009

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

person Community    schedule 24.09.2010

Вот список всех фреймворков JavaScript с открытым исходным кодом, известных человечеству.

http://getopensource.info/explore/javascript/framework/

Или только фреймворки MVC

http://getopensource.info/explore/javascript/mvc/

Раскрытие информации: я разработчик этого сайта.

person Community    schedule 02.12.2011

Попробуйте kitty. Это всего 1,4 КБ, и его единственная зависимость — EJS.

person Community    schedule 26.08.2011

ОБНОВЛЕНИЕ 2016: Sammy.js кажется заброшенным.

Взгляните на Sammy.js

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

Небольшой веб-фреймворк с классом.

  • МАЛЕНЬКИЙ Ядро Sammy сжато всего на 16 КБ и сжато до 5,2 КБ и заархивировано gzip.
  • МОДУЛЬНЫЙ Sammy построен на системе подключаемых модулей и адаптеров. Включайте только тот код, который вам нужен. Также легко извлечь собственный код в многоразовые плагины.
  • ЧИСТЫЙ Весь API был разработан таким образом, чтобы его было легко понять и прочитать. Сэмми старается поощрять хорошую инкапсуляцию и дизайн приложений.
  • ВЕСЕЛЬЕ В чем смысл разработки, если она не доставляет удовольствия. Сэмми пытается следовать подходу MATZ. Он оптимизирован для счастья разработчиков.
person Community    schedule 17.03.2012
comment
Не могли бы вы уточнить, что такое MATZ? - person kstep; 01.04.2016
comment
Юкихиро «Мац» Мацумото, создатель рубина, часто говорил, что он «пытается сделать рубин естественным, а не простым», таким образом, чтобы он отражал жизнь. Поэтому программное обеспечение должно быть естественным для пользователя. Это подразумевает подход MATZ. - person Bijan; 01.04.2016

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

person Community    schedule 22.12.2008

CorMVC, простой для понимания и для начала, основанный на jquery и не зависящий от какой-либо серверной технологии.

person Community    schedule 25.09.2010

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

Он работает более-менее как Jamal, но я решил накатить свой собственный по двум причинам:

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

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

person Community    schedule 27.03.2011

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

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

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

person Community    schedule 14.09.2011

Maverick — это небольшая среда JavaScript MVC — http://maverick.round.ee.

person Community    schedule 18.01.2011

Я собираюсь добавить и здесь — AFrameJS работает с jQuery, MooTools и Prototype.

person Community    schedule 08.02.2011

Еще один: MooTools-MVC

person Community    schedule 08.07.2011

Существовал JavaScript-фреймворк для привязки ключ-значение под названием «Coherent», который был вдохновлен Cocoa Bindings от Apple. Фреймворк был куплен Apple, но на http://github.com/trek/coherentjs/tree/master.

person Community    schedule 22.12.2008

Попробуйте эту фреймворк JavaScript MVC на основе jQuery.

person Community    schedule 11.02.2011

Еще один, легкий и крошечный: http://jqnano.oleksiy.pro/

person Community    schedule 20.03.2012

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

person Community    schedule 18.05.2012