Что такое фреймворк
Если обратиться к истории самого слова «фреймворк», то этот неологизм появился в языке относительно недавно, примерно в начале XXI века. С английского слово “framework” можно перевести как «конструкция», «структура», «каркас», «корпус» или «остов». Понимание перевода слова ведет к понимаю сути фреймворка: это специальная программная среда выполнения, программный каркас, который облегчает разработку программ и объединение компонентов, так как уже содержит в себе некую основу, не меняющуюся от конфигурации к конфигурации часть, которую следует лишь наполнить сменными моделями или точками расширения.
В отличие от динамической библиотеки (DLL), которая предоставляет собой лишь набор ограниченных функций, фреймворк является каркасом, согласно которому будет строиться архитектура приложения, то есть он определяет взаимосвязь между компонентами. Более того, фреймворк может содержать много разных по тематике библиотек.
Топ-10 Фронтенд и Бэкенд Фреймворков
Вот десять лучших Бэкенд и Фронтенд фреймворков.
| Фреймворк | Категория | Язык Программирования | Популярные Приложения |
| React | Фронтенд | Javascript | Facebook Yahoo Khan Academy |
| Angular | Фронтенд | Typescript | Gmail Forbes PayPal |
| Vuejs | Фронтенд | Javascript | Chargebee Yousign Infermedica |
| jQuery | Фронтенд | Javascript | Upwork Udemy |
| Emberjs | Фронтенд | Javascript | TED Netflix Square |
| Django | Бэкенд | Python | National Geographic Mozilla |
| Laravel | Бэкенд | PHP | Deltanet Travel Neighborhood Lender World Walking |
| Ruby on Rails | Бэкенд | Ruby | Twitter Zendesk Github |
| Cake PHP | Бэкенд | PHP | Coconala Goodfirms Croogo |
| Express JS | Бэкенд | Node | Uber Groupon GoDaddy |
React
React — это фреймворк для языка программирования JavaScript, предназначенный для создания интерактивных веб-интерфейсов. Он помогает быстро и легко реализовать реактивность — явление, когда в ответ на изменение одного элемента меняется все остальное. React могут называть и фреймворком, и библиотекой — оба определения верны.

У React открытый исходный код и мощное сообщество. Это одна из самых популярных библиотек для веб-разработки.
Кто пользуется React
React применяют фронтенд-разработчики, они отвечают за создание интерфейса. В модели MVC, название которой расшифровывается как Model-View-Controller, интерфейс — это View, представление, внешнее отображение, с которым взаимодействует пользователь, та часть сайта или приложения, которая видна человеку. Специалисты, которые с ней работают, в частности, используют React. Также с React могут работать верстальщики, тестировщики и другие специалисты, задействованные в создании веб-интерфейсов.
Для чего нужен React
React используют для создания интерфейсов одностраничных и многостраничных приложений, разработки крупных сайтов. Например, с его помощью написан стриминговый сервис Netflix и реализованы новостные ленты крупнейших социальных сетей. Фреймворк предназначен:
- для создания функциональных интерактивных веб-интерфейсов, работая с которыми, не нужно постоянно обновлять страницу;
- быстрой и удобной реализации отдельных компонентов и страниц целиком — элементы в React легко использовать повторно;
- легкой разработки сложных программных структур — их просто описывать, если использовать реализованный в React подход;
- доработки новой функциональности интерфейса с любым изначальным стеком технологий: фреймворк не зависит от остального инструментария и будет хорошо работать, на чем бы ни был написан код;
- разработки одностраничных и многостраничных приложений (SPA и PWA). Это сайты, которые функционируют как программы и веб-сервисы и имеют соответствующий интерфейс;
- работы с серверной частью сайта или разработки интерфейсов мобильных приложений. В таких случаях React используют совместно с инструментами, адаптирующими веб-технологии под другие цели.
AngularJS
AngularJS представляет собой комплексный фреймворк. В стандартной поставке он предоставляет следующие возможности:
- Все, что вам нужно для создания CRUD-приложений: data-binding, базовые директивы для шаблонов, валидация форм, роутинг, deep linking, повторное использование компонентов, dependency injection, инструменты для взаимодействия с серверными (RESTful) источниками данных.
- Все, что вам нужно для тестирования: средства для модульного тестирование, end-to-end тестирования, mock-и.
- Шаблон типового приложения, включающего в себя структуру каталогов и тестовые скрипты.
AngularJS разрабатывается сотрудниками Google и используется, как минимум, в одном сервисе Google — DoubleClick.
Vue.js
Vue.js — это прогрессивный фреймворк, подходящий для создания пользовательских интерфейсов.
Название фреймворка созвучно с view, то есть с представлением (если говорить о модели MVC).
Vue.js — это фреймворк, который используется для решения задач именно уровня представления, его просто интегрировать с другими библиотеками и проектами. Иными словами, Vue.js — это инструмент, который можно внедрять постепенно. Возможность внедрения связана с тем, что Vue.js стремится к прогрессивности: поддержку Vue можно добавить в уже существующий проект, благодаря чему его функциональность будет значительно расширена. И это отличает его от других фреймворков.
Вообще простота интеграции — это одно из основных преимуществ данного фреймворка, особенно в сочетании с возможностью интеграции с бэкенд фреймворками.
Другие сильные стороны Vue.js — это простота в освоении и хорошая документация, а также высокая производительность.
Также Vue.js можно использовать для создания одностраничных приложений.
Центральная концепция Vue.js – это концепция компонентов, то есть небольших частей интерфейса пользователя, которые можно использовать повторно. Таким образом, и само приложение состоит из частей-компонентов. Один компонент может включать несколько других компонентов, то есть используется древовидная иерархия.
Vue.js – это реактивный MVC фреймворк: представление (view) автоматически изменяется при изменении переменной (модели).
Vue.js имеет очень хорошую экосистему, которая включает в себя множество полезных сторонних компонентов и инструментов. На GitHub есть отдельный длинный список полезных вещей под названием Awesome Vue.js.
jQuery
Библиотека кроссплатформенная и кроссбраузерная. Это значит, что ей можно пользоваться в любых операционных системах, а написанный на ней код поддерживают любые браузеры. Исключение для новых версий составляют старые браузеры вроде Internet Explorer 6, но ими сейчас практически не пользуются.
jQuery имеет лицензию MIT, она бесплатная и открытая. Существуют и другие проекты: jQuery UI и jQuery Mobile. Их можно считать дополнительными расширениями для основной библиотеки, они предназначены для сложных интерфейсов и для мобильной разработки. Название читается как «джейквери».Библиотекой пользуются фронтенд-разработчики, которые занимаются созданием видимой части сайтов и веб-приложений. Часто это программисты, которые поддерживают legacy-код в долгоиграющих проектах.
jQuery используется:
- для быстрой связи JavaScript с HTML-элементами.
- работы с селекторами CSS.
- навигации по DOM-дереву: обхода, поиска элементов, их изменения.
- работы с событиями на странице и реакциями на них.
- реализации AJAX — подхода, при котором страница фоново обменивается данными с сервером.
- создания анимации и визуальных эффектов на веб-странице.
Сейчас jQuery во многом вытеснили другие популярные фреймворки и расширения для JavaScript. Поэтому библиотека частично считается устаревшей, и в новых проектах ей пользуются нечасто. Это произошло, потому что новые фреймворки и обновления языка реализовали практически ту же функциональность, что у нее.
Ember.js
Фреймворк Ember.js включает в себя множество современных концепций и технологий из мира JavaScript. Среди его возможностей хотелось бы отметить следующие:
- Использование транспилятора Babel для обеспечения поддержки ES2016.
- Поддержка средств тестирования Testem и QTest, что открывает возможности по модульному, интеграционному и приёмочному тестированию.
- Поддержка сборщика Broccoli.js.
- Интерактивная перезагрузка веб-страниц, что ускоряет процесс разработки.
- Поддержка шаблонизатора Handlebar.
- Использование модели разработки, при реализации которой в первую очередь создаются URL-маршруты. Это обеспечивает полную поддержку глубоких ссылок.
- Наличие слоя для работы с данными, основанного на JSON API, но поддерживающего подключение к любому API, с которым нужно наладить работу.
Для того, чтобы приступить к работе с Ember.js, понадобятся свежие версии Node.js и npm. Всё это можно загрузить с сайта Node.js.
Кроме того, стоит сказать, что Ember.js — это фреймворк, ориентированный исключительно на фронтенд. Он поддерживает множество способов взаимодействия с различными бэкендами, но всё, что относится к серверному коду, не входит в сферу ответственности Ember.
Django
Django — фреймворк для веб-приложений на языке Python. Один из основных принципов фреймворка — DRY (don’t repeat yourself). Веб-системы на Django строятся из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из заметных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Также, в отличие от многих других фреймворков, обработчики URL в Django конфигурируются явно (при помощи регулярных выражений), а не автоматически задаются из структуры контроллеров.
Django проектировался для работы под управлением Apache (с модулем mod_python) и с использованием PostgreSQL в качестве базы данных. В настоящее время, помимо PostgreSQL, Django может работать с другими СУБД: MySQL (MariaDB), SQLite, Microsoft SQL Server, DB2, Firebird, SQL Anywhere и Oracle. Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.
Архитектура Django похожа на «Модель-Представление-Контроллер» (MVC). Контроллер классической модели MVC примерно соответствует уровню, который в Django называется Представление (View), а презентационная логика Представления реализуется в Django уровнем Шаблонов (Templates). Из-за этого уровневую архитектуру Django часто называют «Модель-Шаблон-Представление» (MTV).
Некоторые возможности Django:
- ORM, API доступа к БД с поддержкой транзакций
- встроенный интерфейс администратора, с уже имеющимися переводами на многие языки
- диспетчер URL на основе регулярных выражений
- расширяемая система шаблонов с тегами и наследованием
- система кеширования
- интернационализация
- подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты
- «generic views» — шаблоны функций контроллеров
- авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и прочие.
- система фильтров («middleware») для построения дополнительных обработчиков запросов, как например включённые в дистрибутив фильтры для кеширования, сжатия, нормализации URL и поддержки анонимных сессий
- библиотека для работы с формами (наследование, построение форм по существующей модели БД)
- встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение
Некоторые компоненты фреймворка между собой связаны слабо, поэтому их можно достаточно просто заменять на аналогичные. Но с некоторыми (например, с ORM) это сделать не очень просто. Кроме возможностей, встроенных в ядро фреймворка, существуют пакеты, расширяющие его возможности.
Laravel
Laravel — фреймворк корпоративного уровня на языке программирования PHP, созданный для разработки сложных сайтов и веб-приложений.
Laravel был создан в 2011 году как более функциональная альтернатива CodeIgniter.
- MVC (англ. Model View Controller – модель-представление-контроллер) PHP-фреймворк построен на базе известных и надёжных компонентов Symfony.
- Необходимые модули для фреймворка подключаются в виде пакетов-провайдеров (service provider). В версии Laravel 5.5 достаточно просто установить пакет через Сomposer, и он сразу будет доступен, без необходимости что-либо писать в коде.
- Код фреймворка отделён от кода разработчика, каждый компонент легко расширяется.
- Код веб-проекта, CSS, JS, HTML-код страниц разделены в отдельные директории. Фреймворк использует замечательный шаблонизатор Blade, который позволяет отделить вёрстку от PHP-кода. Сам шаблонизатор настолько прост, что даже начинающий HTML-верстальщик сможет легко его осилить.
- Удобная маршрутизация, валидация входящих параметров.
- Кеширование, работа с хранилищами файлов, работа с различными БД.
- Миграции для базы данных, Вы можете изменять структуру БД и откатывать изменения.
- Очереди заданий, планировщик задач, консоль, работа с SSH.
- Огромный функционал Eloquent ORM позволяет полностью обезопасить себя от атак типа SQL Injection, а также загружать данные из нескольких таблиц (решая проблему N+1) или же обрабатывать данные из БД частями.
- Laravel Collections – можно сказать, что это PHP массивы, но с очень продвинутыми возможностями, которые экономят массу времени.
- Кэширование файлов маршрутизации, файлов конфигурации, шаблонов. Это ускоряет работу фреймворка.
- Отправка уведомлений различными способами: почта, Slack и т.д., можете дописать сами.
- Поддержка WebSockets для создания настоящих интерактивных приложений.
- Поддержка мультиязычности: легко добавляйте любые языки, а пакет Laravel-lang уже содержит множество переводов.
- Интерфейс командной строки artisan, который позволяет генерировать модели, контроллеры, уведомления, запускать задания из очереди заданий и многое другое.
- Laravel Tinker – дополнительный пакет, который позволяет работать с кодом проекта из командной строки.
- Огромные возможности для тестирования веб-проекта, включая заполнение базы данных тестовыми данными.
- У фреймворка есть даже собственный сайт с библиотекой пакетов.
- Нужен полнотекстовый поиск? Пожалуйста – Laravel Scout, можно использовать Algolia, Sphinx и другие драйвера
Ruby on Rails
Ruby on Rails, RoR или «Рельсы» — это веб-фреймворк на языке программирования Ruby, позволяющий разрабатывать надёжные и сопровождаемые веб-приложения под высокие требования к скорости работы и устойчивости к нагрузкам. На «Рельсах» разработаны очень многие известные и популярные сайты.Этот фреймворк можно справедливо назвать одним из самых известных, удобных и красивых, по мнению разработчиков. Это прогрессивная и динамичная технология, которая позволяет создавать код, используя соглашения вместо конфигураций. RoR используется для написания модельно-ориентированных веб-приложений. Одна из главных особенностей этого фреймворка – возможность создания любого типа веб-приложения, будь то управление проектами, групповой чат, безопасное хранилище данных или просто блог. Данный фреймворк можно использовать практически на любой операционной системе, также он поддерживает множество СУБД.
Фреймворк Express (Node.js/JavaScript)
Express — самый популярный веб-фреймворк для Node. Он является базовой библиотекой для ряда других популярных веб-фреймворков Node. Он предоставляет следующие механизмы:
- Написание обработчиков для запросов с различными HTTP-методами в разных URL-адресах (маршрутах).
- Интеграцию с механизмами рендеринга «view», для генерации ответов, вставляя данные в шаблоны.
- Установка общих параметров веб-приложения, такие как порт для подключения, и расположение шаблонов, которые используются для отображения ответа.
- «промежуточное ПО» для дополнительной обработки запроса в любой момент в конвейере обработки запросов.
В то время как сам express довольно минималистичный, разработчики создали совместимые пакеты промежуточного программного обеспечения для решения практически любой проблемы с веб-разработкой. Существуют библиотеки для работы с куки-файлами, сеансами, входами пользователей, параметрами URL, данными POST, заголовками безопасности и многими другими. Вы можете найти список пакетов промежуточного программного обеспечения, поддерживаемых командой Express в Express Middleware (наряду со списком некоторых популярных пакетов сторонних производителей)








