La respuesta de Mattias Petter Johansson es excelente. Solo me gustaría despotricar un poco más.
Decodificación de imagen en el hilo principal
iOS Safari decodifica y pinta imágenes en el hilo principal que suelta fotogramas. Creo que esto se soluciona en Blink. Implementar la decodificación en un trabajador y el dolor incremental usando Canvas y requestAnimationFrame funciona, pero es lento.
- ¿Cuál es la diferencia entre un sitio web receptivo y un sitio móvil?
- ¿Qué temas móviles de WordPress tienen el mejor compromiso?
- ¿Existe un sitio web, que hace para aplicaciones y proyectos de sitios web, lo que hace Kickstarter para productos físicos?
- ¿Existe una forma programática de verificar si un sitio tiene una versión móvil o un diseño web receptivo?
- ¿Cuál es el mejor software de encuesta integrable?
Recolección de basura
La recolección de basura puede causar paradas difíciles de predecir. Puede evitar esto haciendo cero asignaciones en sus rutas de código activo (GC se activa cuando se asigna un objeto), pero actualmente no hay herramientas para ayudarlo a hacer esto (tengo un script súper hacky que registra métodos y estructuras de sintaxis que son probable de asignar).
Creo que debemos cambiar la relación entre el navegador y las aplicaciones que se ejecutan dentro de él. En este momento, el tiempo de ejecución intenta adivinar qué va a hacer la aplicación. En cambio, deberíamos poder decirle al navegador “esto es lo que estoy haciendo” para que no tenga que adivinar (es decir, para que pueda programar el GC o la cantidad de recolección de manera óptima)
Integración / distribución de sistemas
No hay notificaciones push? ¿No hay distribución en la tienda de aplicaciones? Suena como una mala decisión comercial para construir su aplicación en la pila web (PhoneGap aborda la mayor parte de esto).
Problemas culturales
La comunidad de desarrolladores web lucha por cosas estúpidas y no por cosas importantes (bikeshedding). La gente está eligiendo tecnologías por razones superficiales como la sintaxis o si algún tipo en Twitter la está usando en lugar de razones de ingeniería de software o rendimiento. Esto significa que los ingenieros inteligentes están trabajando en mejorar las herramientas incorrectas para satisfacer a las masas en lugar de impulsar las correctas.
Por ejemplo, hay un millón de cargadores de módulos del lado del cliente para JS. Todos discuten sobre ellos todo el tiempo. Ninguno de ellos admite la carga asíncrona de módulos de manera eficiente (RequireJS se acerca, pero barfs en gráficos de dependencia no triviales).
Barra de calidad
Los ingenieros de front-end en la web deben comprender que los dispositivos móviles nativos van a matar por completo a la Web (sí, realmente lo creo) a menos que intenten igualar su calidad. Es posible y con un buen marco no tan difícil como parece.
El ejemplo por excelencia es el navegador izquierdo en un sitio web móvil que puede tocar para abrir, pero no puede deslizar parcialmente para abrir o cerrar. Eso apesta.
Dependencia de los organismos de normalización.
Los organismos de normalización deben moverse lentamente; están diseñados para garantizar que sus estándares se adopten realmente. Es algo bueno, y necesitan equilibrar un montón de problemas competitivos.
No deberíamos necesitar confiar en ellos para obtener las características que necesitamos para enviar aplicaciones hoy. Si la funcionalidad está integrada en el navegador, llegará a una escala demasiado lenta y probablemente no será lo suficientemente flexible como para cumplir todos los caprichos de un diseñador (lo que tenemos que poder hacer, porque los nativos pueden).
Ejemplo: debería poder implementar position: sticky con JavaScript simple y DOM a 60 fps en una vista web de iPhone, para poder enviar un producto con él hoy y modificar su comportamiento exacto sin que el proveedor del navegador adivine todos los casos posibles en los que Podría usarlo
¿Qué debemos hacer?
Quiero que alguien bifurque WebKit / Blink / Gecko y lo haga efectivo por cualquier medio necesario , incluso si eso significa romper los estándares, la compatibilidad con versiones anteriores, o como la “semántica” o lo que sea que la gente comete en estos días. Y contratar a un ejército de abogados para defenderlo de los trolls de patentes. Y haz que PhoneGap trabaje con él.