Red de conocimiento informático - Problemas con los teléfonos móviles - Un resumen de consejos prácticos para optimizar el rendimiento del front-end web

Un resumen de consejos prácticos para optimizar el rendimiento del front-end web

Hoy quiero compartir con ustedes un artículo sobre un resumen de consejos prácticos para la optimización del rendimiento del front-end web. El rendimiento de JavaScript en los navegadores puede considerarse el problema de usabilidad más grave al que se enfrentan los desarrolladores. Este problema se ve agravado por la naturaleza bloqueadora de JavaScript y el hecho de que la mayoría de los navegadores utilizan un único proceso para manejar la ejecución de la interfaz de usuario y los scripts de JavaScript, por lo que sólo se puede hacer una cosa a la vez. Cuanto más demore el proceso de ejecución de js, más tiempo esperará el navegador una respuesta.

I. Mejorar el rendimiento de carga

1. Los navegadores IE8, FF, 3.5, Safari4 y Chrome permiten la descarga paralela de archivos js. Cuando un script descarga recursos, no bloqueará otros scripts. . descargar. Sin embargo, la descarga de js seguirá bloqueando la descarga de otros recursos (como imágenes). Aunque las descargas de scripts no se afectan entre sí, la página aún tiene que esperar a que se descargue y ejecute todo el código js antes de poder continuar. Entonces todavía hay un problema de bloqueo de secuencias de comandos. Se recomienda colocar todos los archivos js en la parte inferior de la etiqueta del cuerpo para minimizar el impacto en toda la página.

2. Reducir el número de archivos de script fuera de la página mejorará el rendimiento de la página:

lete'){_______

_script.onreadystatechange=null;_______<. /p >

callback()_____

____

__

}else{//Otros navegadores___

script onload. =función(){_____

_allback()

___}_

}_

}_

script.src= url;_

document.getElementsByTagName('head')[0].appendChild(script);

}

/Use

loadScript('./a.js',function(){_

loadScript('./b.js',function(){___

loadScript('.script('./a.js')_

.script('./b.js')_

.wait(función(){__

_pp.init();

})

// Para garantizar el orden de ejecución, puede hacer esto, en este momento se debe ejecutar un antes de b

// p>

$LAB.script('./a.js')_

.script('.script('./a.js ').wait()_

.script('./b.js')_

.wait(function(){___

_pp. init();

})

II. Acceso a datos y rendimiento de JS

1. En js, la ubicación del almacenamiento de datos tendrá un impacto significativo en el rendimiento general del código Hay cuatro formas de almacenar datos. ****: Los literales, las variables, los elementos de la matriz y los miembros del objeto tienen sus propias características de rendimiento.

2. Acceder a literales y variables locales es el más rápido, mientras que acceder a matrices y objetos es más lento.

3. Acceder a variables locales es más rápido que acceder a variables de ámbito cruzado. Más rápido porque existen variables locales. al comienzo de la cadena de alcance

4. Los miembros de objetos anidados tienen un gran impacto en el rendimiento y deben evitarse tanto como sea posible

5.

6. Cuanto más profundos estén los atributos y métodos en la cadena de prototipos, más lento será el acceso a ellos.

6 Por lo general, podemos pasar los miembros de objetos utilizados, los elementos de matriz y los dominios cruzados varias veces. las variables se guardan en variables locales para mejorar el rendimiento de js

III. Programación DOM

1. Vuelva a calcular los cambios geométricos de la página, por lo que los requisitos de rendimiento son mayores.

Nota: si está actualizando una parte de HTML en una operación crítica para el rendimiento, se recomienda utilizar internalHTML ya que se ejecuta muy rápido en la mayoría de los navegadores. Pero para la mayoría de las operaciones diarias, esto no tendrá mucho impacto, por lo que debes decidir si usar InnerHTML o createElement()

2.Optimización de la colección HTML

HTML Una colección contiene un matriz de objetos de clase a los que hacen referencia los nodos DOM. Estos objetos de clase siempre están conectados al documento y la operación de consulta se repite cada vez que se necesita la información más reciente, incluso si es solo para obtener la cantidad de elementos de la colección.

①_Optimización 1 - Convierte la colección en una matriz collToArr

functioncollToArr(coll){_

for(vari=0,a=[],len= coll .length;i

a._ush(coll[i]);

__

returna

}

②Longitud de la colección de caché

③Utilice variables locales para acceder a los elementos de la colección (es decir, copie el acceso a la colección en caché a una variable local y use la variable local para operar)

3. Atraviesa el DOM <

① Utilice API que solo devuelvan nodos de elementos para atravesar el DOM, porque estas API son más eficientes que implementarlas usted mismo:

td{border:1pxsolid#ccc; relleno: 5px;margin:auto;}

td>p{text-align.left;}

td>pspan{text-align:center;display:block;}

Nombre del atributo

Atributo que se está reemplazando

children

childNodes

childElementCount

childNodes .length

primerElementChild

firstChild

lastElementChild

lastChild

nextElementSibling

nextSibling

p>

reviousElementSibling

reviousSibling

_Consultation ≡ dickey_PI-querySelectorAll()

el método querySelectorAll() toma el selector css como parámetro y devuelve NodeList (una matriz de objetos de clase que contienen nodos coincidentes). Este método no devuelve una colección HTML, por lo que los nodos devueltos no corresponden a la estructura del documento en tiempo real y evita los problemas de rendimiento causados ​​por las colecciones HTML. .

let_rr=_ocument.querySelectorAll('div.warning,_iv.notice>_')

4. Redibujar y reorganizar

Descargar en el navegador Después de todo componentes de la página (html, js, js, etc.). El navegador analizará y generará dos estructuras de datos internas: el árbol _OM y el árbol de representación. Una vez que se construyen el árbol DOM y el árbol de renderizado, el navegador comienza a dibujar elementos de la página.

1) Condiciones para que se produzca la reorganización:

Agregar o eliminar elementos DOM visibles Cambio de posición Cambio de tamaño de elemento Cambio de contenido Inicialización del renderizador de página Cambio de tamaño de la ventana del navegador El cambio de la barra de desplazamiento desencadena toda la reorganización de pages_Dragon Dream_Dream City Entertainment_Dream City International Entertainment_Dream City International Entertainment Platform Toma de riesgos

5. Ordenar y actualizar los cambios en el árbol de presentación

La mayoría de los navegadores optimizan el proceso de reordenamiento poniendo en cola los cambios y ejecutándolos en lotes.

offsetTop,offsetWidth...

scrollTop,scrollHeight...

clientTop,clientHeight...

getComputedStyle()

Algunas sugerencias de optimización: Separe la operación de establecer estilo de la operación de obtener estilo:

/Set style

body.style.color='red';

body.style.fontSize=' 24px'