Монорепозиторий для React и React Native — часть 1

Введение:

Архитектура Monorepo завоевала популярность среди разработчиков для управления крупномасштабными проектами, особенно с приложениями React и React Native. Организуя код в несколько пакетов, разработчики могут добиться большей модульности, совместного использования кода и общей эффективности разработки.

Я собираюсь разделить статью на 2 части, первая часть будет объяснять больше о концепциях и архитектуре. Во второй части будет пошаговое объяснение реализации архитектуры с использованием рабочих пространств lerna или yarn.

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

Как показано на приведенной выше диаграмме архитектуры, он разделен на 5 пакетов, значение каждого пакета будет объяснено один за другим.

  1. Создание пакета веб-приложения React:

Первый пакет в нашем монорепозитории посвящен веб-приложению React. Здесь вы можете настроить свое приложение с помощью Create React App (CRA) или любой другой предпочтительной конфигурации. Этот пакет будет содержать все необходимые файлы, компоненты и ресурсы, характерные для веб-платформы. Этот пакет будет в основном содержать компоненты пользовательского интерфейса/представления, необходимые для пользовательского интерфейса.

2. Настройка мобильного пакета React Native:

Второй пакет без общего доступа ориентирован на мобильное приложение React Native. Вы можете использовать React Native CLI для настройки мобильного пакета. Этот пакет включает в себя все компоненты View, необходимые для пользовательского интерфейса. Благодаря кроссплатформенным возможностям React Native разработчики могут один раз написать код и развернуть его на нескольких устройствах, экономя время и усилия.

3. Пакет Redux для управления состоянием:

Третий пакет — это общий пакет, который занимается управлением состоянием с помощью Redux. Redux предоставляет контейнер с предсказуемым состоянием, который может совместно использоваться веб-приложением React и мобильным приложением React Native. Инкапсулируя состояние и логику приложения, Redux обеспечивает эффективный поток данных и помогает поддерживать согласованное взаимодействие с пользователем на разных платформах. Пакет Redux может содержать действия, редукторы и селекторы, которые обрабатывают обновления состояния и извлечение данных.

4. Сетевой пакет для вызовов API:

Четвертый общий пакет ориентирован на сетевое взаимодействие и вызовы API. Этот пакет инкапсулирует логику и утилиты, необходимые для создания HTTP-запросов и обработки ответов. Вы можете выбрать популярные библиотеки, такие как Axios или Retrofit, в зависимости от требований вашей платформы. Централизуя сетевой код в этом пакете, вы обеспечиваете согласованную и надежную выборку данных как на веб-платформах, так и на мобильных платформах.

5. Пакет услуг для служебных функций и бизнес-логики:

Пятый общий пакет предназначен для служебных функций и общей логики бизнес-сервисов. Здесь вы можете писать повторно используемые функции, вспомогательные классы и бизнес-сервисы, которые используются как веб-приложением React, так и мобильным приложением React Native. Совместно используя этот пакет, вы устраняете дублирование и поддерживаете единый источник достоверной информации для основных функций, таких как аутентификация, обработка данных и проверка.

Заключение:

Архитектура монорепозитория с пятью отдельными пакетами может обеспечить организованную и эффективную среду разработки для приложений React и React Native. Разделяя специфичный для платформы код на отдельные пакеты и используя общие пакеты для управления состоянием, сетевой связи и сервисной логики, вы можете улучшить повторное использование кода, удобство сопровождения и скорость разработки. Этот модульный подход позволяет командам беспрепятственно сотрудничать и создавать надежные приложения для веб-платформ и мобильных платформ.