Nachdem ich im letzten Artikel beschrieben habe, wie ich mich für die App-Entwicklung mit NativeScript entschieden habe, möchte ich in diesem Beitrag über meine Erfahrungen berichten.
NativeScript Tutorial
Das Erste, was ich mache, wenn ich ein neues Framework oder eine neue Technologie einsetze, ist, ein Tutorial auszuprobieren. NativeScript bietet dafür eine umfassende Anleitung in der Dokumentation. Die Einrichtung nach der Dokumentation und das Durcharbeiten des Tutorials verliefen ohne größere Probleme..
Erste Gehversuche
Meine ersten eigenständigen Versuche mit NativeScript stellten sich jedoch früh als schwierig heraus.
Fehlende Fehlermeldungen und Hinweise
Ein Problem, das mir sofort auffiel, war, dass einige Views nicht auf dem Bildschirm angezeigt wurden – ohne jegliche Fehlermeldung oder Hinweise. Später fand ich heraus, dass ich die einzelnen Views in Layouts hätte einbetten müssen.
Dokumentation und Frameworks
NativeScript wirbt damit, mit allen gängigen JavaScript-Frameworks kompatibel zu sein. Allerdings ist die Dokumentation in Bezug auf die Eigenheiten der einzelnen Frameworks recht spärlich. Ein Beispiel, das mich viel Zeit gekostet hat, war der Umgang mit TabViews. Laut Dokumentation sollte folgendes Beispiel funktionieren:
Dieses Beispiel funktioniert jedoch nicht – zumindest nicht unter Angular. Stattdessen musste ich folgende Syntax verwenden:
Das Problem dabei: Diese Lösung steht nirgendwo in der offiziellen Dokumentation.
Ein weiteres Beispiel für ungenaue Angaben in der Dokumentation betrifft die Nutzung von Icons in TabView-Items. Laut Dokumentation sollte es kein Problem sein, Icon-Fonts zu verwenden:
Leider stimmt das nicht. Die Verwendung von fonts:// führt zu einer Exception während des Build-Prozesses. In der Discord-Community fand ich eine Frage, die genau dieses Problem ansprach, aber es gab keine Lösung dazu. Glücklicherweise funktionieren Bildpfade. Allerdings ist das viel umständlicher, da für jede Farbe ein neues Bild erforderlich wäre.
Magische Black Boxes
Ein weiteres Problem trat auf, als ich versuchte, die ActionBar unter Kontrolle zu bekommen. Ich wollte, dass die ActionBar auf manchen Ansichten angezeigt wird und auf anderen nicht. In meinen Versuchen hatte ich manchmal zwei ActionBars übereinander. Nach langer Suche und vielen Experimenten fand ich heraus, dass der Angular-spezifische <page-router-outlet> automatisch in eine Seite gewrappt wird, was dazu führte, dass die ActionBar nur auf die Unterelemente Einfluss hatte.
Neuanfang mit React Native
Nach viel investierter Zeit und nur wenigen Ergebnissen entschied ich mich, zu React Native zu wechseln – und ich muss sagen: Ich bin begeistert! Im Vergleich zu NativeScript ist die Entwicklung mit React Native ein völlig anderes Erlebnis. Besonders die Expo Go App macht das Entwickeln unglaublich angenehm. Ich kann kleine Änderungen auf meinem Rechner vornehmen, und das Ergebnis wird in wenigen Millisekunden auf meinem Smartphone angezeigt.
Learnings
Ich bin überzeugt, dass man mit NativeScript großartige Apps entwickeln kann – vorausgesetzt, man kennt die Feinheiten und hat den Umgang damit erlernt. Für jemanden, der neu in die Technologie einsteigt, ist der Weg jedoch sehr steinig. Im Vergleich zu React Native bietet NativeScript kaum Vorteile, außer dass es unabhängig von React ist.
Im Gegenteil: Da React Native viel verbreiteter ist, ist das gesamte Entwicklungserlebnis bei React Native wesentlich fortgeschrittener und einfacher als bei NativeScript. Man merkt, dass NativeScript versucht, gute Konzepte zu adaptieren, aber React Native ist in diesem Bereich klar führend.
Ausblick
Im nächsten Artikel gehe ich auf eine Unterbrechung des Entwicklungsprozesses ein, die zu einem ersten sichtbaren Ergebnis geführt hat.