Перейти к основному содержимому

Фреймворки

Фреймворк — готовая программная структура (каркас) для разработки ПО, которая:

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

У каждого фреймворка свой набор инструментов и свой функционал.

Зачем нужен

  • чтобы снизить время разработки за счет готовых инструментов и шаблонов
  • для единообразия кода
  • помогают решать базовые задачи (например, управление сессиями или безопасностью)

Виды фреймворков

  • Фронтенд: для разработки пользовательских интерфейсов
    Примеры: 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.

Минусы фреймворков

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

Как аналитик может использовать фреймворки

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

  2. Прототипирование решений
    С помощью фронтенд-фреймворков (React или Angular) можно создать прототип пользовательского интерфейса.

    • Для системы управления задачами можно сделать интерфейс с доской Kanban.
    • Заказчик сможет протестировать функционал на раннем этапе.
  3. Документирование требований
    В ТЗ можно указать, что бизнес-логика реализуется с использованием Django.
    Если необходимо разработать REST API, можно описать, какие эндпоинты и модели данных будут поддерживаться, согласно возможностям Django REST.

  4. Анализ интеграций
    Предложить выбор подходящего фреймворка:

    • Для системы обработки больших массивов данных можно обосновать выбор 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
  • Расширяемость через плагины и виджеты
    Подходит для создания приложений с единым кодом для всех платформ.

Материалы

Статьи

  1. Фреймворк
  2. Что такое фреймворк: виды, задачи, правила выбора
  3. Фреймворк: особенности, преимущества, архитектура
  4. Что такое фреймворк и чем отличается от библиотеки, простое объяснение
  5. Для чего нужен фреймворк и как его выбрать
  6. Фреймворк: как выбрать подходящий для фронтэнда и бэкэнда
  7. Что такое фреймворк
  8. Фреймворки в веб-разработке — что это, какие существуют и для чего нужны
  9. Как выбрать фреймворк для бэкенда: мнения разработчиков
  10. О фреймворках
  11. Два frontend фреймворка. Два подхода
  12. Фреймворки — больше минусов чем плюсов
  13. А давайте убьем все фреймворки?
  14. Нам точно нужен фреймворк?
  15. 5 полезных фреймворков и библиотек для начинающего фронтенд-разработчика на конец 2024 года
  16. Популярные языки и фреймворки для разработки микросервисов: большой список
  17. Фреймворки для веб-разработки: обзор и сравнение
  18. Знакомство с FastAPI

Видео

  1. Фреймворк: это что и зачем нужен? А библиотеки?
  2. А у нас свой Agile велосипед: почему мы не используем популярные фреймворки (Сергей Гончарук, Флант)
  3. Что такое фреймворк, библиотека и CMS?
  4. Обзор популярных библиотек и фреймворков для JavaScript (GeekBrains)
  5. FrontTalk #1 - Обзор актуальных JS фреймворков и библиотек