

️ Alerta: las costillas para iOS se han trasladado a un repositorio separado
Ribs es el marco de arquitectura multiplataforma detrás de muchas aplicaciones móviles en Uber. El nombre de las costillas es abreviatura de enrutador, interactor y constructor, que son componentes centrales de esta arquitectura. Este marco está diseñado para aplicaciones móviles con una gran cantidad de ingenieros y estados anidados.
La arquitectura de las costillas proporciona:
- Arquitectura compartida en iOS y Android. Cree aplicaciones multiplataforma que tengan una arquitectura similar, lo que permite a los equipos de iOS y Android para revisar el código lógico comercial.
- Probabilidad y aislamiento. Las clases deben ser fáciles de probar y razonar sobre aislamiento. Las clases de costillas individuales tienen responsabilidades distintas como: enrutamiento, negocio, ver lógica, creación. Además, la mayoría de la lógica de costillas se desacopla de la lógica de las costillas infantiles. Esto hace que las clases de costillas sean fáciles de probar y razonen de forma independiente.
- Herramientas para la productividad del desarrollador. Las costillas vienen con herramientas IDE alrededor de la generación de códigos, detección de fugas de memoria, análisis estático e integraciones de tiempo de ejecución, todas las cuales mejoran la productividad del desarrollador para equipos grandes o pequeños.
- Una arquitectura que escala. Esta arquitectura ha demostrado escalar a cientos de ingenieros que trabajan en la misma base de código y aplicaciones con cientos de costillas.
Documentación
Para comenzar con las costillas, consulte la documentación de las costillas. Esto describe conceptos clave sobre las costillas, por lo que son, su estructura y su uso común.
Para obtener más manos con las costillas, hemos escrito una serie de tutoriales que lo manejan a través de los aspectos principales de la arquitectura con ejemplos prácticos.
Para leer sobre la historia de fondo sobre por qué creamos costillas, vea esta publicación de blog que escribimos al lanzar costillas en producción la primera vez y ver este breve video donde discutimos cómo funciona la arquitectura de las costillas.
¿Cuál es la diferencia entre costillas y MV*/Viper?
MVC, MVP, MVI, MVVM y VIPER son patrones de arquitectura. Las costillas es un marco. Lo que diferencia las costillas de los marcos basados en MV*/Viper es:
- La lógica de negocios impulsa la aplicación, no el árbol de la vista . A diferencia de MV*/Viper, una costilla no tiene que tener una vista. Esto significa que la jerarquía de aplicaciones está impulsada por la lógica comercial, no por el árbol de la vista.
- Lógica de negocios independiente y árboles de vista . Las costillas decouple cómo se estructuran los ámbitos de la lógica de negocios a partir de las jerarquías de vista. Esto permite que la aplicación tenga un árbol lógico comercial profundo, aislar nodos lógicos comerciales, mientras mantiene una jerarquía de vista poco profunda que facilita los diseños, animaciones y transiciones.
Hay otras cosas novedosas sobre las costillas. Sin embargo, estos también podrían implementarse con otros marcos MV*/Viper. Estos son:
- Enfoque multiplataforma , permitiendo que la arquitectura de iOS y Android permanezca sincronizada.
- Herramientas para una adopción más fácil en aplicaciones o equipos más grandes. Herramientas Estamos abiertos El abastecimiento incluye complementos IDE para la generación de código y el análisis de código estático.
- Fuertes opiniones sobre cómo se debe comunicar el estado , utilizando DI y RX. Cada costilla define sus dependencias y qué dependencias necesita de su padre. Los componentes principales que cumplen las dependencias de los padres de un niño se proporcionan a los constructores de niños como una dependencia del constructor para permitir el alcance jerárquico. Esto significa que la información se comunica a través de estas dependencias en el árbol.
Uso
- Clon este repositorio
- Integre el uso de su mecanismo de instalación preferido
Para el uso de las herramientas construidas alrededor de las costillas, consulte la sección de herramientas en nuestra documentación.
Instalación para Android
Para integrar la configuración mínima recomendada para las costillas, agregue lo siguiente a su 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 '
} También hay una serie de paquetes de extensión disponibles, incluidas las extensiones de Kotlin, el soporte de composición de jetpack, el soporte de coroutines
Proyectos relacionados
Si le gustan las costillas, consulte otros proyectos de código abierto relacionados de nuestro equipo:
- Ribs-Ies: la versión iOS de las costillas
- Aguja: un marco de inyección de dependencia rápida segura en el tiempo de compilación.
- Motif: un resumen sobre la daga que ofrece API más simples para ámbitos anidados.
- Concurrencia Swift: un conjunto de clases de utilidad de concurrencia utilizadas por Uber, inspiradas en las clases de paquetes Java.util.concurrent equivalentes.
- Swift Abstract Clase: una biblioteca de peso ligero junto con un ejecutable que permite el desarrollo de clase abstracta de compilación de tiempo seguro para proyectos Swift.
- Swift Common: bibliotecas comunes utilizadas por este conjunto de proyectos de código abierto rápidas.
Licencia
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.