Por lo que entiendo,
- HTML es un lenguaje de marcado, también lo es el contenido de XAML, XIB y lo que sea que Android use y otros marcos de desarrollo de interfaz de usuario nativos.
- JavaScript es un lenguaje de programación que se usa junto con él para manejar las secuencias de comandos del lado del cliente que incluirá cosas como el manejo de eventos, validaciones del lado del cliente y cualquier otra cosa que C #, Java, Objective-C o C ++ hagan en varios de estos marcos.
- Hay patrones MVC / MVVM disponibles en marcos de formularios como Sencha's, Angular, etc.
- Tenemos localStorage en forma de sqlite y almacén de valores clave como lo tienen otros frameworks y tiene la especificación API para casi todo lo que falta.
- Siempre que un marco de IU nativo tenga que representar la IU, debe analizar un marcado similar y representar la IU.
Desglose de preguntas
- ¿Qué impide hacer lo mismo en HTML y JS?
- En lugar de tener un control web o un navegador como una capa intermedia, ¿por qué no se puede hacer que HTML (junto con CSS) y JS funcionen de la misma manera?
- Incluso si hay una capa, también lo hacen .net runtime y JVM en otros casos donde C ++, C no se están utilizando.
- Así que tomemos el caso de Android, como Dalvik, ¿por qué Can't Chromium puede ser otra opción (junto con Dalvik y NDK) donde HTML hace lo que hace el marcado de Android y JavaScript se usa para hacer lo que Java hace?
Entonces la pregunta es,
Incluso si las implementaciones actuales no son tan buenas, pero en teoría, ¿es posible hacer que las aplicaciones basadas en HTML5 funcionen como otras aplicaciones nativas especialmente en dispositivos móviles?
javascript
mobile
html5
chrome
Amogh Talpallikar
fuente
fuente
Respuestas:
El aficionado de las aplicaciones HTML5, LinkedIn se hizo nativo a principios de 2013. En la entrevista en VentureBeat explican por qué.
Creo que esta es la parte más relevante para su pregunta:
...
fuente
La falta de una biblioteca estándar de Javascript es un inhibidor horrible. Hay grandes marcos como jQuery, Dojo, YUI, por nombrar algunos, pero todos ellos se centran únicamente en la capa de presentación y XHR.
¿Desea un registro configurable, herramientas criptográficas, algoritmos de gráficos, generadores de UUID, mapas, conjuntos, árboles, plantillas, gestión de dependencias, manipulación de fechas, localización / internacionalización, operaciones matriciales, inyección de dependencias, pruebas unitarias, reducción de mapas, procesamiento XML? Trivial para los lenguajes JVM o .NET: en Javascript a menudo tiene que implementar su propia implementación.
fuente
Una razón por la que Javascript es lento es su total falta de seguridad de tipos. Cualquier variable puede ser de cualquier tipo en cualquier momento. Además, la mayoría de las operaciones son válidas con muchos tipos diferentes, pero tienen semánticas diferentes . Un término simple
No es trivial para que el intérprete, porque
a
, yb
podría ser números o cadenas. Cuando ambos son números, es una suma aritmética. Cuando ambos son cadenas, esta es una concatenación de cadenas. Cuando uno es una cadena y uno es un número, el número debe formatearse antes de realizar una concatenación de cadenas. Estas son operaciones completamente diferentes que requieren interpretar los argumentos de manera diferente.Dependiendo de los tipos de
a
yb
, el tipo dea
ahora puede ser entero, doble o Cadena, independientemente del tipo que fuera antes.Debido a que las variables en JS pueden cambiar su tipo en cualquier momento, el intérprete difícilmente evalúa los tipos cada vez que se llama a esta instrucción para evitar hacer una operación incorrecta. Esto requiere ciclos de CPU adicionales.
Otras características que hacen que la optimización sea mucho más difícil son matrices dispersas o recolección de basura y controladores de eventos que pueden activarse en cualquier momento.
Eche un vistazo a asm.js : es un subconjunto de Javascript que permite una optimización mucho mejor al deshacerse de algunas características de JS, especialmente la escritura dinámica.
fuente
a
puede ser entera, cadena o doble, etc., tiene razón. Y los navegadores más antiguos que todavía usan intérpretes, por supuesto, tampoco tienen estas optimizaciones.