plugin - ¿Por qué tenemos nuevas líneas en JavaScript minificado?
minificar significado (3)
Sé de una pregunta similar pero está un poco lejos de lo que estoy haciendo aquí, así que por favor no la flag
como un duplicado.
Cuando ves la versión de producción de jQuery , ¿por qué hay una nueva línea después de un tiempo? Descargué una copia y borré todas las líneas nuevas (aparte de la licencia) y aún funcionaba. (Corrí la unidad de prueba de la unidad completa contra mis cambios en Mozilla Firefox, Google Chrome y Opera).
Sé que tres líneas nuevas (sin contar la licencia) no lo van a ralentizar mucho, pero aún así, ¿no ayuda en lo más mínimo?
Me he asignado un pequeño desafío, para exprimir cada pequeña parte del rendimiento de mi código JavaScript.
Las líneas (excluyendo la licencia) tienen alrededor de 30k caracteres de longitud. Podría ser para evitar errores donde algunos analizadores de Javascript mueren en líneas extremadamente largas. Probablemente esto no suceda en los navegadores de hoy, pero quizás algunos de los más antiguos o más oscuros tengan tales límites.
(Respuesta anterior a continuación, que también podría ser aplicable, pero no en este caso)
Esto podría deberse a que JSMin , un popular JSMin Javascript, retendrá los JSMin línea en la salida bajo ciertas condiciones. Esto se debe a que, por ejemplo, en las alimentaciones de línea de Javascript son importantes si omite los puntos y comas. La documentación dice:
Es más conservador al omitir los saltos de línea, porque a veces los saltos de línea se tratan como puntos y coma. Un salto de línea no se omite si precede un carácter no ASCII o una letra o dígito ASCII o uno de estos caracteres:
/ $ _ { [ ( + -
y si sigue un carácter no ASCII o una letra o dígito ASCII o uno de estos caracteres:
/ $ _ } ] ) + - " ''
Otros minificadores pueden tener reglas similares.
Por lo tanto, esto es principalmente una precaución contra la eliminación accidental de un salto de línea que puede ser necesario, sintaxis. Lo último que quieres es que tu JS minificado no funcione más porque el minificador destruyó su semántica.
Respecto a "Sé que tres líneas nuevas (sin contar la licencia) no va a ralentizarlo mucho, pero aún así, ¿no ayuda en lo más mínimo?" : Cuando su servidor utiliza la compresión gzip, la diferencia probablemente será discutible de todos modos.
Para citar las preguntas frecuentes de Closure Compiler :
El compilador de cierre agrega intencionalmente saltos de línea cada 500 caracteres aproximadamente. Los cortafuegos y los servidores proxy a veces dañan o ignoran los archivos grandes de JavaScript con líneas muy largas. Agregar saltos de línea cada 500 caracteres evita este problema. La eliminación de los saltos de línea no tiene ningún efecto en la semántica de un script. El impacto en el tamaño del código es pequeño, y el Compilador optimiza la ubicación de los saltos de línea para que la penalización del tamaño del código sea aún menor cuando los archivos están comprimidos.
Esto es relevante para cualquier programa de minificación en general.
jQuery actualmente usa UglifyJS para reducir su código fuente. En su secuencia de comandos de compilación , establecieron específicamente la directiva max_line_length
en 32 * 1024
:
La documentación para UglifyJS tiene esto que decir sobre la directiva max-line-len
;
--max-line-len
(32K caracteres predeterminados): agrega una nueva línea después de unos 32K caracteres. He visto croar tanto a FF como a Chrome cuando todo el código estaba en una sola línea de alrededor de 670K. Pase –max-line-len 0 para deshabilitar esta función de seguridad.