Фреймворки
Фреймворк — готовая программная структура (каркас) для разработки ПО, которая:
- задает базовую архитектуру
- часто применяется в разработке мобильных, веб- и десктоп-приложений
У каждого фреймворка свой набор инструментов и свой функционал.
Зачем нужен
- чтобы снизить время разработки за счет готовых инструментов и шаблонов
- для единообразия кода
- помогают решать базовые задачи (например, управление сессиями или безопасностью)
Виды фреймворков
- Фронтенд: для разработки пользовательских интерфейсов
Примеры: React (JavaScript), Angular (JavaScript), Vue.js (JavaScript) - Бэкенд: для создания серверной части приложений
Примеры: Django (Python), Spring Boot (Java), Express.js (JavaScript) - Кроссплатформенные: можно писать код для разных платформ (iOS, Android, Windows)
Примеры: Flutter (Dart), Xamarin (C#), React Native (JavaScript)
Фреймворк vs библиотека
- Фреймворк задает структуру и правила для разработки. Управляет выполнением кода, дает готовый каркас, который нужно достроить.
- Библиотека — набор готовых функций, которые можно использовать по мере необходимости.
- Фреймворк берет управление на себя (inversion of control).
При использовании библиотеки контроль остается у разработчика.
Пример фреймворка Django
Django — фреймворк для разработки веб-приложений на Python.
Состоит из:
- Шаблонов MVC: определяют архитектуру приложения (модели, представления, контроллеры)
- Модуля ORM: для работы с БД без SQL-запросов
- Системы маршрутизации: управляет обработкой URL
- Встроенных инструментов: аутентификация, админ-панель, обработка форм, защита от CSRF, шаблоны HTML, API
- Документации
Пример: создание блога на Django
- Используется встроенный ORM для работы с записями.
- Подключаются шаблоны для отображения страниц.
- Настраивается маршрутизация для обработки URL.
Минусы фреймворков
- Нужно следовать правилам и структуре фреймворка.
- Могут быть слишком сложными для простых задач.
- Переход на другой фреймворк или обновление может быть трудоемким.
Как аналитик может использовать фреймворки
-
На этапе согласования требований
Помогает учитывать их ограничения в согласовании требований с разработчиками.
Например, определять, какие задачи фреймворк решит "из коробки", а для каких нужно дорабатывать. -
Прототипирование решений
С помощью фронтенд-фреймворков (React или Angular) можно создать прототип пользовательского интерфейса.- Для системы управления задачами можно сделать интерфейс с доской Kanban.
- Заказчик сможет протестировать функционал на раннем этапе.
-
Документирование требований
В ТЗ можно указать, что бизнес-логика реализуется с использованием Django.
Если необходимо разработать REST API, можно описать, какие эндпоинты и модели данных будут поддерживаться, согласно возможностям Django REST. -
Анализ интеграций
Предложить выбор подходящего фреймворка:- Для системы обработки больших массивов данных можно обосновать выбор FastAPI (высокая производительность, поддерживает асинхронную обработку запросов).
- Для архитектуры системы указать использование Spring для создания микросервисов (например, их взаимодействие через API, реализованные в Spring Boot).
Краткое описание популярных фреймворков
Angular
Angular — фронтенд-фреймворк для создания сложных веб-приложений.
Технологии: TypeScript, шаблоны HTML, двусторонняя привязка данных, RxJS для реактивного программирования.
Особенности:
- Инжектор зависимостей для управления состоянием
- Модульная архитектура
- CLI для генерации компонентов и сборки проекта
Подходит для разработки крупных SPA (одностраничных приложений), требующих масштабируемой архитектуры.
React
React — библиотека для создания пользовательских интерфейсов, часто рассматривается как фреймворк.
Технологии: JavaScript/TypeScript, JSX для написания разметки, Virtual DOM для оптимизации работы.
Особенности:
- Управление состоянием через Redux, MobX или Context API
- Встроенные хуки для работы с состоянием и жизненным циклом компонентов
- React Router для маршрутизации
Подходит для создания интерфейсов с высокой интерактивностью и сложными обновлениями данных.
Vue.js
Vue.js — фронтенд-фреймворк для разработки интерфейсов и SPA.
Технологии: JavaScript, HTML-шаблоны с реактивными привязками данных, Vue Router для маршрутизации, Vuex для управления состоянием.
Особенности:
- Легкий и простой в освоении
- Поддержка гибкой настройки и модульной структуры
- Экосистема с интеграцией CLI и готовыми модулями
Под ходит для небольших или средних проектов с акцентом на скорость разработки.
Django
Django — бэкенд-фреймворк для Python, ориентированный на веб-приложения.
Технологии: Python, ORM для работы с базами данных, встроенные модули для аутентификации, миграций, админ-панель.
Особенности:
- Поддержка MVC паттерна
- Встроенные средства для работы с формами, файлами и кешированием
- Подходит для REST API через Django REST
Идеален для быстрой разработки серверной части веб-приложений.
Flask
Flask — минималистичный бэкенд-фреймворк для Python.
Технологии: Python, WSGI-сервер, возможность интеграции ORM (SQLAlchemy).
Особенности:
- Легкий и модульный
- Без жесткой структуры — разработчик сам выбирает подход
- Широко используется для создания микросервисов и REST API
Подходит для приложений с м инимальными требованиями к серверной части.
Spring Boot
Spring Boot — бэкенд-фреймворк для разработки микросервисов и корпоративных приложений.
Технологии: Java/Kotlin, встроенные серверы (Tomcat, Jetty), интеграция с Hibernate для работы с БД.
Особенности:
- Использует принципы Spring (инъекция зависимостей, конфигурирование)
- Поддержка REST API, асинхронной обработки данных, мониторинга
- Spring Security для защиты приложений
Подходит для создания высоконагруженных и масштабируемых приложений.
Express.js
Express.js — бэкенд-фреймворк для Node.js, упрощающий создание серверных приложений.
Технологии: JavaScript/TypeScript, интеграция с базами данных через ORM (Sequelize, Mongoose).
Особенности:
- Простой API для маршрутизации
- Широкая экосистема middleware для обработки запросов, логирования, аутентификации
- Поддержка создания REST API и WebSocket
Подходит для серверов приложений и микросервисов с высокой производительностью.
Flutter
Flutter — кроссплатформенный фреймворк для мобильных, веб- и десктопных приложений.
Технологии: Dart, собственный графический движок (Skia), Material Design/Cupertino.
Особенности:
- Горячая перезагрузка (hot reload) для ускорения разработки
- Одинаковый интерфейс на Android и iOS
- Расширяемость через плагины и виджеты
Подходит для создания приложений с единым кодом для всех платформ.
Материалы
Статьи
- Фреймворк
- Что такое фреймворк: виды, задачи, правила выбора
- Фреймворк: особенности, преимущества, архитектура
- Что такое фреймворк и чем отличается от библиотеки, простое объяснение
- Для чего нужен фреймворк и как его выбрать
- Фреймворк: как выбрать подходящий для фронтэнда и бэкэнда
- Что такое фреймворк
- Фреймворки в веб-разработке — что это, какие существуют и для чего нужны
- Как выбрать фреймворк для бэкенда: мнения разработчиков
- О фреймворках
- Два frontend фреймворка. Два подхода
- Фреймворки — больше минусов чем плюсов
- А давайте убьем все фреймворки?
- Нам точно нужен фреймворк?
- 5 полезных фреймворков и библиотек для начинающего фронтенд-разработчика на конец 2024 года
- Популярные языки и фреймворки для разработки микросервисов: большой список
- Фреймворки для веб-разработки: обзор и сравнение
- Знакомство с FastAPI
Видео
- Фреймворк: это что и зачем нужен? А библиотеки?
- А у нас свой Agile велосипед: почему мы не используем популярные фреймворки (Сергей Гончарук, Флант)
- Что такое фреймворк, библиотека и CMS?
- Обзор популярных библиотек и фреймворков для JavaScript (GeekBrains)
- FrontTalk #1 - Обзор актуальных JS фреймворков и библиотек