Un resumen de consejos prácticos para optimizar el rendimiento del front-end web
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'