2011-02-12 14 views
7

Al leer muchos artículos, como How do I include a JavaScript file in another JavaScript file? - aparentemente no es posible incluir un script en otro.javascript BUENA PRÁCTICA - gestión de scripts/reutilización de código

Así que aquí está mi pregunta - Estoy preocupado por JS bloat. o tener demasiado código sin usar cargando páginas que no lo usan/lo necesitan. Sin embargo, ocasionalmente, necesitaré las mismas funciones en varias páginas, pero no en todas.

Si consideramos hacer secciones lógicas de una aplicación en línea en objetos, como 'clientes' o 'artículos', podemos tener un montón de código que es específico para cada uno de estos 'objetos'.

Como ejemplo, podría tener un grupo de código 'de perfil' que me permite administrar mi perfil, puede tener múltiples ventanas emergentes div que hacen uso de Ajax, y por el bien del ejemplo, permite Digamos que tengo un par de funciones que controlan mi "dirección de envío", controlan el div-pop-up, manejan el Ajax específico de esa información. - digamos que tengo 4 funciones para ese fin. Pero eso es solo parte de un archivo 'profile.js' mucho más grande que maneja TODO mi 'perfil' crud ...

Ahora tengo otra sección de la aplicación, como un carrito de compras, donde Es necesario permitir que el usuario acceda a la div-pop-up "dirección de envío" y a toda la funcionalidad de Ajax.

Creo que me gustaría volver a utilizar solo las funciones de profile.js - porque parece que 'mal escribir' para 'volver a escribir' código que hace lo mismo - porque entonces tendría problemas de mantenimiento del código a largo plazo. Si realizo un cambio, debo recordar dónde utilicé ese código.

Así que si me dejan una 'mejor práctica' - dadas las limitaciones de cómo funcionan estas tecnologías - no puedo 'anidar' y reutilizar js como hago con el lado del servidor incluye O CSS.

Mi código se va a tener que ser dividida en archivos separados, y (teóricamente) un montón de archivos .js más pequeños se utilizará

Así que mi <head> se verá así

<head> 
<script src='smallfile_1.js'...> 
<script src='smallfile_2.js'...> 
... 
<script src='smallfile_10.js'...> 
<head> 

y " SI "Necesito una sección en otra página

<head> 
<script src='that_other_object_/smallfile_3.js'...> 
</head> 

... ¿las llamadas TTP repetidas a estos archivos más pequeños se vuelven generales? En una aplicación de tráfico pesado, parece que la red y la sobrecarga del servidor podrían comenzar a ser una preocupación, o simplemente estoy haciendo una montaña desde una colina de topo.

Hace 100k solicitudes de 10 archivos de 5k, REALMENTE iguales - 100k solicitudes para 1 archivo de 50k?

Ahora que lo escribo y lo pienso - cada imagen en una página ES una llamada separada al servidor también, así que tal vez estoy solucionando un problema que no es un problema.

¿Puedo obtener algunos comentarios sobre lo que otras personas están haciendo sobre la reutilización de código JS en todos los módulos, sin hacer que un archivo "enorme" se comparta entre los módulos?

+3

7 preguntas, dando lugar a 15 respuestas combinadas, ¿y no pudo ver su manera de aceptar una sola? – nmichaels

Respuesta

11

La respuesta a esto es simple: usted crea una biblioteca, o un marco que contiene toda la función de utilidad que tiene, luego carga esa biblioteca en todas sus páginas.Debido al almacenamiento en caché del navegador, la única vez que el cliente tendrá que recuperar ese archivo está en la carga inicial, por lo que incluso si el archivo es bastante grande, el cliente solo tendrá que cargarlo una vez.

Esto significa que algunos sitios, como Stack Overflow, usan solo un único archivo maestro de JavaScript que contiene la mayor parte del código necesario para que funcionen todas las páginas del sitio. Aunque solo se necesitan algunas de las funciones en cada página, el almacenamiento en caché del navegador significa que este método será más eficiente.

La otra manera de evitar que esto suceda es la creación de un archivo de servidor pequeño que combinará el múltiplo JavaScript en el servidor de forma dinámica, y servirlos cuando el cliente solicita para ellos, por ejemplo:

<script src="/resource/js?load=file1,file2,file3" type="text/javascript></script> 

Sin embargo, este método no se recomienda porque anula el almacenamiento en caché del navegador. Por lo tanto, la mejor práctica es , generalmente, para mantener un gran archivo maestro de JavaScript que contiene todo el código necesario para que el sitio funcione, que se almacena en caché en la carga de la página inicial.

+1

thx ... ¿hay alguna manera de 'probar' o ver si el almacenamiento en caché está realmente sucediendo? alguna forma de 'ver' el kb o los archivos entrantes de una solicitud ... ?? – jpmyob

Cuestiones relacionadas