Javascript фреймворки. Что это? Зачем? Почему?

Что такое JS-framework и зачем он нужен?

JS-framework’и — это инструменты для построения динамических веб/мобильных/настольных приложений на языке Javascript. Как и к любым другим инструментам,
разработчики прибегают к использованию js-фреймворков там, где невозможно/очень сложно/очень долго выполнять задачу обычными средствами. В подавляющем большинстве случаев, фреймворки используются для написания, так называемых, Single Page Applications. Т.е. все, что проиходит на сайте, проиходит на одной страничке, без прямого перехода с нее.

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

Давайте сначала немного поговорим именно о фреймворках. Они предоставляют четкую структуру приложения и реализуются с использованием так называемых «паттернов проектирования» (понятие перекочевавшее больше из бекенда, но явно имеющее место во фронтенд разработке с использованием js-фреймворков). Наиболее широко рапространены следующие паттерны: MVC (Model-View-Controller), MVP (Model-View-Presenter) и MVVM (Model-View-ViewModel). В интернете имеется огромное количество информации, подробно описывающее каждый из них, и раскрытие этой темы не является основной задачей статьи, потому кому будет интересно — может самостоятельно ознакомиться с этими понятиями.

Преимущества построения приложения на JS-фреймворке:

  • можно легко реализовать SPA (Single Page Application);
  • использование js-фреймворка обязывает нас иметь структуру приложения (скажем решительное «нет» спагетти-коду);
  • кода становится заметно меньше и он чище, что позитивно отражается на скорости разработки, а также поддержке и устранении ошибок в коде приложения;
  • наличие структуры подразумевает модульность приложения, а это дает возможность проще работать над приложением нескольким разработчикам одновременно;
  • следующее преимущество больше вытекает из использования самого javascript, но значительно усиливается при использовании фреймворка: возможность быстро создать мобильное и/или настольное кроссплатформенное приложение из веб-версии с помощию систем типа PhoneGap или Apache Cordova.

Из существенных недостатков можно выделить только временно неполную поддержку поисковыми системами, но эта задача редко совпадает с задачей по реализации SPA (Single Page Application), тем более, что ведущие поисковые системы (как минимум, Google), уже практически полностью решили эту проблему.

Приложений на js-фреймворках уже выпущенно очень много и этот сегмент только набирает темп. Под примеры выполненных проектов на Angular.js, например, выделен целый сайт builtwith.angularjs.org, списки сайтов и приложений, использующих другие фреймворки можно найти внизу на главных страницах официальных сайтов: backbone.js, ember.js.

Javascript библиотеки

Напоследок немного слов об упомянутых выше js-библиотеках. Самые распространенные — jQuery, mootools, knockout, polymer, reactjs. Они сильно упрощают процесс написания не сложных отдельных функциональных модулей, реализуемых на javascript, но не являются и никогда не будут js-фреймворками. Да, они отлично вписываются в уже готовый сайт, и да, их используют те же js-фреймворки для работы с DOM’ом (например, Ember.js). Но на этом их функциональности и полезности заканчиваются: они не подходят для полноценной реализации одностраничных приложений.