Как веб-разработчик, вы, вероятно, с большим успехом погрузились в захватывающий мир JavaScript. Однако по мере того, как дизайн вашего клиентского веб-приложения становится все более отзывчивым, а пользовательский интерфейс — тяжелым, вы заметите, насколько сложно ориентироваться в возникающем беспорядке «спагетти» кода. В таких случаях практически невозможно избежать проблем при обслуживании, повторном использовании и устранении неполадок кода.

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

Парадигма MVC упрощает совместную работу разработчиков над проектом, предоставляя им общий язык и более организованное рабочее пространство. В результате фреймворки JavaScript MVC, такие как Backbone, Angular JS, Meteor, Ember и Knockout, становятся все более популярными способами создания веб-приложений.

Немного о конкурсе:

Неудивительно, учитывая популярность паттерна MVC, что есть несколько фреймворков JS, из которых можно выбирать. Angular JS, Ember и Backbone являются одними из самых популярных и будут в центре внимания этой статьи.

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

Магистраль:

Backbone очень компактен, чрезвычайно универсален и превосходен при использовании в простых проектах. Сам Backbone очень минималистичный и содержит только базовые компоненты, необходимые для структурирования веб-приложения в соответствии с шаблоном MVC.

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

Другими словами, чтобы создать полнофункциональное веб-приложение с помощью Backbone, вы должны провести исследование. Поскольку он не поддерживает двустороннюю привязку данных, ваш код может содержать множество шаблонов для обновления модели при каждом изменении представления.

Угловой JS:

Angular JS поддерживается Google и обладает самым большим сообществом, с наибольшей поддержкой и учебными пособиями. Таким образом, есть очень сильный набор функций из коробки. Например, двусторонняя привязка данных позволяет модели и представлению обновлять данные, уменьшая объем кода, необходимого для создания сложных элементов пользовательского интерфейса.

К сожалению, двусторонняя привязка данных также может снизить производительность в сложных приложениях, а также спровоцировать хаос при отладке. Директивы — это еще одна популярная функция, которая позволяет разработчику прикреплять к DOM специальные поведения, выходящие за рамки того, что описано в базовом HTML, что способствует большей гибкости при разработке поведения пользовательского интерфейса.

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

Эмбер:

Ember довольно большой, но имеет множество функций. Он содержит в основном все необходимое для создания веб-приложения, позволяя разработчику сосредоточиться на более важных проблемах. Такой высокий уровень структуры также может быть недостатком, поскольку любое отклонение от соглашения может привести к поломке кода. Кроме того, из-за высокого уровня контроля, который Ember поддерживает над дизайном вашего приложения, может быть сложно кодировать функции, которые не поддерживаются им изначально. Ember печально известен устаревшими примерами и руководствами, циркулирующими в сети. Таким образом, часто может быть трудно найти помощь по конкретному вопросу.

Кто что использует?

Магистраль: Twitter, Hulu, Pinterest, Pandora Radio
Angular: VEVO, The Weather Channel, MSNBC
Ember: Qualcomm, Chicago.com, Nest, Vine и NBC News.

Какой JavaScript Framework мне подходит?

Backbone может быть очень полезен при разработке простых одностраничных приложений. С другой стороны, Ember был разработан для обеспечения сложного дизайна приложений, поскольку он обрабатывает рутинные, избыточные процедуры, предоставляя разработчику возможность работать над более сложными аспектами кода, специфичными для приложения. Однако его сложность делает Ember гораздо более сложным для изучения, чем Backbone. Это может быть важно, если ваша команда разработчиков не знакома с конкретной структурой или если ваш проект чувствителен ко времени.

Angular, с другой стороны, является загадкой. Несмотря на то, что у него самое большое сообщество и впечатляющий набор функций, он не может быть хорошим выбором с точки зрения продолжительности жизни проекта. Важно учитывать, что Angular JS II находится в разработке, и это будет серьезная переработка фреймворка без обратной совместимости. В результате освоение Angular сейчас может оказаться бесполезным, поскольку Angular II может потребовать от разработчиков заново изучить фреймворк. Таким образом, любое веб-приложение, созданное до выпуска, будет использовать устаревшую структуру.

Ваш выбор — ваше будущее.

Решение использовать один фреймворк MVC вместо другого не должно основываться исключительно на том, что наиболее удобно разработчикам в вашей команде. Для успеха вашего веб-приложения крайне важно принять обоснованное решение относительно наиболее подходящей структуры для вашего проекта.

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

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

Узнайте больше о Разработке приложений в Codal.

См. также:1: https://www.lullabot.com/blog/article/choosing-right-javascript-framework-job 2: https://www.airpair .com/js/javascript-framework-comparison 3: http://www.webdesigndegreecenter.org/choosing-javascript-framework/ 4: http://www.quora.com/When-does-it- смысл-использовать-MVC-фреймворк-для-JavaScript 5: https://developer.chrome.com/apps/app_frameworks

Первоначально опубликовано на www.codal.com 7 мая 2015 г.