código Google Analytics async utiliza un patrón de diseño muy distinto para la ejecución de código JavaScript.¿Cuál es el nombre del patrón de diseño asincrónico de Google Analytics y dónde se usa?
El código depende de una biblioteca y no sabe si la biblioteca se ha cargado o no. Si la biblioteca no se cargó, simplemente pone en cola todos los comandos en un objeto Array. Cuando la biblioteca se carga, solo crea el objeto _gaq y ejecuta todos los comandos en la secuencia en la que se incluyó. Luego sobrescribe la función push para que los comandos futuros se ejecuten de inmediato.
La idea es hacer que los comandos se ejecuten muy rápido cuando se ponen en cola. El código solo se evalúa realmente más tarde cuando se carga la biblioteca.
También cargan la biblioteca con los parámetros async=true
. Esto no causa casi ningún impacto en el tiempo real de carga de la página.
Los comandos se parecen a las versiones de sincronización de la misma, pero la primera cadena es un nombre de función y los siguientes parámetros son los parámetros de la función. También puede insertar funciones en esta matriz y las funciones se ejecutarán también en secuencia con un contexto nulo. Entonces, si necesita hacer algo sincrónico con la biblioteca, puede presionar una función para hacer esto dentro de _gaq.
Creo que esta es una solución muy inteligente pero nunca la había visto antes. ¿Alguien sabe el nombre de este patrón de diseño o dónde se usa además del código de seguimiento de Google Analytics?
Si desea utilizar 'async = true' en el archivo jquery.js para reducir el tiempo de carga de la página, no hay manera de saber si terminó de cargarse o no cuando se ejecuta el código. ¿No sería agradable poner en cola comandos de jQuery como este o tal vez poner todo el código en una sola función y ponerla en cola para que se ejecute una vez que jQuery termine de cargarse? – Eduardo
@eduardocereto seguro que lo haría. Sugiérele a jQuery que proporcionen una matriz global '_domReady' desde la que puedan leer las funciones dom ready. – Raynos
no es un '_domReady', sería más como' _jQueryReady', ya que el dom no es necesariamente Ready. Con el indicador 'async = true', el archivo puede cargarse antes de que el DOM esté listo o después de que el DOM esté listo. El archivo js puede cargarse incluso después de que windows.onload incendios. – Eduardo