Журнал / польза

Что такое фреймворк

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

Что такое фреймворк

Фреймворк (англ. framework — «каркас, структура») — готовый набор инструментов, который помогает разработчику быстро создать продукт: сайт, приложение, интернет-магазин, CMS-систему.

Представьте, что вы решили собрать игрушечную машину: она должна ездить, управляться и выглядеть почти как настоящая. Очевидно, что есть несколько способов решить эту задачу:

— Машину можно собрать самостоятельно, с нуля: создать все детали вручную или на станке, заняться электроникой и электрикой, всё покрасить. Так можно контролировать весь процесс, но времени уйдёт немало.

— Похожую машину можно собрать из готовых наборов: детали корпуса, двигатель, электроника станут модулями, которые важно правильно подобрать и соединить. При желании можно залезть руками в любой модуль, но это необязательно, всё будет работать прямо «из коробки».

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

Покажите на примере!

Запросто! Разберём Spring — универсальный фреймворк для Java-платформы. Если мы не используем этот фреймворк, а пишем все функции кодом, то нам потребуется:

1. Сделать импорт пакетов.

2. Настроить и открыть соединение.

3. Выполнить запрос.

4. Извлечь данные из набора результатов.

5. Закрыть ресурсы и соединение базы данных.

Получается куча кода на одну простую операцию. Если использовать Spring, всё это можно заменить тремя строчками:

Зачем нужны фреймворки

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

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

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

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

Упростить адаптацию новых разработчиков в команде. Если программист освоил один или несколько фреймворков, он быстро разберётся в любом проекте, который создан на их базе.

Чем фреймворки отличаются от библиотек

Библиотека — набор методов, который упрощает труд разработчика. Как правило, библиотеки отвечают только за одну область: например, хранение данных или рендеринг — их вывод на страницу.

Библиотеки никак не влияют на архитектуру проекта. Фреймворки же как раз задают архитектуру и содержат инструменты из разных областей, таких как рендеринг, работа с базами данных, обработка запросов.

Фреймворки могут содержать в себе библиотеки. Например, фреймворк Next.js содержит библиотеку React.

Фреймворки и библиотеки нужны, чтобы упростить разработчику какую-то задачу. 

Библиотеки — полностью контролируемая разработчиком история. Используя библиотеку, вы сами выбираете, когда код внутри неё запустится. То есть вы идёте по коду: библиотека запускается, отрабатывает, и возвращает вам управление. Фреймворк же живёт своей жизнью, он запускается и обрабатывает ваш код самостоятельно.

Сергей Бердышев, лид-архитектор банковских систем

Какие бывают типы фреймворков

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

Фронтенд-фреймворки. Отвечают только за видимую часть сайта или приложения: отрисовку интерфейса, постраничную навигацию.

Популярные фронтенд-фреймворки:

1. Angular.

2. Next.js.

3. Vue.js.

Бэкенд-фреймворки. Отвечают за внутреннюю (серверную) часть сайтов и приложений: хранение, обработку и анализ данных.

Популярные бэкенд-фреймворки:

1. Django, Flask — для Python.

2. Laravel — для PHP.

3. Spring — для Java.

4. Ruby on Rails — для Ruby.

5. Asp.NET — для C#.

Фулстек-фреймворки. Отвечают одновременно за внешнюю и внутреннюю часть работы сайтов и приложений.

Популярные фулстек-фреймворки:

1. Meteor.js — для JavaScript.

2. Kivy — для Python.

3. Xamarin — для C#.

Самые популярные фреймворки и библиотеки в 2022 году среди разработчиков, по данным портала Stack Overflow
Самые популярные фреймворки и библиотеки в 2022 году среди разработчиков, по данным портала Stack Overflow

Как выбрать фреймворк

Распространённость фреймворка. Почему важно выбирать из популярных фреймворков:

— Есть большое сообщество — легко найти решение любой проблемы.

— У фреймворка хорошая поддержка — значит, багов будет минимум.

— Легко найти работу, так как большинство компаний использует популярные фреймворки.

Можно сравнить фреймворки Micronaut и Spring. Spring популярнее, чем Micronaut. У него огромный набор инструментов. Например, если вы работаете с базой данных SQL, а потом хотите добавить Mongo, на Spring вы можете это сделать. Если работаете на Micronaut с одним инструментом, а потом захотите переключиться на другой, этот фреймворк может другой инструмент не поддерживать. Тогда остаётся только переписать всё приложение на новый фреймворк. 

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

Сергей Бердышев, лид-архитектор банковских систем

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

Поставленные задачи. Сравните набор инструментов у разных фреймворков: какой из них лучше закроет ваши потребности. Для этого изучайте документацию, найти её можно на официальном сайте фреймворка. Для создания проекта со сложным интерфейсом, например онлайн-банка, скорее подойдёт Angular, так как в него входит большой набор инструментов. Для разработки небольшого пет-проекта — Vue.js.

⌘ ⌘ ⌘

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