wintersm1th / RSLang

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

React

Библиотека для декларативного создания на клиенте пользовательского интерфейса

Плюсы

  • Скорость разработки, унифицированный подход к созданию интерфейса
  • Реактивность - отсутствие необходимости следить за обновлениями состояния и обновлять представления
  • Декларативность - древовидная структура компонентов и простота из переиспользования

Минусы

  • Необходимость изучения библиотеки
  • Для комфортного использования необходим JSX, выглядит чуждо в JS/TS коде
  • Сложность передачи состояния через уровни дерева компонентов

Redux

Библиотека для создания контролируемого глобального состояния

Плюсы

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

Минусы

  • Синонимом глобального состояние является "глобальная область видимости"
  • Слишком строгий контроль за состоянием, из reduces нельзя сделать dispatch другого action.
  • Пункт выше решается использованием redux-thunk который нарушает всевозможные органичения redux буквально превращая его в глобальную область видимости

Material UI

Библиотека компонентов для построения интерфейсов

Плюсы

  • Очень быстрая скорость разработки интерфейса
  • Унифицированный интерфейс для всех частей приложения
  • Удобство кастомизации

Минусы

  • Требует отдельного изучения и практики
  • Кастомизация ограничена
  • Использование ведет к потерям производительности и увеличению размера приложения

Inversify

DI контейнер для реализация принципа Dependency Inversion

Плюсы

  • Берет на себя всю работу связанную с предоставлением реализаций интерфейсов заинтересованным классам
  • Удобно использовать TS декораторы @inject и @injectable
  • Ооооочень понравилась

  • Маркировка сущностей в контейнере осуществляется через сторонний глобальный для приложения enum с типами.
  • В пользовательское приложение должен быть включен пакет reflect-metadata для добавления информации о классах

About


Languages

Language:TypeScript 92.6%Language:CSS 4.1%Language:JavaScript 2.5%Language:HTML 0.7%Language:SCSS 0.1%