Sí hay. Por híbrido, supongo que te refieres a agrupar tu JavaScript y / o HTML y CSS en un WebView usando una de las bibliotecas disponibles, como Cordova.
Sin embargo, si esta diferencia es notable o no (y cuánto) depende de algunos factores. Déjame ver si puedo hablarte a través de eso. Permítanme decir también que en cuanto al rendimiento, la diferencia es más notable cuando se desarrolla para Android que para iOS (si usa WKWebview).
Aquí es donde creo que va a la zaga:
- ¿Debería tener un servidor por aplicación?
- ¿Cuáles son las buenas aplicaciones para Android que debo usar?
- ¿Cuál es el mejor sitio web o aplicación para obtener conocimiento?
- ¿Qué tecnologías se utilizan para configurar el backend de una aplicación móvil?
- ¿Qué opinas de JQMobi?
Animando varios elementos simultáneamente:
Las transiciones de estado complejas, como una diapositiva de página con animaciones CSS para más de un elemento, a menudo caen por debajo de los 60 fps deseados. En Android, debes ser extremadamente cuidadoso y, de preferencia, solo animar una cosa a la vez.
El manejo del teclado de software en iOS requiere mucho trabajo en comparación con el nativo.
La mayoría de las aplicaciones implican alguna forma de permitir la entrada del usuario. Al igual que en Safari, los dispositivos iOS desplazarán la ventana gráfica para que los elementos de entrada sean visibles sin respetar el desplazador actual o la jerarquía de elementos. La mayoría de las aplicaciones deben y deben seguir las Pautas de diseño de Apple y, debido a eso, probablemente tengan una barra de navegación fija en la parte superior y quizás una barra de pestañas para las aplicaciones con pestañas en la parte inferior. Esto terminará en alteraciones de diseño que no solicitó y de las que nunca tendrá que preocuparse cuando desarrolle para nativo.
Los trucos para solucionar este problema tampoco son bonitos, ya que a menudo requieren que escuche los eventos de enfoque y desenfoque y que mezcle cosas como el desbordamiento y el posicionamiento en el elemento contenedor para escapar del problema de poder desplazar la ventana gráfica. Otro truco es llamar a window.scrollTo en foco para desplazarse hacia arriba o para transformar el elemento de entrada en la página al inicio táctil y luego retroceder rápidamente nuevamente. No es lindo.
La posición del cursor no se volverá a representar cuando la entrada que contiene se transforma o se desplaza y estará encima de todos los demás elementos sin importar su índice z. Son las pequeñas cosas como esa las que marcan la diferencia notable.
Otras cosas incluyen no poder hacer cosas como el teclado negro, cambiar el contenido del botón “Ir / regresar” o cambiar el tipo de teclado a uno de los proporcionados para el desarrollo nativo (por ejemplo, el teclado de Twitter).
Me temo que podría continuar con respecto a la visualización / ocultación del teclado y las compensaciones que tiene que hacer aquí. En mi opinión, ese es el mayor defecto del desarrollo híbrido.
No puede usar componentes de IU nativos:
Otra cosa que aprenderá es que necesitará reconstruir muchos elementos de la interfaz de usuario que son comunes para cada plataforma. Puede usar algunas de las bibliotecas de UI existentes y ver si encajan en su entorno. Aquellos que son nativos de la plataforma simplemente “se sienten” bien, y aunque puede acercarse mucho con algunos componentes personalizados, hay cosas como el navegador de iOS que es extremadamente difícil de corregir debido a las muchas animaciones.
Existen peculiaridades y limitaciones específicas del dispositivo:
Algunas cosas simplemente no serán posibles como sabes de otras aplicaciones. Por ejemplo, la reproducción de video en línea no funciona en WKWebView en iOS y no hay forma de alternar el estado silenciado durante la reproducción mediante programación.
Habrá errores que están fuera de su control :
La mayoría de las cosas serán tu culpa. Sin embargo, a veces suceden cosas extrañas en el puente entre Objective-C y JS. A veces, esto produce errores que son realmente difíciles de depurar.
Notas de cierre:
Permítanme decir que, de hecho, puede obtener excelentes resultados como desarrollador híbrido. Si eres excelente en el desarrollo web móvil, el resultado probablemente será mucho mejor que si comienzas tratando de aprender Swift y / o Java y comienzas a desarrollar aplicaciones nativas. Pero tenga en cuenta que si profundiza lo suficiente, lo más probable es que tropiece con caprichos. Si sus usuarios se preocupan o no es una pregunta diferente. Siempre pienso que a los usuarios les importa. Debería sentirse bien. Hay una razón por la cual instalan nuestras aplicaciones localmente en sus dispositivos después de todo. Esperan una mejor experiencia que cuando navegan por nuestras aplicaciones web en su navegador móvil.