

Euen Alarm: Rippen für iOS wurde in ein separates Repo verlegt
RIBS ist das plattformübergreifende Architektur-Framework hinter vielen mobilen Apps bei Uber. Der Name Ribs ist kurz für Router, Interaktor und Bauunternehmer, die Kernkomponenten dieser Architektur sind. Dieses Framework ist für mobile Apps mit einer großen Anzahl von Ingenieuren und verschachtelten Staaten ausgelegt.
Die Ribs -Architektur bietet:
- Gemeinsame Architektur in iOS und Android. Erstellen Sie plattformübergreifende Apps mit ähnlicher Architektur und ermöglichen es, iOS- und Android-Teams zu erstellen, um den Geschäftslogikcode zu überprüfen.
- Testbarkeit und Isolation. Der Unterricht muss leicht zu testen und zu begründen zu sein. Einzelne Rippenklassen haben unterschiedliche Verantwortlichkeiten wie: Routing, Geschäft, Logik anzeigen, Schöpfung. Außerdem wird die meisten Rippenlogik aus Kinderrippenlogik entkoppelt. Dadurch können Rippenklassen unabhängig voneinander getestet und begründet werden.
- Werkzeug für Entwicklerproduktivität. Die Rippen sind mit IDE -Werkzeugen um Codegenerierung, Speicherleckerkennung, statische Analyse und Laufzeitintegrationen ausgestattet - alle verbessern die Produktivität der Entwickler für große Teams oder kleine.
- Eine Architektur, die skaliert. Diese Architektur hat sich erwiesen, um Hunderte von Ingenieuren zu skalieren, die an derselben Codebasis und Apps mit Hunderten von Rippen arbeiten.
Dokumentation
Um mit den Rippen zu beginnen, finden Sie in der Dokumentation der RIBS. Dies beschreibt Schlüsselkonzepte zu Rippen, von dem, wofür sie sind, ihrer Struktur und ihrer gemeinsamen Anwendungsfälle.
Um mehr mit Rippen zu verkaufen, haben wir eine Reihe von Tutorials geschrieben, die Sie durch die Hauptaspekte der Architektur mit praktischen Beispielen führen.
Um die Hintergrundgeschichte darüber zu lesen, warum wir Rippen erstellt haben, sehen Sie diesen Blog -Beitrag, den wir beim ersten Mal in der Produktion geschrieben haben, und sehen Sie dieses kurze Video, in dem wir besprochen haben, wie die Ribs -Architektur funktioniert.
Was ist der Unterschied zwischen Rippen und MV*/Viper?
MVC, MVP, MVI, MVVM und Viper sind Architekturmuster. Rippen sind ein Framework. Was Rippen von Frameworks basierend auf MV*/Viper unterscheidet, ist:
- Business Logic treibt die App an, nicht den View -Baum . Anders als bei MV*/Viper muss eine Rippe keine Ansicht haben. Dies bedeutet, dass die App -Hierarchie von der Geschäftslogik angetrieben wird, nicht von dem View -Baum.
- Unabhängige Geschäftslogik und Bäume anzeigen . Rippen entkoppeln, wie die Geschäftslogikbereiche aus Sichthierarchien strukturiert werden. Dies ermöglicht es der Anwendung, einen tiefen Geschäftslogikbaum zu haben, der Geschäftslogikknoten isoliert und gleichzeitig eine flache Sichtweise aufrechterhalten kann, die Layouts, Animationen und Übergänge einfach macht.
Es gibt einige andere neuartige Dinge über Rippen. Diese könnten jedoch auch mit anderen MV*/Viper -Frameworks implementiert werden. Diese sind:
- Der plattformübergreifende Ansatz , damit iOS und Android-Architektur synchron bleiben.
- Werkzeug zur einfacheren Einführung in größeren Apps oder Teams. Tooling We Are Open Sourcing enthält IDE -Plugins für die Codegenerierung und die statische Codeanalyse.
- Starke Meinungen darüber, wie der Staat mithilfe von DI und RX kommuniziert werden sollte . Jede Rippe definiert ihre Abhängigkeiten und welche Abhängigkeiten sie von ihrem Elternteil benötigt. Übergeordnete Komponenten, die die Elternabhängigkeiten eines Kindes erfüllen, werden den Kinderbuorden als Konstruktorabhängigkeit zur Verfügung gestellt, um hierarchische DI -Scoping zu ermöglichen. Dies bedeutet, dass Informationen über diese Abhängigkeiten auf und ab im Baum kommuniziert werden.
Verwendung
- Klonen Sie dieses Repository
- Integrieren Sie Ihren bevorzugten Installationsmechanismus
Für die Verwendung des Werkzeugs, das sich um Rippen eingebaut hat, finden Sie in unserer Dokumentation im Bereich Tooling.
Installation für Android
Um das empfohlene Mindestaufbau für Rippen zu integrieren, fügen Sie Ihrem build.gradle Folgendes hinzu. 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 '
} Es sind auch eine Reihe von Erweiterungspaketen verfügbar
Verwandte Projekte
Wenn Sie Rippen mögen, lesen Sie andere verwandte Open -Source -Projekte unseres Teams:
- Ribs-IOS: Die iOS-Version von Rippen
- Nadel: Ein Safe-Safe-Safe-Abhängigkeits-Injektionsgerüst.
- Motiv: Eine Zusammenfassung auf dem Dolch, das einfachere APIs für verschachtelte Bereiche bietet.
- Swift -Parallelität: Eine Reihe von von Uber verwendeten Utility -Klassen, die von den äquivalenten Java.util.Concurrent -Paketklassen inspiriert sind.
- Swift Abstract Class: Eine leichte Bibliothek zusammen mit einer ausführbaren Datei, mit der sich eine sichere Entwicklung der Kompilierzeit für schnelle Projekte für schnelle Projekte ermöglicht.
- Swift Common: Gemeinsame Bibliotheken, die von diesem Satz von Swift Open Source -Projekten verwendet werden.
Lizenz
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.