

️ Оповещение: ребра для iOS были перемещены в отдельное репо
RIBS-это кроссплатформенная архитектурная структура, стоящая за многими мобильными приложениями в Uber. Название Ribs короткое для маршрутизатора, взаимодействия и строителя, которые являются основными компонентами этой архитектуры. Эта структура предназначена для мобильных приложений с большим количеством инженеров и вложенных штатов.
Архитектура ребер предоставляет:
- Общая архитектура в iOS и Android. Создайте кроссплатформенные приложения, которые имеют аналогичную архитектуру, позволяя командам iOS и Android к перекрестному обзору бизнес-логической код.
- Тестируемость и изоляция. Классы должны быть просты для единичного тестирования и разум в изоляции. Отдельные классы RIB имеют различные обязанности, такие как: маршрутизация, бизнес, просмотр логики, творение. Кроме того, большинство ребра логики отделено от логики детских ребер. Это делает классы RIB легко тестировать и разумный о себе.
- Инструменты для производительности разработчиков. Ребра поставляются с инструментом IDE вокруг генерации кода, обнаружения утечки памяти, статического анализа и интеграции времени выполнения - все, что повышает производительность разработчиков для крупных команд или небольших.
- Архитектура, которая масштабируется. Эта архитектура оказалась масштабированной до сотен инженеров, работающих над одной и той же кодовой базой и приложениями с сотнями ребер.
Документация
Чтобы начать с ребра, пожалуйста, обратитесь к документации Ribs. Это описывает ключевые понятия о ребрах, от того, для чего они представляют, их структура и общие варианты использования.
Чтобы получить больше рук с ребрами, мы написали серию учебных пособий, которые проводят вас через основные аспекты архитектуры с практическими примерами.
Чтобы прочитать о предыстории о том, почему мы создали ребра, посмотрите этот пост в блоге, который мы написали, когда выпустили ребра в производстве в первый раз, и посмотрим это короткое видео, где мы обсуждали, как работает архитектура ребер.
В чем разница между ребрами и MV*/Viper?
MVC, MVP, MVI, MVVM и VIPER являются архитектурными шаблонами. Ребра - это структура. Что отличает ребра от Frameworks на основе MV*/Viper:
- Бизнес -логика ведет приложение, а не дерево просмотра . В отличие от MV*/Viper, ребро не должно иметь представления. Это означает, что иерархия приложений обусловлена бизнес -логикой, а не деревом просмотра.
- Независимая бизнес -логика и просматривать деревья . Ребра отделяют, как бизнес -логика структурирована из иерархий просмотра. Это позволяет приложению иметь глубокое дерево бизнес -логики, изолируя узлы бизнес -логики, одновременно сохраняя неглубокую иерархию, что позволяет легко легкости, анимации и переходов.
Есть некоторые другие романы о ребрах. Тем не менее, они также могут быть реализованы с другими фреймворками MV*/Viper. Это:
- Кроссплатформенный подход , позволяющий iOS и архитектуре Android оставаться в синхронизации.
- Инструмент для облегчения внедрения в более крупных приложениях или командах. Инструменты, которые мы являемся открытым источником, включают плагины IDE для генерации кода и анализа статического кода.
- Сильные мнения о том, как должно быть сообщено состояние , используя DI и RX. Каждое ребра определяет его зависимости и какие зависимости ему нужны от своего родителя. Родительские компоненты, которые выполняют зависимости от родителей ребенка, предоставляются детским строителям в качестве зависимости для конструктора, чтобы обеспечить иерархическую диск. Это означает, что информация передается через эти зависимости вверх и вниз по дереву.
Использование
- Клонировать это хранилище
- Интегрировать использование вашего предпочтительного механизма установки
Для использования инструмента, построенного вокруг ребер, см. Раздел инструментов в нашей документации.
Установка для Android
Для интеграции рекомендуемой минимальной настройки для ребер добавьте следующее в свой build.gradle .
dependencies {
annotationProcessor ' com.uber.rib:rib-compiler-test:0.16.3 '
implementation ' com.uber.rib:rib-android:0.16.3 '
testImplementation ' com.uber.rib:rib-test:0.16.3 '
} Также доступно ряд пакетов расширения, включая расширения Kotlin, поддержка Jetpack Compose, поддержка Coroutines
Связанные проекты
Если вам нравятся ребра, ознакомьтесь с другими связанными проектами с открытым исходным кодом от нашей команды:
- Ribs-IOS: версия ребер iOS
- Игла: безопасная структура инъекции впрыскивания зависимости от времени компиляции.
- Мотив: реферат на вершине кинжала, предлагающий более простые API для вложенных областей.
- Swift Complondency: набор классов утилиты для параллелистики, используемых Uber, вдохновленными эквивалентными классами пакетов Java.util.concurrent.
- Swift Abstract Class: легкая библиотека, а также исполняемый файл, который позволяет безопасному абстрактному классу для составного времени для проектов Swift.
- Swift Common: общие библиотеки, используемые этим набором быстрых проектов с открытым исходным кодом.
Лицензия
Copyright (C) 2017 Uber Technologies
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.