Quelle est la principale différence entre ReactNative et NativeScript?


Réponse 1:
Avertissement: Cette réponse n'a pas pour but de prouver que l'un est meilleur que l'autre, je ne veux pas critiquer les travaux incroyables des deux équipes, mais énumérer les différences entre NativeScript et React Native.

Ces deux frameworks font tous deux partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour l'intégrer dans une application native. Ils utilisent _actuellement_ les composants d'interface utilisateur natifs du système d'exploitation natif. Cela a un effet très positif sur l'UX de l'application. Il permet également une implémentation plus rapide de l'application, car le polissage final requis pour l'application est d'une ampleur plus petite que le travail requis pour la même chose avec n'importe quelle application basée sur un navigateur PhoneGap.

Passons maintenant à votre question. Il y a beaucoup de différences - techniques et non techniques.

Du côté non technique

NativeScript est fourni par Telerik (une société Progress) - une société de développeurs très connue et le framework NativeScript fait partie de leur cœur de métier. ReactNative est construit à partir de Facebook, qui, comme nous le savons tous, n'est pas une société d'outils de développement. Pourquoi c'est important? Lorsque vous comptez sur Telerik, vous avez la possibilité d'obtenir une assistance (développeur ou production) qui est une exigence pour la plupart des magasins de logiciels sérieux. De plus, si vous travaillez sur les entreprises, vous vous attendez à une certaine pile d'outils, de services et de solutions. Cryptage et sécurité du code par exemple. Vous obtenez tout cela avec Telerik / NativeScript, mais ce n'est pas une priorité pour Facebook / React.

Il convient également de noter que NativeScript est déjà la version 2.0, tandis que ReactNative est encore à ses débuts. Cela devrait également être calculé lors de l'évaluation du risque lors du choix du cadre approprié. Avec NativeScript, vous disposez de toute la pile pour iOS et Android. Pour RN, comme c'est le cas aujourd'hui, il y a encore beaucoup de lacunes dans l'histoire multiplateforme. Ces lacunes sont comblées chaque jour et selon l'équipe FB, c'est l'une des priorités majeures de l'équipe RN au cours de la prochaine année. Il existe également de nombreux outils, services et composants de productivité payants déjà disponibles pour NativeScript. Cela joue un rôle majeur lors du choix du cadre à utiliser lors de la création d'un logiciel commercial.

La dernière chose non technique est la taille de la communauté. Les deux frameworks sont open source et gratuits. ReactNative est une extension de React.js, vous pouvez donc supposer que toute la communauté react.js y pariera. D'un autre côté, NativeScript est soutenu par Google et cible la communauté AngularJS. Les deux communautés sont très grandes (des millions de développeurs) et ces deux frameworks sont entre de bonnes mains. Cela joue également un rôle majeur dans l'évaluation des risques.

Maintenant sur le plan technique

Des tonnes de différences. L'approche que ReactNative et NativeScript adoptent sont radicalement différentes, ce qui affecte l'expérience du développeur ainsi que la capacité à utiliser et à réutiliser les bibliothèques natives. Les deux offrent de très bonnes performances sur iOs et Android. 60 images par seconde la plupart du temps. Il existe encore des scénarios qui doivent être peaufinés dans les deux cadres, mais même aujourd'hui, ils se comportent comme des applications vraiment natives.

Architecture réactive

En parlant d'architecture - ReactNative comme je l'ai mentionné ci-dessus est une extension de React.JS, ils suivent donc les mêmes principes de mise à jour de l'interface utilisateur que dans ReactJS. Par exemple. en utilisant un DOM virtuel. En bref - ils calculent les modifications qui doivent arriver à l'interface utilisateur sur un _fond de fond_ et appliquent ces modifications par lots. Le fait qu'ils le fassent sur un fil d'arrière-plan a ses avantages et ses inconvénients. Du côté positif, bien sûr, le thread d'interface utilisateur n'est pas touché (ce qui conduit à une interface utilisateur très réactive), mais du côté négatif, cela limite leur capacité à communiquer _fast_ avec le système d'exploitation natif sous-jacent. Cela signifie que si vous avez un composant qui fait beaucoup d'appels vers le système d'exploitation natif, l'application sera très lente, très lente. La bonne chose est que cela n'est pas nécessaire pour la plupart des cas.

La mauvaise chose est que si vous devez utiliser des composants natifs personnalisés ou des API natives, vous devez connaître ObjC pour iOS et Java pour Android pour accéder à ces composants et API. Cela peut être une rupture pour de nombreux développeurs JS. vous n'avez pas besoin de connaître ObjC / Java pour y parvenir en NativeScript, lire ci-dessous.

 Il y a un très bon article sur le site Web ReactNative expliquant cela en détail et ils mentionnent qu'ils prévoient de changer cette architecture afin que plus de choses soient faites sur le thread d'interface utilisateur pour cette raison. Voici une citation de l'article:

Je ne pense pas que nous ayons besoin ou que nous voulons changer radicalement notre modèle de filetage, par exemple en déplaçant tout sur le thread principal, mais nous devons faire quelques jolis changements de base.

Je recommande de lire l'article ici.

Architecture NativeScript

Les développeurs de l'équipe principale de NativeScript adoptent ici une approche plus classique. Ils utilisent le thread d'interface utilisateur pour exécuter l'interface utilisateur, qui est le même modèle utilisé sur la plupart des frameworks populaires - Android, Windows, etc. Cela permet une manière beaucoup plus simple de développer des applications - en tant que développeur, vous avez toujours accès à l'interface utilisateur. arbre de votre application. Il convient de noter que si vous devez exécuter quelque chose sur un thread d'arrière-plan, cela est également possible. Certains des composants les plus fondamentaux comme http, image, sql lite database effectuent en fait beaucoup de leurs opérations sur un thread d'arrière-plan pour réduire la charge sur le thread d'interface utilisateur. Cette approche a un énorme avantage de vous permettre d'accéder directement à JavaScript à n'importe quelle API native.

Veuillez lire cet article qui explique en détail l'architecture de threading NativeScript - http: //developer.telerik.com/fea ....

Fondamentalement, vous accédez à l'intégralité des API natives intactes, ce qui présente de nombreux avantages, surtout lorsque vous devez prendre en charge l'application à long terme. Il n'y a pas de wrappers pour les API natives et cela rend l'expérience plus simple et moins sujette aux erreurs. Vous pouvez littéralement écrire des choses comme - com.android.button.init (). Cela a également l'avantage de réutiliser la pile entière de bibliothèques natives tierces directement sans avoir besoin de modifications. Cela permet une consommation plus facile et la création d'extensions. Actuellement, plus de 220 extensions sont disponibles dans la communauté. L'autre avantage de cette approche est que les animations en NativeScript qui sont créées en utilisant CSS et JavaScript s'exécuteront beaucoup plus facilement car elles sont exécutées sur le thread d'interface utilisateur.

Comme je l'ai mentionné ci-dessus, NativeScript est soutenu par Google, donc si vous êtes un développeur Angular, vous vous sentirez chez vous si vous utilisez NativeScript - l'intégralité de l'API Angular 2 est prise en charge et vous pouvez réutiliser votre code entre un NativeScript et une application Web.

L'architecture ci-dessus permet à NativeScript d'offrir une prise en charge de 0 jour pour les nouvelles versions de système d'exploitation. Actuellement, NativeScript prend en charge la version Android N, toujours au stade Alpha.

Moteurs JS utilisés pour exécuter le code de l'application

Il convient de mentionner que les deux cadres exploitent les moteurs JavaScript existants pour exécuter le code JavaScript lors de l'exécution. ReactNative utilise JavaScriptCore sur iOS et Android. NativeScript utilise V8 sur Android et JavaScriptCore sur iOS. Tout récemment, Microsoft a ajouté la prise en charge de Windows Universal dans ReactNative et utilise son propre moteur Chakra JS. Je ne sais pas comment cela sera fusionné avec le reste du code ReactNative car cela (je soupçonne) impliquera de nombreuses modifications de l'outillage - différents débogueurs, profileurs, pour n'en nommer que quelques-uns.

Utilisation des normes

Les logiciels changent beaucoup, il est donc important de s'appuyer sur des normes pour réduire le risque lors du choix du cadre approprié pour votre scénario.

Les deux cadres utilisent du code ECMAScript conforme aux normes qui permet la réutilisation du code entre les applications Web et mobiles, ce qui conduit à un très bon retour sur investissement lors de leur utilisation.

Les avantages de NativeScript est qu'il utilise également une déclaration CSS conforme aux normes. Cela permet une histoire de réutilisation des compétences / code beaucoup plus grande entre l'application mobile et l'application Web. Il prend même en charge la description des animations à l'aide d'images clés CSS. Tout cela se résume au code natif, donc les déclarations CSS sont traduites en expérience native. Découvrez comment utiliser CSS pour écrire des animations natives.

Déclaration d'interface utilisateur

Dans les deux cadres, vous pouvez avoir une syntaxe déclarative pour décrire l'interface utilisateur de l'application. ReactNative utilise la notation trouvée dans React pour intégrer la déclaration d'interface utilisateur dans un seul fichier. NativeScript utilise à nouveau une approche plus classique en vous permettant à la fois de créer l'interface utilisateur avec du code ou via un fichier séparé pour la mise en œuvre de l'interface utilisateur, vous permettant d'utiliser les modèles MVC / MVVM classiques. Je ne dirais pas lequel est le meilleur - c'est une question de goût personnel. Pour moi, la séparation entre l'interface utilisateur et le code est meilleure avec MVVM, mais c'est ce que j'ai l'habitude d'écrire, donc je suis biaisé.

Si vous savez que CSS en NativeScript sera beaucoup plus facile pour vous de styliser les applications en utilisant des feuilles de style externes ou un style en ligne. ReactNative utilise sa propre notation pour le style basé sur les déclarations JSON. Encore une fois similaire à CSS, mais différent.

Support linguistique

ReactNative et NativeScript utilisent tous les deux du JavaScript moderne. Ils soutiennent tous les deux Babel afin d'utiliser le dernier et le meilleur de JS.

Comme NativeScript est plus mature, il a également plus d'options ici. NativeScript a une intégration étroite (outillage, IDE, etc.) avec TypeScript. Cela donne une intégration supplémentaire avec Angular 2 et augmente la productivité et rend la prise en charge à long terme de ces applications beaucoup plus facile.

Expérience développeur, débogage

Les deux cadres offrent la possibilité de développer des applications de manière rapide - ils offrent tous deux une fonctionnalité de rechargement à chaud - c'est la possibilité de voir les changements de code immédiatement sur l'appareil sans avoir besoin de recharger l'application (dans la plupart des cas).

En termes d'expérience de développeur et d'IDE, car la pile d'applications entière est JavaScript, vous pouvez utiliser n'importe quel IDE disponible. Facebook travaille sur son propre IDE qui n'est toujours pas publié au moment d'écrire ces lignes, NativeScript fait la promotion de Visual Studio Code en tant qu'éditeur recommandé. Microsoft a une implémentation pour NativeScript et ReactNative pour leur débogueur VS Code.

Essai

Puisqu'il s'agit de JavaScript entièrement conforme aux normes, vous pouvez utiliser n'importe lequel des outils disponibles pour écrire des tests unitaires. Les deux cadres prennent en charge les cadres de tests les plus populaires comme Karma, Jasmine, Mocha.

Pour les tests fonctionnels, puisque l'interface utilisateur est entièrement native, vous pouvez utiliser n'importe quel outil de test qui fonctionne avec les frameworks natifs comme Appium.

Découvrez comment écrire des tests en NativeScript. Dans ReactNative.

Performance

Comme je l'ai mentionné plusieurs fois ci-dessus du côté des performances, vous serez satisfait des deux cadres. C'est une énorme amélioration par rapport aux applications PhoneGap bien connues. Les applications finales ne sont pas différentes des vraies applications natives. L'utilisation des vrais composants d'interface utilisateur natifs est un énorme avantage pour les deux cadres.

Les deux cadres ont des performances exceptionnelles sur iOS - à la fois en termes de temps de chargement (moins d'une seconde pour les deux) et en termes de FPS (60fps dans la plupart des cas) à l'exécution.

Sur Android, les performances sont toujours bonnes, mais en raison de l'architecture du système d'exploitation natif sous-jacent, les performances globales ne sont pas aussi bonnes que sur iOS. Le temps de chargement et le comportement d'exécution ne sont pas aussi précis que sur iOS. Mais cela est également valable pour les applications natives pures, donc ne soyez pas trop pointilleux sur NativeScript et ReactNative. ReactNative a un temps de chargement légèrement meilleur (plus rapide) sur Android par rapport à NativeScript (1.4s vs 2.2s). L'équipe NativeScript résout ce problème en introduisant des instantanés de segments de mémoire, mais cette fonctionnalité est encore expérimentale.

Real Apps

Pour certaines applications réelles, vous pouvez voir suivre ces liens pour l'application d'évier de cuisine NativeScript:

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

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

Ou vous pouvez vérifier les applications de la galerie de vitrines NativeScript.

Pour ReactNative, je ne connais aucune application d'évier de cuisine, mais vous pouvez vérifier l'une des applications de vitrine. Assurez-vous de vérifier les applications effectuées par Facebook pour la meilleure mise en œuvre.

En conclusion

Pour moi personnellement, la prise de décision principale est basée sur vos compétences existantes - si vous avez des compétences angulaires, utilisez simplement NativeScript, si vous êtes un développeur React, vous trouverez ReactNative plus familier et facile à utiliser. Si vous implémentez un logiciel commercial, tenez compte du support et des services disponibles dans NativeScript et l'ensemble de compétences Angular. Si vous avez besoin de plus d'interface utilisateur native native, NativeScript vous conviendra mieux car vous n'avez pas besoin de connaître ObjC ou Java pour les utiliser. En fin de compte, les deux cadres sont modernes et tiennent leur promesse, ce qui conduira à des applications de premier ordre.

Bon codage, et j'espère que ce qui précède aide :). N'hésitez pas à me demander plus de détails. Certes, il y a beaucoup de choses qui ne sont pas couvertes ici, mais je peux aller plus loin et expliquer tout ci-dessus plus en détail. Vous pouvez me joindre sur Twitter - @ValioStoychev.

Divulgation: Je travaille en tant que PM pour NativeScript, mais j'ai essayé d'être complètement impartial. J'espère que vous apprécierez le contenu ci-dessus. Si vous pensez qu'il y a des faits incorrects, faites-le moi savoir et j'appliquerai les modifications!


Réponse 2:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript


Réponse 3:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript


Réponse 4:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript


Réponse 5:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript


Réponse 6:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript


Réponse 7:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript


Réponse 8:

Différence entre React Native et NativeScript

React Native et NativeScript sont des cadres incroyables. Les deux frameworks font partie des frameworks mobiles multiplateformes de nouvelle génération qui n'utilisent PAS le navigateur pour les intégrer dans l'application native. Les travaux réalisés par les deux équipes sont excellents, mais pour énumérer ici quelques différences entre NativeScript et React Native.

Lisez également les questions d'entrevue de base de React Native

NativeScript

React Native

Communauté réactive et serviable.

Communauté réactive et serviable.

Pas d'utilisation de production «réelle»

Utilisation de production éprouvée.

Maintenu par une petite entreprise.

Maintenu par une énorme entreprise.

Moins populaire

Populaire.

Plus ancien que React Native

Plus récent que NativeScript