ReactXP vorstellen

6. April 2017 von Eric Traut


Das Skype-Team bei Microsoft freut sich, ReactXP als Open Source freizugeben, eine Bibliothek, die wir für die plattformübergreifende Entwicklung entwickelt haben. Sie baut auf React JS und React Native auf und ermöglicht es Ihnen, Apps zu erstellen, die mit einer einzigen Codebasis sowohl auf dem Web als auch auf nativen Plattformen laufen.

Geschichte von ReactXP

Skype läuft auf vielen Plattformen – Desktops, Laptops, Mobiltelefonen, Tablets, Browsern und sogar Fernsehern und Autos. Historisch gesehen wurde die Benutzeroberfläche für jeden Skype-Client von Grund auf in der „nativen“ Sprache jeder Plattform neu geschrieben (Objective C unter iOS, Java unter Android, HTML und JavaScript im Web usw.). Vor etwa einem Jahr begannen wir mit einer Anstrengung, Skype neu zu erfinden. Wir entschieden, dass wir einen neuen Ansatz für die Client-Entwicklung verfolgen mussten – einen, der unsere technische Effizienz und Agilität maximieren würde. Wir wollten davon wegkommen, jede neue Funktion mehrmals in verschiedenen Codebasen zu implementieren. Wir wollten die Doppelarbeit minimieren. Wir untersuchten eine Reihe verfügbarer Optionen. Web-Wrapper wie Cordova (PhoneGap) boten nicht die Leistung oder das „native Gefühl“, nach dem wir suchten. Xamarin, eine großartige Lösung für die plattformübergreifende mobile Entwicklung, half uns im Web nicht weiter. Letztendlich entschieden wir uns, unseren neuen Client auf Basis von React JS und React Native zu entwickeln. ReactXP war unser Versuch, die Verhaltensweisen und Schnittstellen zwischen React JS und den verschiedenen React Native-Implementierungen zu vereinheitlichen. (Wir bezeichneten es ursprünglich als ReactX, daher die Verweise auf diesen Begriff in den Quellen.)

Das Skype-Team leistete auch viele Beiträge zur React Native-Codebasis, um Fehler zu beheben, die Leistung zu verbessern und Verhaltensunterschiede zwischen React JS und React Native zu beseitigen. Der größte Beitrag war eine umfassende Überarbeitung der React Native-Layout-Engine. Die ursprüngliche Implementierung folgte lose dem W3C-Flexbox-Standard, wich aber in einigen wichtigen Punkten vom Standard ab. Die aktualisierte Layout-Engine liefert nun zuverlässig das gleiche Layout wie alle konformen Webbrowser.

Designphilosophie von ReactXP

ReactXP wurde als dünne, leichtgewichtige plattformübergreifende Abstraktionsschicht auf Basis von React und React Native konzipiert. Es implementiert ein Dutzend grundlegender Komponenten, mit denen komplexere Komponenten aufgebaut werden können. Außerdem implementiert es eine Sammlung von API-Namespaces, die von den meisten Anwendungen benötigt werden.

ReactXP unterstützt derzeit die folgenden Plattformen: Web (React JS), iOS (React Native), Android (React Native) und Windows UWP (React Native). Windows UWP befindet sich noch in der Entwicklung, und einige Komponenten und APIs sind noch nicht vollständig.

Der ReactXP-„Kern“ enthält nur allgemeine Funktionalitäten. Speziellere plattformübergreifende Funktionalitäten können in Form von ReactXP-Erweiterungen geliefert werden. Das Skype-Team hat etwa zwanzig solcher Erweiterungen entwickelt, und wir planen, einige davon im Laufe der Zeit als Open Source freizugeben. Erweiterungen ermöglichen es uns, ReactXP zu erweitern, ohne dessen Umfang oder Komplexität zu erhöhen.

Bei der Entscheidung, welche Props und Style-Attribute in ReactXP verfügbar gemacht werden sollten, haben wir versucht, uns an diejenigen zu halten, die auf allen unterstützten Plattformen einheitlich implementiert werden konnten. Wir machen beispielsweise keine HTML-spezifischen Props oder CSS-spezifischen Attribute verfügbar, die nicht auch in React Native unterstützt werden. In einigen Fällen haben wir beschlossen, ausgewählte plattformspezifische Props oder Style-Attribute verfügbar zu machen und sie als „no ops“ auf anderen Plattformen zu dokumentieren. Dies geschah jedoch nur, wenn wir keine andere gangbare Lösung finden konnten.

Zukunft von ReactXP

Das Skype-Team wird ReactXP weiterhin warten und weiterentwickeln. Andere Teams bei Microsoft beginnen ebenfalls, es zu nutzen und Beiträge zu leisten. Heute öffnen wir es für die breitere Open-Source-Community. Wir hoffen, dass andere es nützlich finden werden, und wir freuen uns über Feedback und Beiträge.

Wir planen, ungefähr monatlich eine neue Version von ReactXP zu veröffentlichen, die sich grob an den React Native-Releases orientiert.