

️ Alerte: les côtes pour iOS ont été déplacées vers un repo séparé
Ribs est le cadre d'architecture multiplateforme derrière de nombreuses applications mobiles à Uber. Le nom des côtes est abrégé pour le routeur, l'interacteur et le constructeur, qui sont des composants principaux de cette architecture. Ce cadre est conçu pour les applications mobiles avec un grand nombre d'ingénieurs et d'états imbriqués.
L'architecture des côtes fournit:
- Architecture partagée sur iOS et Android. Créez des applications multiplateformes qui ont une architecture similaire, permettant aux équipes iOS et Android de réexaminer le code logique métier.
- Testabilité et isolement. Les classes doivent être faciles à tester unité et à des raisons de l'isolement. Les classes de côtes individuelles ont des responsabilités distinctes comme: le routage, les affaires, la logique de vue, la création. De plus, la plupart des logiques des côtes sont découplées de la logique des côtes de l'enfant. Cela rend les classes de côtes faciles à tester et à la raison de indépendance.
- Outillage pour la productivité des développeurs. Les côtes sont livrées avec des outils IDE autour de la génération de code, de la détection des fuites de mémoire, de l'analyse statique et des intégrations d'exécution - tous qui améliorent la productivité des développeurs pour les grandes équipes ou les petites.
- Une architecture qui évolue. Cette architecture s'est avérée s'étendre à des centaines d'ingénieurs travaillant sur la même base de code et les mêmes applications avec des centaines de côtes.
Documentation
Pour commencer avec les côtes, veuillez vous référer à la documentation des côtes. Ceci décrit les concepts clés sur les côtes, d'après ce qu'ils sont pour leur structure et leurs cas d'utilisation courants.
Pour nous mettre en main avec les côtes, nous avons écrit une série de tutoriels qui vous font traverser les principaux aspects de l'architecture avec des exemples pratiques.
Pour en savoir plus sur la trame de fond sur les raisons pour lesquelles nous avons créé des côtes, voir ce billet de blog que nous avons écrit lors de la publication des côtes en production la première fois et voyez cette courte vidéo où nous avons discuté du fonctionnement de l'architecture des côtes.
Quelle est la différence entre les côtes et mv * / vipère?
MVC, MVP, MVI, MVVM et VIPER sont des modèles d'architecture. Ribs est un cadre. Ce qui différencie les côtes des cadres basés sur MV * / Viper est:
- Business Logic pilote l'application, pas l'arbre de vue . Contrairement à MV * / Viper, une côte n'a pas besoin d'avoir une vue. Cela signifie que la hiérarchie des applications est motivée par la logique métier, pas par l'arborescence de vue.
- Logique commerciale indépendante et afficher les arbres . Les côtes découplent comment les étendues de logique commerciale sont structurées à partir des hiérarchies de vue. Cela permet à l'application d'avoir un arbre logique professionnel profond, isolant les nœuds de logique métier, tout en maintenant facilement une hiérarchie de vue peu profonde.
Il y a d'autres choses nouvelles sur les côtes. Cependant, ceux-ci pourraient également être mis en œuvre avec d'autres cadres MV * / Viper. Ce sont:
- Approche multiplateforme , permettant à l'architecture iOS et Android de rester en synchronisation.
- Outillage pour une adoption plus facile sur les plus grandes applications ou équipes. Outillage Nous sommes un approvisionnement ouvert comprend les plugins IDE pour la génération de code et l'analyse de code statique.
- Des opinions fortes sur la façon dont l'État doit être communiqué , en utilisant DI et RX. Chaque côte définit ses dépendances et les dépendances dont il a besoin de son parent. Les composants parents qui remplissent les dépendances des parents d'un enfant sont fournis aux constructeurs d'enfants en tant que dépendance du constructeur pour permettre la diffusion de DI hiérarchique. Cela signifie que les informations sont communiquées via ces dépendances de haut en bas de l'arbre.
Usage
- Cloner ce référentiel
- Intégrez en utilisant votre mécanisme d'installation préféré
Pour utiliser l'outillage construit autour des côtes, veuillez consulter la section d'outillage de notre documentation.
Installation pour Android
Pour intégrer la configuration minimale recommandée pour les côtes, ajoutez ce qui suit à votre 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 '
} Un certain nombre de packages d'extension sont également disponibles, notamment les extensions de Kotlin, le support de composition Jetpack, le support Coroutines
Projets connexes
Si vous aimez les côtes, consultez d'autres projets open source connexes de notre équipe:
- Ribs-ios: la version iOS des côtes
- Aiguille: un cadre d'injection de dépendance rapide en toute sécurité.
- Motif: Un résumé en plus de poignard offrant des API plus simples aux portées imbriquées.
- SWIFT MONCURENCE: Un ensemble de classes d'utilité de concurrence utilisées par Uber, inspirées par les classes de package Java.util.util.Util.Concurrent.
- Swift Abstract Class: une bibliothèque de poids légère ainsi qu'un exécutable qui permet un développement de classe abstrait sécurisé en temps de compilation pour les projets Swift.
- Swift Common: Bibliothèques communes utilisées par cet ensemble de projets open source Swift.
Licence
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.