Neu vs. Alte Architektur
React Natives Neue Architektur ist mit Version 0.76 zum Standard geworden und bringt viele Framework-Verbesserungen mit sich, darunter das fortschrittliche Rendering-System Fabric. Während React Native für Windows noch nicht ganz bereit ist, die Neue Architektur zum Standard zu machen, haben wir hart gearbeitet und freuen uns, einen ersten Einblick in die Übernahme unter Windows zu geben.
Wichtig: Zu diesem Zeitpunkt unterstützt die Neue Architektur von React Native für Windows einige wichtige Einschränkungen und eignet sich am besten für Early Adopters, die mit einem Work-in-Progress-Erlebnis und unvollständiger Dokumentation vertraut sind. Für diejenigen, die sich damit auseinandersetzen möchten, bietet die Neue Architektur einen Einblick in die spannende Zukunft der React Native Windows-Entwicklung.
Von UWP zu WinAppSDK
Unter Windows wurde für die Implementierung des (alten Architektur) Paper-Renderers die Universal Windows Platform verwendet. Um die Anforderungen des neuen Fabric-Renderers zu erfüllen, verwendet die Windows-Implementierung nun das moderne Windows App SDK. Diese Entwicklung ermöglicht es uns, die plattformübergreifende Rendering-Logik von React Native zu nutzen und gleichzeitig die plattformspezifischen Codeteile für Windows besser zu implementieren.
Das bedeutet auch, dass alle React Native für Windows-Apps mit der Neuen Architektur nun Win32-, Windows App SDK-basierte Anwendungen sein werden. Dies entspricht den aktuellen Empfehlungen für die Windows-App-Entwicklung und bietet React Native für Windows-Entwicklern einen besseren Zugriff auf die neuesten Windows-Frameworks.
Alle React Native für Windows-Apps mit der alten Architektur bleiben UWP-Anwendungen. Es ist weiterhin möglich und unterstützt, Apps zu erstellen und zu pflegen, die auf die alte Architektur und UWP abzielen (siehe die Liste der immer noch verfügbaren „alten" Vorlagen).
Bitte beachten Sie jedoch, dass es zwar keine unmittelbaren Pläne gibt, die Unterstützung für Apps mit alter Architektur einzustellen, aber fast alle zukünftigen Investitionen auf die Neue Architektur konzentriert sind. Da React Native irgendwann die Unterstützung für die alte Architektur einstellen wird, wird dies auch für React Native für Windows gelten. Wir werden klare Migrationsanleitungen für Apps bereitstellen, sobald die Unterstützung für die Neue Architektur besser etabliert ist.
Wichtig: Es gibt keine Pläne, die Neue Architektur auf UWP oder die alte Architektur auf WinAppSDK zu unterstützen. Frühere experimentelle Funktionen, die eines dieser Szenarien ermöglichten, werden nicht offiziell unterstützt.
Weitere Informationen zu den Gründen für die Umstellung von UWP auf WinAppSDK finden Sie im FAQ unten.
Erstellen einer Anwendung mit der Neuen Architektur
Das Starten eines React Native Windows-Projekts mit der neuen Architektur ist einfach! Befolgen Sie die Schritte in unserem Getting Started-Leitfaden, aber stellen Sie sicher, dass Sie eine New Architecture-Vorlage verwenden, wenn Sie Ihr Projekt mit init-windows initialisieren.
Zum Beispiel, wenn Sie zuvor ein Projekt mit der alten Architektur eingerichtet haben, haben Sie möglicherweise einen Befehl wie diesen verwendet
yarn react-native init-windows --overwrite
Um ein Projekt mit der Neuen Architektur zu erstellen, verwenden Sie denselben Befehl, stellen Sie aber sicher, dass Sie eine New Architecture-Vorlage angeben, z. B. cpp-app
yarn react-native init-windows --template cpp-app --overwrite
Hinweis: Derzeit sind nur zwei unterstützte New Architecture-Vorlagen verfügbar:
cpp-appundcpp-lib.
Entwicklungsstatus
Das Gute
Beginnend mit dieser Vorschau der Neuen Architektur ist es nun möglich, eine Anwendung mit der Neuen Architektur zu erstellen, indem Sie die obigen Schritte befolgen und die neue Vorlage cpp-app verwenden. Entwickler sollten erwarten, dass die überwiegende Mehrheit der Kernkomponenten, APIs und Funktionalitäten in React Native (d. h. aus dem Paket react-native) bereits in React Native für Windows verfügbar ist.
Im Hinblick auf die Build-Entwicklererfahrung sollten Sie sich auf drastisch verbesserte Build-Geschwindigkeiten und reduzierte Anforderungen an Entwicklermaschinen einstellen, da wir standardmäßig vorkompilierte Binärdateien für Projekte mit der Neuen Architektur verwenden.
Das Nicht-So-Gute
Es gibt jedoch noch einige wichtige Lücken, insbesondere im Hinblick auf die Unterstützung von Community-Modulen. Erstens werden Community-Module, die UI-Komponenten durch die Implementierung neuer UIs (z. B. über die Paper IViewManager-Schnittstellen) bereitstellen, nicht mit Apps mit der Neuen Architektur funktionieren. Diese Module müssen neue Fabric ComponentViews implementieren, und obwohl dies technisch möglich ist, ist die Erfahrung noch nicht für eine breite Einführung bereit.
Die Situation ist besser für nicht-UI-Community-Module. Einige rein nicht-UI-Community-Module, die für die bestehenden Apps mit alter Architektur entwickelt wurden, funktionieren möglicherweise immer noch "out-of-the-box" mit Ihren Apps mit neuer Architektur. Aufgrund des unterschiedlichen Zustands der Windows-Unterstützung in Community-Modulen können Sie jedoch feststellen, dass selbst einige dieser nicht-UI-Module aktualisiert werden müssen.
Hinweis: Wir haben eine neue Bibliotheksvorlage,
cpp-lib, die zum Erstellen von nicht-UI-Community-Modulen verwendet werden kann, die auf die Neue Architektur abzielen. Es gibt sogar Anpassungen innerhalb dieser Vorlage, um gleichzeitig alte Architektur-Apps mit einer Codebasis zu unterstützen. Die Vorlage enthält jedoch noch keine Beispiele für die Implementierung von benutzerdefinierten UIs für eine der Architekturen. Das Ziel ist eine einzige Bibliotheksvorlage, die sowohl alte als auch neue, UI und nicht-UI unterstützt, mit Beispielen, aber sie ist noch nicht fertig.
Verbleibende Arbeit
Unsere Arbeit an der Neuen Architektur von React Native für Windows folgt einer Reihe von Meilensteinen, die zur Steuerung unserer Entwicklungsprioritäten konzipiert sind. Derzeit konzentrieren wir uns auf die Ermöglichung von Community-Modulen neben der vollständigen API-Parität und der Verbesserung von Barrierefreiheitsfunktionen.
Um den Echtzeitfortschritt und spezifische Meilensteine zu verfolgen, besuchen Sie unser Issue zur Neuen Architektur für React Native für Windows. Diese Seite wird regelmäßig mit unseren neuesten Entwicklungszielen, Roadmap-Elementen und Bereichen, an denen wir aktiv arbeiten, aktualisiert. Wir ermutigen Entwickler, dort nach dem neuesten Stand dessen zu suchen, was verfügbar ist, was in Arbeit ist und was als Nächstes kommt.
React Native Komponenten-Parität
Die Neue Architektur führt die bedeutendsten Updates bei der UI-Darstellung ein. Durch den Wechsel von UWP zu WinAppSDK erhalten wir die Flexibilität, zuvor nicht verfügbare Komponenten zu implementieren und gleichzeitig die Paritätslücke für bestehende Komponenten zu verringern.
Die vielleicht bemerkenswerteste Änderung ist die endgültige Implementierung von React Natives Modal, wodurch die Notwendigkeit entfällt, die Windows-spezifischen Komponenten Flyout oder Popup zu verwenden.
Unten finden Sie eine Liste der Komponenten, die wir in der Neuen Architektur unterstützen wollen.
Unterstützte Komponenten
Der Plan ist, alle React Native Kern-Hostkomponenten in React Native für Windows zu unterstützen. Jede Komponente unten verlinkt zur entsprechenden Issue-Beschriftung in unserem GitHub-Repository, die den Fortschritt ihrer Parität mit der Neuen Architektur verfolgt.
Nicht unterstützte Komponenten
Die folgenden Komponenten wurden für React Native für Windows mit alter Architektur erstellt und aufgenommen, um die besonderen Kompatibilitätsprobleme zu lösen, die durch die Verwendung von UWP XAML entstehen. Es gibt keine Pläne, integrierte Unterstützung für diese Windows-spezifischen Komponenten in React Native für Windows aufzunehmen (obwohl sie möglicherweise von zukünftigen Community-Modulen unterstützt werden).
Senden Sie uns Ihr Feedback
Sie werden sicher auf einige Hindernisse, Herausforderungen und Kanten stoßen, wenn Sie die Neue Architektur ausprobieren. Wir haben bereits viele Issues protokolliert, die Eigenschaften und Funktionen auf unserer To-Do-Liste verfolgen, aber wenn Sie auf signifikante Bedenken stoßen, die noch nicht abgedeckt sind, öffnen Sie bitte ein Issue im react-native-windows-Repository. Sie können auch Kommentare zu bestehenden Issues hinterlassen, um uns zu helfen, zu priorisieren, was wir zuerst angehen!
FAQ
Warum die Umstellung von UWP auf Windows App SDK?
Jahrelang hat React Native für Windows Windows-Apps mit der Universal Windows Platform und ihren XAML-Technologien erstellt.
Diese Implementierung war jedoch nie perfekt. UWP XAML hat seine eigenen Erwartungen und Einschränkungen bei der Darstellung von UIs, die oft mit den Erwartungen von React Native in Konflikt geraten sind. Dies hat immer eine bestimmte Klasse von Problemen hervorgerufen, die einfach nicht von React Native für Windows gelöst werden konnten.
Darüber hinaus wären viele Anforderungen der Neuen Architektur, insbesondere die schnellere, poliertere UI, die durch den Fabric-Renderer ermöglicht wird, ohne umfangreiche, grundlegende Änderungen an UWP XAML nicht möglich.
Nun ist die aktuelle Empfehlung für neue Windows-Apps die Erstellung mit dem Windows App SDK. Es gibt viele Vorteile für Windows-Entwickler, ihre Apps von UWP auf das Windows App SDK zu migrieren. Am wichtigsten für React Native für Windows ist, dass uns das Windows App SDK die Werkzeuge gibt, um die Neue Architektur richtig zu implementieren.
Warum die Umstellung von XAML auf Composition?
Es ist nicht immer möglich, das XAML-Framework, geschweige denn bestimmte Steuerelemente, an die API-Anforderungen und Erwartungen von React Native anzupassen. Dank des Windows App SDK können wir nun jedoch "nach unten" gehen und die Ebene der UI-Primitive unter XAML nutzen, auch bekannt als Composition oder der Windows App SDK Scene Graph.
Anstatt also zu versuchen, React Native-Komponenten mit XAML-Steuerelementen zu implementieren (und vielleicht mit ihrem Standardverhalten zu kämpfen), können wir diese Komponenten nun direkter in Composition implementieren, was uns die Möglichkeit gibt, uns an die Erwartungen von React Native anstelle von XAML anzupassen.
Was, wenn ich immer noch XAML-Steuerelemente benötige/möchte?
Wir verstehen, dass Kunden möglicherweise immer noch XAML-Steuerelemente verwenden möchten (sei es eines der umfangreichen Steuerelemente, die in WinUI 3 des Windows App SDK enthalten sind, oder eigene benutzerdefinierte Steuerelemente) innerhalb der UI ihrer React Native für Windows-App.
Wir arbeiten aktiv daran, dies zu ermöglichen, aber es ist noch nicht ganz produktionsreif. Wir gehen davon aus, dass Entwickler, insbesondere Entwickler von Community-Modulen, New Architecture ComponentViews durch das Laden von XAML-Steuerelementen implementieren können, anstatt sie "von Grund auf" mit den grundlegenden Composition-APIs implementieren zu müssen.
Was ist mit der C#-Unterstützung?
Wir arbeiten aktiv daran, die Unterstützung für C#-App- und Modulentwickler hinzuzufügen. Die Umstellung von UWP C# auf modernes .NET C# erfordert einige umfangreichere Projektänderungen als die Unterstützung von C++.
Wird die alte Architektur jemals die Ausrichtung auf Windows App SDK unterstützen?
Nein. Der Plan ist, dass die alte Architektur UWP als Ziel hat, die neue Architektur Windows App SDK als Ziel hat.