Чи є рамка MVC (мікро-) JavaScript? [зачинено]


133

Чи є якісь на базі клієнта рамки MVC (мікро-) на стороні клієнта ?

У мене досить складна форма HTML, і вона отримала б користь від шаблону MVC.

Я думаю, що хорошим рішенням було б таке:

  • Модель та Перегляд оновлять контролер, коли значення змінюються (модель спостерігача)
  • Зарахуйте модель з даних форми, коли сторінка завантажується
  • Зарахуйте форму з моделі, коли модель зміниться

"Аякс", "комета", " JSONP" і все те, що є джазом, є серйозною надмірністю.


2
Я помиляюсь, чи це лише погана ідея (чи, можливо, рамки відповідають сумісному слову) ?.

2
Я почав працювати над чимось трохи тому, тому що в мене було те саме, що і у вас. Це настільки ж мінімально, як AMD, і настільки ж ненав’язливим, як я міг би його отримати. Це означає, що немає jQuery і т. Д. Я знаю, що це закрито зараз, але я думаю, що це може бути саме те, що ви шукали: github.com/Wolfy87/tarmac - я останнім часом не робив багато з цим, тому що думав, що я був би єдиним користувачем.
Оличний


Погляньте на TodoMVC , який порівнює (майже) всі доступні рамки JavaScript, реалізуючи просту додаток TODO.
коппор

Відповіді:


71

Магістраль - чудова рамка легкої ваги. Спробуйте: http://backbonejs.org/


2
Я так радий, що знайшов хребет.
Аарон Грінлі

Я погоджуюсь, перевірити обов'язково!
Іванхое

Як використовувати магістраль MVC?
ІсмаїлС

1
@TristanJuricek є безкоштовна альтернатива peepcode?
Мет

Пропустіть хребет і поверніть направо на хребет. Це набагато більш логічна реалізація MVC.
Кріс Джейнес

33

JavaScriptMVC - відмінне рішення. Все, що підхід плагіна дозволяє вибрати лише ті функції, які вам потрібні. Станом на 2.0, він базується на jQuery.

Поступово вдосконалюючи свій веб-сайт, це залишається за користувачем, оскільки JMVC надає лише середній рівень для розробки - вирішувати, що вибрати дизайн самостійно.

Однак JavaScriptMVC - це просто найкраща бібліотека JavaScriptMVC загального призначення завдяки потужним контролерам на основі делегації подій.

Делегація подій дозволяє вам уникнути необхідності приєднувати обробники подій та просто створити правила для вашої сторінки.

Нарешті, JMVC - це набагато більше, ніж архітектура MVC. У ньому є всі частини циклу розвитку, охоплені:

  • Генератори коду
  • Комплексне тестування Selenium та Env.js
  • Документація
  • Автоматичний Concat + стиснення
  • Виявлення помилок та звітування про них

1
+1 для JavascriptMVC - я використовував його для кількох додатків зараз, і це дуже приємно. Пропустіть приклади генерації коду на веб-сайті. Я б міг уявити, що вони є лише там, щоб умирити фанатів "Рейлів". :) Почніть з базової об'єктної моделі JQueryMX та створіть контролер.
Кріс Джейнес

1
Оскільки я зробив цей коментар, я перейшов на використання Require і Spine. Зрештою, вони менші, елегантніші та менш «Enterprisey», ніж JMVC. JMVC було приємно для нашої команди розробників Java, щоб змінити JS, але це просто не витримає, коли ви почнете краще розуміти JS ...
Кріс Джейнес,

Частина MVC JMVC зараз can.js
PHearst

21

У хребта є API, схожий на Backbone, але він набагато менший. Він має прототипне успадкування.


2
Він також написаний на CoffeeScript і використовує стиль класів CoffeeScript - не те, що це величезна виграш, але це якось приємно.
платний ботанік

1
Я припускаю, що тому він малий, ніж хребет? Код кодексу є більш компактним ...
Бренден

Я люблю хребет. Використовуйте його з RequireJS для чистої дивовижності. Не дозволяйте тому, що вас також відлякує CoffeeScript, він чудово працює і з нормальним JS ...
Кріс Джейнес

Підтримка браузера - IE> = 9, тому перевірте, чи відповідає профіль ваших відвідувачів.
Річард

20

AngularJS добре співпрацює з jQuery і дуже допоможе вам зі структурою MVC та суворим розділенням проблем.

Повне середовище тестування та введення залежностей включено ...

Перевірте це на веб-сайті http://angularjs.org


Angularjs - найкращий поки що в кінці 2013 року .... Я думаю ....
Тоні Бао

15

1
Погодьтеся, Angular - це не мікрорамка.
Войта

2
так, також крива навчання непропорційна, це вигоди порівняно з іншими рамками.
vsync

4
кутовий - це зовсім протилежна мікро рамка. це звір.
hasen


14

Я думаю, що це схоже на щось, що ви повинні перевірити: http://knockoutjs.com/

(Як програміст Silverlight / wpf саме ця бібліотека змусила мене нарешті почати вивчати JavaScript. Він заснований на шаблоні Model-View-View-Model (MVVM), як на мене зараз виглядає як хороший вибір!)


Як програміст Silverlight / wpf я оцінив нокаут, магістраль та пару інших. Наприкінці дня я перейшов на Angular. Він має прив’язки і МНОГО більше.
jonperl


8

Ember.js

Це три функції, які роблять Ембер радістю користуватися:

  1. В'язки
  2. Обчислені властивості
  3. Шаблони автоматичного оновлення

В'язки

Використовуйте прив'язки, щоб синхронізувати властивості між двома різними об'єктами. Ви просто оголосите прив’язку один раз, і Ембер переконається, що зміни поширюватимуться в будь-якому напрямку.

Ось як ви створюєте прив’язку між двома об’єктами:

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), а потім легко знаючи, що дані завжди будуть надходити правильно від шару до шару.

Обчислені властивості

Обчислені властивості дозволяють обробляти функцію як властивість. Обчислені властивості корисні, оскільки вони можуть працювати з прив’язками, як і будь-яке інше властивість.

Шаблони автоматичного оновлення

Ембер використовує руль, семантичну бібліотеку шаблонів. Щоб взяти дані з вашої програми JavaScript і помістити їх у DOM, створіть тег і введіть його у свій HTML, де б ви не хотіли, щоб значення відображалося:

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

2
Ембер вигідніше будь-яким чином використовувати над хребтом .... якщо технічні характеристики не є настільки зрозумілими на початкових етапах ..
Bijendra

4
Мені подобається emberJS, але це не "мікро", це ВЕЛИЧЕЗНО, тому що його плоскі рамки
iConnor

1
Використання Ембер та мікрокадрів у одному реченні не повинно бути дозволеним.
Префікс

8

Stapes.js

Повне розкриття: я автор цієї бібліотеки :)

Якщо ви шукаєте щось по-справжньому крихітне (1.5kb мінімізоване / gzipped), подивіться, і скажіть, чи вам це подобається.


Виглядає чудово з першого погляду! Мені подобається, що ти зосереджується на прототипічному успадкуванні (ніяких імітованих класів та жодного заплутаного newоператора). Те, що здається непотрібним, є ще одним eachі map. У мене вони вже є в Underscore.js та jQuery .
feklee

7

Якщо ваші вимоги дійсно прості, ви можете написати власний простий MVC, як це робив Олексій Неткачов .

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


4

Це, мабуть, непосильне для того, що вам потрібно, але SproutCore - це структура MVC, і вона не виглядає більш важкою вагою, ніж JavaScriptMVC або TrimPath's Junction .

На жаль, схоже, що жодне з них не будується на принципі прогресивного вдосконалення .


1
Основні компоненти MVC JavaScriptMVC приблизно на 1 кб більше, ніж gzipped Backbone (в той час як вони мають ряд інших функцій). І JMVC цілком здатний створювати додатки, що прогресивно розвиваються. Ви просто викинете шар моделі.
Джастін Мейєр

3

Популярний ActionScript MVC-фреймворк PureMVC нещодавно був перенесений на JavaScript. У мене ще не було можливості спробувати це, але я впевнений, що це добре.


Мені це подобається за флекс. Простий і потужний.
Гленн

3

Будь ласка, оформити замовлення jquery-claypool .

jquery-claypool - це невеликий, швидкий, доступний mvc фреймворк, побудований на jquery, заснований на моєму досвіді роботи з джанго, рейками, пружиною тощо. Його дуже невелика вага і працює як на клієнті, так і в серверному середовищі.

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

він не робить нічого, що jquery вже робить, відчуває себе як jquery, і працює як хороший фреймворк повинен: просто.

jquery-claypool

Сподіваюся, ви це перевірите.


Яким ти бачиш Claypool стосовно хребта?
Pepijn


2

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




2

ОНОВЛЕННЯ 2016: Sammy.js, здається, покинутий.

Погляньте на Sammy.js

Текст із сайту:

Невелика веб-рамка з класом.

  • Малі ядра Семх тільки 16K стискаються і 5. стискаються і архівований
  • МОДУЛЬНО Саммі побудований на системі плагінів і адаптерів. Включіть лише потрібний код. Також легко витягти власний код у плагіни для багаторазового використання.
  • CLEAN Весь API розроблений так, щоб його було легко зрозуміти та прочитати. Семмі намагається заохотити хорошу інкапсуляцію та дизайн додатків.
  • ЗАБАВЛЕННЯ Яка реальна точка розвитку, якщо це не приємно. Семмі намагається дотримуватися підходу MATZ. Він оптимізований для щастя розробника.

Чи можете ви розширити, будь ласка, щодо того, що таке MATZ?
kstep

Юкіхіро "Мац" Мацумото, творець рубіну, часто говорив, що "намагається зробити Рубі природним, а не простим" таким чином, що відображає життя. Тому програмне забезпечення повинно бути природним для користувача. Це означає підхід MATZ.
Біджан


1

CorMVC, простий для розуміння і для початку, на основі jquery і не залежить від будь-якої технології сервера


1

Я розробив дуже просту рамку Javascript MVC під назвою MCV . Це не робить саме те, про що ви просите, але це легко розширюється за допомогою помічників. У будь-якому випадку, це, безумовно, мікро (1,9 кб).

Це працює більш-менш, як Джамала, але я вирішив прокати свою власну з двох причин:

  • видаліть залежність jQuery (хоча я використовую її разом із jQuery більшу частину часу)
  • зробивши його розширюваним за допомогою помічників. Це аналоги поведінки, компонентів та помічників CakePHP.


1

Я підтримав AngularJS (повне розкриття інформації, я обмеженим чином долучаюся до кутових зусиль розробника) і дуже хвилююся цим. Я зробив побічне порівняння, взявши одну функцію для внутрішнього проекту (вибачте, не маю змоги поділитися нею) та реалізував її як в AngularJS, так і в Backbone. Це було чудовою вправою, і врешті-решт я дуже схиляюся до Кутового. Основні розробники чудово відповідають на питання, і вони зробили дуже гарну роботу з вбудованим прив'язкою даних, тестуванням одиниць / e2e та документацією. Його все ще знаходиться в бета-версії, з 1.0 вийде найближчим часом. Бета дуже стабільна.

Дещо зміниться парадигма, і вони використовують досить інший підхід, ніж більшість. Інтеграція ваших улюблених плагінів jquery забирає трохи зусиль, але це можливо і зроблено (angular-contrib on github).

Я скажу (і це проблема для більшості фреймворків, орієнтованих на js), не забудьте вивчити, як зробити ваш вміст SEO-дружнім (якщо він важливий для вас). З моменту приєднання до кутової спільноти у червні я помітив, що інтерес зростає, і багато людей публікують пости, говорячи про те, що вони дивилися на Магістраль та інших, але дуже люблять те, що вони бачать у Angular.








0

У Can.js є все, що потрібно, і важить лише 8 Кб. Він взяв найкращі шматочки з JavaScriptMVC і перегнав його в одну невелику, але все-таки каркасну рамку з спостерігачами, віджетами, палітурками, творами. Він сумісний з основними рамками ( jQuery , інструментарій Dojo , MooTools тощо). Документація відмінна, автори - чуйні. Це, безумовно, варто подивитися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.