Was ist der Hauptunterschied zwischen ReactNative und NativeScript?


Antwort 1:
Haftungsausschluss: Diese Antwort soll nicht beweisen, dass eines besser ist als das andere. Ich möchte nicht die erstaunlichen Arbeiten beider Teams kritisieren, sondern die Unterschiede zwischen NativeScript und React Native auflisten.

Diese beiden Frameworks sind beide Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in eine native App verwenden. Sie verwenden tatsächlich die nativen UI-Komponenten des nativen Betriebssystems. Dies wirkt sich sehr positiv auf die UX der App aus. Dies ermöglicht auch eine schnellere App-Implementierung, da die endgültige Politur für die App um Größenordnungen geringer ist als die Arbeit, die für jede browserbasierte PhoneGap-App erforderlich ist.

Nun zu deiner Frage. Es gibt viele Unterschiede - sowohl technische als auch nichttechnische.

Auf der nicht technischen Seite

NativeScript wird von Telerik (einem Progress-Unternehmen) geliefert - einem sehr bekannten Entwicklerunternehmen, dessen Kerngeschäft das NativeScript-Framework ist. ReactNative basiert auf Facebook, das bekanntlich kein Entwickler-Tool-Unternehmen ist. Warum ist das wichtig? Wenn Sie sich auf Telerik verlassen, haben Sie die Möglichkeit, Support (Entwickler oder Produktion) zu erhalten, was für die meisten seriösen Softwarehäuser eine Voraussetzung ist. Auch wenn Sie in den Unternehmen arbeiten, erwarten Sie einen bestimmten Stapel an Tools, Services und Lösungen. Codeverschlüsselung und Sicherheit zum Beispiel. All dies erhalten Sie mit Telerik / NativeScript, dies hat jedoch für Facebook / React keine Priorität.

Erwähnenswert ist auch, dass NativeScript bereits Version 2.0 ist, während ReactNative noch in den Anfängen steckt. Dies sollte auch bei der Bewertung des Risikos bei der Auswahl des geeigneten Rahmens berücksichtigt werden. Mit NativeScript steht Ihnen der gesamte Stack für iOS und Android zur Verfügung. Für RN gibt es nach wie vor viele Lücken in der plattformübergreifenden Geschichte. Diese Lücken werden jeden Tag geschlossen und laut FB-Team ist dies eine der Hauptprioritäten für das RN-Team im nächsten Jahr. Für NativeScript sind bereits zahlreiche Tools, Services und Komponenten für bezahlte Produktivität verfügbar. Dies spielt eine wichtige Rolle bei der Entscheidung, welches Framework beim Erstellen kommerzieller Software verwendet werden soll.

Die letzte nicht-technische Sache ist die Community-Größe. Beide Frameworks sind Open Source und kostenlos. ReactNative ist eine Erweiterung von React.js, sodass Sie davon ausgehen können, dass die gesamte reag.js-Community darauf wetten wird. Auf der anderen Seite wird NativeScript von Google unterstützt und richtet sich an die AngularJS-Community. Beide Communities sind sehr groß (Millionen von Entwicklern) und diese beiden Frameworks sind in guten Händen. Dies spielt auch bei der Risikobewertung eine große Rolle.

Jetzt auf der technischen Seite

Tonnenweise Unterschiede. Der Ansatz, den ReactNative und NativeScript verfolgen, unterscheidet sich dramatisch, was sich auf die Entwicklerumgebung und auch auf die Fähigkeit auswirkt, native Bibliotheken zu verwenden und wiederzuverwenden. Beide liefern eine sehr gute Leistung auf iOS und Android. Die meiste Zeit 60fps. Es gibt immer noch Szenarien, die in beiden Frameworks aufpoliert werden müssen, aber selbst heute verhalten sie sich wie echte native Apps.

ReactNative-Architektur

Apropos Architektur - ReactNative, wie ich oben erwähnt habe, ist eine Erweiterung von React.JS, daher folgen sie denselben Grundsätzen für die Aktualisierung der Benutzeroberfläche wie in ReactJS. Z.B. mit einem virtuellen DOM. Kurz gesagt: Sie berechnen die Änderungen, die an der Benutzeroberfläche in einem Hintergrund-Thread vorgenommen werden müssen, und wenden diese Änderungen in Stapeln an. Die Tatsache, dass sie dies auf einem Hintergrund-Thread tun, hat Vor- und Nachteile. Positiv ist natürlich, dass der Benutzeroberflächenthread nicht berührt wird (was zu einer sehr reaktionsschnellen Benutzeroberfläche führt). Negativ ist jedoch, dass dies die Fähigkeit einschränkt, schnell mit dem zugrunde liegenden nativen Betriebssystem zu kommunizieren. Dies bedeutet, dass die App sehr langsam ist, wenn Sie eine Komponente haben, die viele Aufrufe an das native Betriebssystem ausführt. Das Gute ist, dass dies in den meisten Fällen nicht erforderlich ist.

Das Schlimme ist, dass Sie, wenn Sie benutzerdefinierte native Komponenten oder native APIs verwenden müssen, ObjC für iOS und Java für Android kennen müssen, um auf diese Komponenten und APIs zugreifen zu können. Dies kann für viele JS-Entwickler ein Deal Breaker sein. Sie müssen ObjC / Java nicht kennen, um dies in NativeScript zu erreichen (siehe unten).

 Es gibt einen sehr guten Artikel auf der ReactNative-Website, der dies ausführlich erklärt, und sie erwähnen dort, dass sie planen, diese Architektur zu ändern, damit aus diesem Grund mehr Dinge auf dem UI-Thread erledigt werden. Hier ist ein Zitat aus dem Artikel:

Ich glaube nicht, dass wir unser Threading-Modell drastisch ändern müssen oder wollen, z. durch Verschieben von allem auf den Haupt-Thread, aber wir müssen einige hübsche Kernänderungen vornehmen.

Ich empfehle den Artikel hier zu lesen.

NativeScript-Architektur

Die Entwickler des NativeScript-Kernteams verfolgen hier einen klassischeren Ansatz. Sie verwenden den UI-Thread, um die Benutzeroberfläche auszuführen. Dies ist dasselbe Modell, das auf den meisten gängigen Frameworks (Android, Windows usw.) verwendet wird. Dies ermöglicht eine viel einfachere Art der Entwicklung von Apps - Sie als Entwickler haben immer Zugriff auf die Benutzeroberfläche Baum Ihrer Anwendung. Es ist erwähnenswert, dass dies auch möglich ist, wenn Sie etwas auf einem Hintergrund-Thread ausführen müssen. Einige der wichtigsten Komponenten wie http, image, sql lite database führen tatsächlich viele ihrer Vorgänge in einem Hintergrundthread aus, um die Belastung des UI-Threads zu verringern. Dieser Ansatz hat den enormen Vorteil, dass Sie direkt über JavaScript auf jede native API zugreifen können.

Bitte lesen Sie diesen Artikel, der die NativeScript-Threading-Architektur ausführlich erklärt - http: //developer.telerik.com/fea ....

Grundsätzlich greifen Sie unangetastet auf die gesamten nativen APIs zu, was insbesondere dann von Vorteil ist, wenn Sie die App langfristig unterstützen müssen. Es gibt keine Wrapper für die nativen APIs, wodurch die gesamte Erfahrung einfacher und weniger fehleranfällig wird. Sie können buchstäblich Dinge wie - com.android.button.init () schreiben. Dies hat auch den Vorteil, dass der gesamte Stapel nativer Bibliotheken von Drittanbietern direkt wiederverwendet werden kann, ohne dass Änderungen erforderlich sind. Dies ermöglicht eine einfachere Verwendung und Erstellung von Erweiterungen. Derzeit sind mehr als 220 Erweiterungen in der Community verfügbar. Der andere Vorteil dieses Ansatzes besteht darin, dass die Animationen in NativeScript, die mit CSS und JavaScript erstellt werden, viel reibungsloser ausgeführt werden, da sie auf dem UI-Thread ausgeführt werden.

Wie bereits erwähnt, wird NativeScript von Google unterstützt. Wenn Sie also ein Angular-Entwickler sind, werden Sie sich bei der Verwendung von NativeScript wie zu Hause fühlen. Die gesamte Angular 2-API wird unterstützt und Sie können Ihren Code zwischen einem NativeScript und einer Webanwendung wiederverwenden.

Die oben beschriebene Architektur ermöglicht es NativeScript, 0-Tage-Support für neue Betriebssystemversionen anzubieten. Derzeit unterstützt NativeScript das noch im Alpha-Stadium befindliche Android N-Release.

JS-Engines, mit denen der App-Code ausgeführt wird

Es ist erwähnenswert, dass beide Frameworks vorhandene JavaScript-Engines nutzen, um den JavaScript-Code zur Laufzeit auszuführen. ReactNative verwendet JavaScriptCore für iOS und Android. NativeScript verwendet V8 unter Android und JavaScriptCore unter iOS. Erst kürzlich hat Microsoft die Unterstützung für Windows Universal in ReactNative hinzugefügt und verwendet eine eigene Chakra JS-Engine. Ich bin nicht sicher, wie dies mit dem Rest des ReactNative-Codes zusammengeführt wird, da dies (ich vermute) eine Menge Änderungen an den Werkzeugen mit sich bringt - verschiedene Debugger, Profiler, um nur einige zu nennen.

Verwendung von Standards

Da sich die Software stark verändert, ist es wichtig, sich auf Standards zu verlassen, um das Risiko bei der Auswahl des richtigen Frameworks für Ihr Szenario zu verringern.

Beide Frameworks verwenden standardkonformen ECMAScript-Code, der die Wiederverwendung von Code zwischen Web- und mobilen Apps ermöglicht, was zu einer sehr guten Rendite bei deren Verwendung führt.

Ein Vorteil von NativeScript ist, dass es auch eine standardkonforme CSS-Deklaration verwendet. Dies ermöglicht eine viel umfangreichere Story zur Wiederverwendung von Fähigkeiten / Code zwischen Handy und Web-App. Es unterstützt sogar die Beschreibung von Animationen mithilfe von CSS-Keyframes. All dies hängt vom nativen Code ab, sodass die CSS-Deklarationen in die native Erfahrung übersetzt werden. Erfahren Sie, wie Sie mit CSS native Animationen erstellen.

UI-Deklaration

In beiden Frameworks können Sie deklarative Syntax zur Beschreibung der Benutzeroberfläche der App verwenden. ReactNative als Verwendung der Notation in React zum Einfügen der UI-Deklaration in eine einzelne Datei. NativeScript verwendet wieder einen klassischeren Ansatz, indem es Ihnen ermöglicht, die Benutzeroberfläche mit Code oder über eine separate Datei für die Benutzeroberflächenimplementierung zu erstellen, wodurch Sie die klassischen MVC / MVVM-Muster verwenden können. Ich würde nicht sagen, welches besser ist - es ist eine Frage des persönlichen Geschmacks. Für mich ist die Trennung zwischen der Benutzeroberfläche und dem Code bei MVVM besser, aber das ist, was ich zum Schreiben verwendet habe, also bin ich voreingenommen.

Wenn Sie wissen, dass CSS in NativeScript für Sie viel einfacher ist, die Anwendungen mit externen Stylesheets oder Inline-Stilen zu gestalten. ReactNative verwendet eine eigene Notation für das Styling basierend auf JSON-Deklarationen. Wieder ähnlich wie CSS, aber anders.

Sprachunterstützung

Sowohl ReactNative als auch NativeScript verwenden modernes JavaScript. Beide unterstützen Babel, um das Neueste und Beste von JS zu nutzen.

Da NativeScript ausgereifter ist, stehen hier auch mehr Optionen zur Verfügung. NativeScript ist eng in TypeScript integriert (Tooling, IDE usw.). Dies bietet eine zusätzliche Integration in Angular 2, steigert die Produktivität und erleichtert die langfristige Unterstützung dieser Apps erheblich.

Entwicklererfahrung, Debuggen

Beide Frameworks bieten die Möglichkeit, Anwendungen auf schnelle Weise zu entwickeln - beide bieten Hot-Reload-Funktionen - dies ist die Möglichkeit, die Codeänderungen sofort auf dem Gerät zu sehen, ohne dass die App neu geladen werden muss (in den meisten Fällen).

In Bezug auf Entwicklererfahrung und IDEs können Sie jede verfügbare IDE verwenden, da der gesamte App-Stack aus JavaScript besteht. Facebook arbeitet an einer eigenen IDE, die zum Zeitpunkt des Schreibens noch nicht veröffentlicht ist. NativeScript fördert Visual Studio Code als empfohlenen Editor. Microsoft hat eine Implementierung für NativeScript und ReactNative für seinen VS Code-Debugger.

Testen

Da es sich um standardkonformes JavaScript handelt, können Sie alle verfügbaren Tools zum Schreiben von Komponententests verwenden. Beide Frameworks unterstützen die gängigsten Test-Framworks wie Karma, Jasmine, Mocha.

Da die Benutzeroberfläche vollständig nativ ist, können Sie für Funktionstests jedes Testtool verwenden, das mit nativen Frameworks wie Appium zusammenarbeitet.

Erfahren Sie, wie Sie Tests in NativeScript schreiben. In ReactNative.

Performance

Wie ich oben auf der Performance-Seite bereits mehrfach erwähnt habe, werden Sie mit beiden Frameworks zufrieden sein. Dies ist eine enorme Verbesserung gegenüber den bekannten PhoneGap-Apps. Die endgültigen Apps unterscheiden sich nicht von echten nativen Apps. Die Verwendung der echten nativen UI-Komponenten ist für beide Frameworks von großem Vorteil.

Beide Frameworks weisen unter iOS eine außergewöhnliche Leistung auf - sowohl in Bezug auf die Ladezeit (weniger als eine Sekunde für beide) als auch in Bezug auf die FPS (in den meisten Fällen 60 fps) zur Laufzeit.

Unter Android ist die Leistung immer noch gut, aber aufgrund der zugrunde liegenden nativen Betriebssystemarchitektur ist die Gesamtleistung nicht so gut wie unter iOS. Die Ladezeit und das Laufzeitverhalten sind nicht so ausgefeilt wie unter iOS. Dies gilt jedoch auch für reine native Apps. Seien Sie also bei NativeScript und ReactNative nicht zu wählerisch. ReactNative hat auf Android eine etwas bessere (schnellere) Ladezeit als NativeScript (1.4s gegenüber 2.2s). Das NativeScript-Team spricht dies mit der Einführung von Speicher-Heap-Snapshots an, diese Funktion ist jedoch noch experimentell.

Echte Apps

Für einige echte Apps sehen Sie die folgenden Links für die NativeScript-Spülbecken-App:

Unter Android -> https://play.google.com/store/ap ...

Unter iOS -> https: //itunes.apple.com/bg/app / ...

Sie können die Apps auch in der NativeScript-Präsentationsgalerie überprüfen.

Für ReactNative sind mir keine Apps für Küchenspülen bekannt, aber Sie können jede der Showcase-Apps überprüfen. Stellen Sie sicher, dass Sie die von Facebook erstellten Apps auf die beste Implementierung überprüfen.

Abschließend

Für mich persönlich basiert die Hauptentscheidung auf Ihren vorhandenen Fähigkeiten. Wenn Sie über Angular-Fähigkeiten verfügen, verwenden Sie einfach NativeScript. Wenn Sie ein React-Entwickler sind, werden Sie feststellen, dass ReactNative vertrauter und benutzerfreundlicher ist. Wenn Sie kommerzielle Software implementieren, sollten Sie den in NativeScript verfügbaren Support und die Angular-Fähigkeiten berücksichtigen. Wenn Sie eine benutzerdefinierte native Benutzeroberfläche benötigen, ist NativeScript besser für Sie geeignet, da Sie kein Wissen über ObjC oder Java benötigen, um diese zu verwenden. Letztendlich sind beide Frameworks modern und halten, was sie versprechen, und dies wird zu erstklassigen Apps führen.

Viel Spaß beim Programmieren, und ich hoffe, dass das oben genannte hilft :). Bitte zögern Sie nicht, mich für weitere Details zu fragen. Sicher gibt es eine Menge Dinge, die hier nicht behandelt werden, aber ich kann weiter gehen und alles oben in tieferen Details erklären. Sie können mich auf Twitter erreichen - @ValioStoychev.

Offenlegung: Ich arbeite als PM für NativeScript, aber ich habe versucht, völlig unvoreingenommen zu sein. Ich hoffe, Sie werden den obigen Inhalt zu schätzen wissen. Wenn Sie der Meinung sind, dass es falsche Fakten gibt, lassen Sie es mich bitte wissen und ich werde Änderungen vornehmen!


Antwort 2:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript


Antwort 3:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript


Antwort 4:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript


Antwort 5:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript


Antwort 6:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript


Antwort 7:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript


Antwort 8:

Unterschied zwischen React Native und NativeScript

Sowohl React Native als auch NativeScript sind erstaunliche Frameworks. Beide Frameworks sind Teil der plattformübergreifenden mobilen Frameworks der neuen Generation, die den Browser NICHT zum Packen in die native App verwenden. Die Arbeiten beider Teams sind ausgezeichnet, aber hier sind einige Unterschiede zwischen NativeScript und React Native aufgeführt.

Lesen Sie auch Fragen zu Basic React Native-Vorstellungsgesprächen

NativeScript

Reagiere einheimisch

Reaktionsschnelle, hilfreiche Community.

Reaktionsschnelle, hilfreiche Community.

Kein "echter" Produktionsverbrauch

Bewährte Produktionsanwendung.

Gepflegt von einer kleinen Firma.

Gepflegt von einer riesigen Firma.

Weniger bekannt

Beliebt.

Älter als die Eingeborene

Neuer als NativeScript