¿Cuál es la diferencia clave entre ReactNative y NativeScript?


Respuesta 1:
Descargo de responsabilidad: esta respuesta no tiene el propósito de demostrar que uno es mejor que el otro, no quiero criticar los increíbles trabajos de ambos equipos, sino enumerar las diferencias entre NativeScript y React Native.

Estos dos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Están _actualmente_ utilizando los componentes nativos de la interfaz de usuario del sistema operativo nativo. Esto tiene un efecto muy positivo en la experiencia de usuario de la aplicación. También permite una implementación más rápida de la aplicación porque el pulido final requerido para la aplicación es de magnitudes más pequeñas que el trabajo requerido para cualquier aplicación basada en navegador PhoneGap.

Ahora a tu pregunta. Hay muchas diferencias, tanto técnicas como no técnicas.

En el lado no técnico

NativeScript es entregado por Telerik (una compañía de Progress), una compañía desarrolladora muy conocida y el framework NativeScript es parte de su negocio principal. ReactNative está construido a partir de Facebook, que, como todos sabemos, no es una empresa de herramientas para desarrolladores. ¿Por qué esto es importante? Cuando confía en Telerik, tiene la opción de obtener soporte (desarrollador o producción), que es un requisito para la mayoría de las tiendas de software serias que existen. Además, si trabaja en las empresas, espera una cierta pila de herramientas, servicios y soluciones. Cifrado de código y seguridad, por ejemplo. Obtiene todo esto con Telerik / NativeScript, pero esto no es una prioridad para Facebook / React.

Vale la pena señalar también que NativeScript ya es la versión 2.0, mientras que ReactNative todavía está en sus primeros días de madurez. Esto también debe calcularse al evaluar el riesgo al elegir el marco adecuado. Con NativeScript tiene toda la pila disponible para iOS y Android. Para RN, como lo es hoy, todavía hay muchas lagunas en la historia multiplataforma. Estas brechas se están llenando todos los días y, según el equipo de FB, esta es una de las principales prioridades para el equipo de RN en el próximo año. También hay muchas herramientas, servicios y componentes de productividad pagados ya disponibles para NativeScript. Esto juega un papel importante al decidir qué marco utilizar al construir cualquier software comercial.

Lo último no técnico es el tamaño de la comunidad. Ambos marcos son de código abierto y gratuitos. ReactNative es una extensión de React.js para que pueda asumir que toda la comunidad react.js apostará por él. Por otro lado, NativeScript está respaldado por Google y está dirigido a la comunidad AngularJS. Ambas comunidades son muy grandes (millones de desarrolladores) y estos dos marcos están en buenas manos. Esto también juega un papel importante en la evaluación de riesgos.

Ahora en el lado técnico

Toneladas de diferencias. El enfoque que están tomando ReactNative y NativeScript es dramáticamente diferente, lo que afecta la experiencia del desarrollador y también la capacidad de usar y reutilizar el resultado de las bibliotecas nativas. Ambos ofrecen un muy buen rendimiento tanto en iOs como en Android. 60 fps la mayor parte del tiempo. Todavía hay escenarios que deben pulirse en ambos marcos, pero incluso hoy se comportan como aplicaciones verdaderamente nativas.

Reaccionar Arquitectura nativa

Hablando de arquitectura: ReactNative como mencioné anteriormente es una extensión de React.JS para que sigan los mismos principios para actualizar la interfaz de usuario que en ReactJS. P.ej. usando un DOM virtual. En resumen: están calculando los cambios que deben suceder a la interfaz de usuario en un _ subproceso de fondo_ y están aplicando esos cambios en lotes. El hecho de que estén haciendo esto en un hilo de fondo tiene sus pros y sus contras. En el lado positivo, por supuesto, es que el hilo de la interfaz de usuario no se toca (lo que conduce a una interfaz de usuario muy receptiva), pero en el lado negativo, esto está limitando su capacidad de comunicarse rápidamente con el sistema operativo nativo subyacente. Esto significa que si tiene un componente que realiza muchas llamadas al sistema operativo nativo, la aplicación será muy lenta, muy lenta. Lo bueno es que esto no es necesario para la mayoría de los casos.

Lo malo es que si necesita utilizar componentes nativos personalizados o API nativas, debe conocer ObjC para iOS y Java para Android para acceder a estos componentes y API. Esto puede ser un factor decisivo para muchos desarrolladores de JS. no necesita conocer ObjC / Java para lograr esto en NativeScript, lea a continuación.

 Hay un muy buen artículo en el sitio web ReactNative que explica esto en detalle y mencionan que planean cambiar esta arquitectura para que se haga más cosas en el hilo de la interfaz de usuario por este motivo. Aquí hay una cita del artículo:

No creo que necesitemos o queramos cambiar nuestro modelo de subprocesos drásticamente, p. moviendo todo al hilo principal, pero necesitamos hacer algunos cambios básicos.

Recomiendo leer el artículo aquí.

Arquitectura NativeScript

Los desarrolladores del equipo principal de NativeScript están adoptando un enfoque más clásico aquí. Están utilizando el subproceso de la interfaz de usuario para ejecutar la interfaz de usuario, que es el mismo modelo utilizado en la mayoría de los marcos populares (Android, Windows, etc.) Esto permite una forma mucho más simple de desarrollar aplicaciones: usted como desarrollador siempre tiene acceso a la interfaz de usuario Árbol de su aplicación. Vale la pena señalar que si necesita ejecutar algo en un hilo de fondo, esto también es posible. Algunos de los componentes más básicos como http, image, sql lite database están realizando muchas de sus operaciones en un subproceso en segundo plano para reducir la carga en el subproceso de la interfaz de usuario. Este enfoque tiene una gran ventaja al permitirle acceder a cualquier API nativa directamente desde JavaScript.

Lea este artículo que explica en profundidad la arquitectura de subprocesamiento de NativeScript: http: //developer.telerik.com/fea ...

Básicamente, accede a las API nativas enteras intactas que tienen muchos beneficios, especialmente cuando tiene que admitir la aplicación a largo plazo. No hay envoltorios para las API nativas y esto hace que toda la experiencia sea más simple y menos propensa a errores. Literalmente puede escribir cosas como - com.android.button.init (). Esto también tiene la ventaja de reutilizar toda la pila de bibliotecas nativas de terceros directamente sin necesidad de modificaciones. Esto permite un consumo más fácil y la creación de extensiones. Actualmente hay más de 220 extensiones disponibles de la comunidad. El otro beneficio de este enfoque es que las animaciones en NativeScript que se crean usando CSS y JavaScript se ejecutarán mucho más suavemente porque se ejecutan en el hilo de la interfaz de usuario.

Como mencioné anteriormente, NativeScript está respaldado por Google, por lo que si usted es un desarrollador de Angular se sentirá como en casa si usa NativeScript: toda la API de Angular 2 es compatible y puede reutilizar su código entre NativeScript y una aplicación web.

La arquitectura anterior permite a NativeScript ofrecer soporte de 0 días para nuevas versiones del sistema operativo. Actualmente NativeScript tiene soporte para el lanzamiento de Android N, aún en etapa Alpha.

JS Engines solía ejecutar el código de la aplicación

Vale la pena mencionar que ambos marcos están aprovechando los motores JavaScript existentes para ejecutar el código JavaScript en tiempo de ejecución. ReactNative está usando JavaScriptCore en iOS y Android. NativeScript está utilizando V8 en Android y JavaScriptCore en iOS. Recientemente, Microsoft agregó soporte para Windows Universal en ReactNative y está utilizando su propio motor Chakra JS. No estoy seguro de cómo se fusionará con el resto del código ReactNative, ya que (sospecho) implicará muchos cambios en las herramientas: diferentes depuradores, perfiladores, por nombrar algunos.

Uso de estándares

El software cambia mucho, por lo que es importante confiar en estándares para reducir el riesgo al elegir el marco adecuado para su escenario.

Ambos marcos usan código ECMAScript que cumple con los estándares que permite la reutilización de código entre aplicaciones web y móviles, lo que conduce a un ROI muy bueno cuando se usan.

Las ventajas de NativeScript es que también utiliza una declaración CSS compatible con el estándar. Esto permite una historia de reutilización de habilidades / códigos mucho mayor entre la aplicación móvil y la web. Incluso admite la descripción de animaciones utilizando fotogramas clave CSS. Todo esto se reduce al código nativo, por lo que las declaraciones CSS se traducen a la experiencia nativa. Vea cómo usar CSS para escribir animaciones nativas.

Declaración de UI

En ambos marcos, puede tener una sintaxis declarativa para describir la interfaz de usuario de la aplicación. ReactNative como el uso de la notación que se encuentra en React para incluir la declaración de IU en un solo archivo. NativeScript nuevamente está utilizando un enfoque más clásico al permitirle construir la interfaz de usuario con código o mediante un archivo separado para la implementación de la interfaz de usuario que le permite usar los patrones clásicos MVC / MVVM. No diría cuál es mejor, es una cuestión de gusto personal. Para mí, la separación entre la interfaz de usuario y el código es mejor con MVVM, pero esto es lo que estoy acostumbrado a escribir, así que soy parcial.

Si conoce CSS en NativeScript, será mucho más fácil diseñar las aplicaciones usando hojas de estilo externas o estilos en línea. ReactNative está utilizando su propia notación para el estilo basado en declaraciones JSON. De nuevo similar a CSS, pero diferente.

Ayuda de idioma

Tanto ReactNative como NativeScript están usando JavaScript moderno. Ambos apoyan a Babel para usar el último y mejor JS.

Como NativeScript es más maduro, también tiene más opciones aquí. NativeScript tiene una estrecha integración (herramientas, IDE, etc.) con TypeScript. Esto proporciona una integración adicional con Angular 2 y aumenta la productividad y facilita mucho el soporte a largo plazo de estas aplicaciones.

Experiencia de desarrollador, depuración

Ambos marcos ofrecen la capacidad de desarrollar aplicaciones de manera rápida, ambos ofrecen funcionalidad de recarga en caliente, esta es la capacidad de ver los cambios de código inmediatamente en el dispositivo sin la necesidad de volver a cargar la aplicación (en la mayoría de los casos).

En términos de experiencia de desarrollador e IDEs, ya que toda la pila de aplicaciones es JavaScript, puede usar cualquier IDE disponible. Facebook está trabajando en su propio IDE que aún no se ha lanzado al momento de escribir este artículo, NativeScript está promocionando Visual Studio Code como el editor recomendado. Microsoft tiene una implementación para NativeScript y ReactNative para su depurador de VS Code.

Pruebas

Dado que es todo JavaScript que cumple con los estándares, puede usar cualquiera de las herramientas disponibles para escribir pruebas unitarias. Ambos marcos soportan los marcos de pruebas más populares como Karma, Jasmine, Mocha.

Para las pruebas funcionales, dado que la interfaz de usuario es completamente nativa, puede usar cualquier herramienta de prueba que funcione con los marcos nativos como Appium.

Vea cómo escribir pruebas en NativeScript. En ReactNative.

Actuación

Como mencioné varias veces anteriormente en el lado del rendimiento, estará satisfecho con ambos marcos. Es una gran mejora con respecto a las conocidas aplicaciones PhoneGap. Las aplicaciones finales no son diferentes de las aplicaciones nativas reales. El uso de los componentes de la interfaz de usuario nativos reales es un gran beneficio para ambos marcos.

Ambos marcos tienen un rendimiento excepcional en iOS, tanto en términos de tiempo de carga (menos de un segundo para ambos) como en términos de FPS (60 fps en la mayoría de los casos) en tiempo de ejecución.

En Android, el rendimiento sigue siendo bueno, pero debido a la arquitectura subyacente del sistema operativo nativo, el rendimiento general no es tan bueno como en iOS. El tiempo de carga y el comportamiento en tiempo de ejecución no es tan pulido como en iOS. Pero esto también es válido para las aplicaciones nativas puras, así que no seas demasiado exigente con NativeScript y ReactNative. ReactNative tiene un tiempo de carga ligeramente mejor (más rápido) en Android en comparación con NativeScript (1.4s vs 2.2s). El equipo de NativeScript está abordando esto con la introducción de instantáneas de almacenamiento dinámico de memoria, pero esta característica aún es experimental.

Aplicaciones reales

Para ver algunas aplicaciones reales, puede seguir estos enlaces para la aplicación de fregadero de cocina NativeScript:

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

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

O puede consultar las aplicaciones desde la galería de muestras de NativeScript.

Para ReactNative no conozco ninguna aplicación de fregadero de cocina, pero puedes consultar cualquiera de las aplicaciones de escaparate. Asegúrese de verificar las aplicaciones realizadas por Facebook para la mejor implementación.

Para concluir

Para mí, personalmente, la toma de decisiones más importante se basa en sus habilidades existentes: si tiene habilidades angulares, solo use NativeScript, si es un desarrollador de React encontrará que ReactNative es más familiar y fácil de usar. Si está implementando software comercial, considere el soporte y los servicios disponibles en NativeScript y el conjunto de habilidades Angular. Si necesita una interfaz de usuario nativa más personalizada, NativeScript se adaptará mejor a usted porque no necesita conocer ObjC o Java para usarlos. Al final del día, ambos marcos son modernos y cumplen su promesa y esto conducirá a aplicaciones de primer nivel.

Feliz codificación, y espero que lo anterior ayude :). Por favor, siéntase libre de pedirme más detalles. Ciertamente, hay muchas cosas que no están cubiertas aquí, pero puedo ir más allá y explicar todo lo anterior con más detalles. Puedes contactarme en twitter - @ValioStoychev.

Divulgación: Trabajo como PM para NativeScript, pero traté de ser completamente imparcial. Espero que aprecies el contenido anterior. En caso de que piense que hay hechos incorrectos, ¡hágamelo saber y aplicaré las modificaciones!


Respuesta 2:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript


Respuesta 3:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript


Respuesta 4:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript


Respuesta 5:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript


Respuesta 6:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript


Respuesta 7:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript


Respuesta 8:

Diferencia entre React Native y NativeScript

Tanto React Native como NativeScript son marcos asombrosos. Ambos marcos son parte de los marcos móviles multiplataforma de nueva generación que NO están utilizando el navegador para empaquetarlo en la aplicación nativa. Los trabajos realizados por ambos equipos son excelentes, pero para enumerar aquí hay algunas diferencias entre NativeScript y React Native.

Lea también las preguntas básicas de la entrevista nativa de React

NativeScript

Reaccionar nativo

Comunidad receptiva y servicial.

Comunidad receptiva y servicial.

Sin uso de producción "real"

Uso comprobado de producción.

Mantenido por una pequeña empresa.

Mantenido por una gran empresa.

Menos popular

Popular.

Mayor que reaccionar nativo

Más nuevo que NativeScript