Las librerías de JavaScript son un gran invento pero, no son otra cosa que herramientas, tan útiles o inútiles como cualquier otra. Ninguna de ellas es una solución universal, uno las puede agregar fácilmente pero debemos estar conscientes de lo que eso significa.

Primero que nada, hay que saber que no son elementos neutros. Una vez que decidimos usar una, la carga del sitio se incrementará, a veces de manera sustancial, ya que son archivos de cierto volumen, muchos de los cuales requieren de otros agregados es decir, de otros archivos que también se cargan; el caso típico es Prototype que suele ser combinado con Scriptaculous, bulider.js, effects.js, dragdrop.js, controls.js, slider.js y sound.js; todo eso suma unos 60/70KB; la versión no minimizada de jQuery pesa más o menos lo mismo pero, ninguna de ellas se compara con las decenas de scripts que se agregan de manera automática en Blogger o el peso que tienen los distintos servicios: botones de compartir, estadísticas, etc, etc.

En definitiva, según mi opinión, utilizar o no utilizar librerías no es una decisión que deba tomarse pensando en tiempos de carga o por lo menos, ese no es el elemento fundamental a tener en cuenta.

Obviamente, mientras seamos conscientes de las cosas, cualquier decisión es aceptable pero, mi experiencia personal me dice que las librerías tienen sentido sólo si vamos a usarlas de verdad; es decir, si vamos a sacarles provecho porque en eso reside su utilidad. Si sólo las agregamos para usar un efecto eventual, su utilidad se reduce; no es que esté mal pero entendamos que, de alguna manera, es un desperdicio.

Definir la librería a usar también implica una limitación básica; de ahí en más, estaremos "atados" a esa librería; si vamos a agregar alguna otra cosa, deberemos verificar que sea compatible.

Es muy usual que pregunten por que no anda algo y al mirar, uno ve que el sitio usa jQuery y quiere usar un plugin para Prototype o viceversa. Tiene que quedar claro que por lo general, las librerías de este tipo son incompatibles entre si, o usamos una o usamos otra y, si bien hay alguna posibilidad de usar dos o más juntas, esto no es conveniente de ninguna manera ya que sólo estaremos duplicando funciones, incrementando la carga del blog sin beneficio alguno y abriendo la puerta a conflictos que a veces no tienen solución. No vale la pena, lo que puede hacerse con una, seguramente puede hacerse con otra.

Y ese es problema ... si bien, lo que puede hacerse con una también puede hacerse con otra, no siempre es sencillo encontrar la respuesta porque a menos que sepamos cómo funcionan y nosotros mismos creemos nuestros propios scripts, encontrar las respuestas en la web puede ser una tarea imposible.

En un tiempo, no hace mucho, la mayoría de ellas tenían una difusión pareja y los desarrolladores las usaban de manera indistinta y según sus gustos personales pero, eso ha cambiado y la decantación propia de estas cosas ha transformado a jQuery en la nueva vedette hasta, casi casi, convertirla en una especie de standard que usan muchos sitios e incluso las grandes empresas, desde Google hasta Facebook. Por lo tanto, será más fácil encontrar información sobre esta librería que sobre cualquier otra lo cual no significa que sea obligatoria ni que sea la mejor.


En la web hay una tendencia a canonizar herramientas (navegadores, sistemas operativos, software, redes sociales) y las librerías no están exentas de esa plaga bastante ridícula. "El martillo es lo mejor y quien no lo usa es un tonto" ... cambien martillo por una marca cualquiera y verán de lo que hablo.

El problema de estas dicotomías es que quien pondera el martillo probablemente, sólo conoce el martillo y por lo tanto, cree que es una herramienta universal, única e irreemplazable, cosa que, cualquiera con dos dedos de frente sabe que es falso. Nada es mejor o peor en abstracto y la mayoría de estas cosas que insisto, sólo son herramientas, es buena o mala porque carecen de moral. Simplemente, me gustan o no me gustan, me resultan útiles o no y punto.

Es más ... me resultan útiles hoy ... ¿pero mañana?

Entonces, ¿si usaba una librería y ahora quiero cambiarla?

Ahhhh buena pregunta ...

27 comentarios:

Manuel Alberto  

La respuesta a esa pregunta sería, lo que nos enseñaste... usar blogs auxiliares para eliminar problemas de compatibilidad y sobrecarga del blog, :)

JMiur  

En realidad, es un pregunta sin respuesta o con tantas respuestas como personas existen :-D

Responder
Syd  

Pregunta... en cuestiones de tiempos de carga, ¿cual seria la mejor opcion al tratarse de Prototype & Scriptaculous?

Cargarlo por cuenta propia?
Desde las API de Google?
O un comprimido como Protoculous?


Gracias, JMiur!

JMiur  

No existen respuestas absolutas. El tiempo de carga tiene un punto clave que es la velocidad de respuesta del servidor donde esté alojado el archivo. Un archivo pequeño puede tardar en cargarse más que uno grande si el servidor es lento.

Todo acceso a un servidor externo implica una demora. Varios archivos pequeños, alojados en distintos servidores tardarán en cargarse más que uno grande.

No hay una ecuación exacta para eso.

Entre alojarlo uno mismo (siempre hablando de Blogger) o usar el API de Google, no me cabe duda que esto ultimo es mucho mejor; tanto es así que incluso los sitios más "grandes" emplean este método ya que de ese modo, alivian la carga de sus propios servidores sin modificar la performance de modo sustantivo.

De todos modos, a mi juicio, la carga de scripts (si se trata de cosas y volúmenes normales) no es un dato relevante a la hora de medir la performance de un sitio. Imágenes, estadísticas, gadgets, etc, etc, etc, son elementos mucho más trascendentes.

Por último, no es necesariamente cierto que el tamaño de un script tenga influencia; mucho más importante es ¿qué hace ese script?, ¿qué volumen de información procesa? ¿cuándo lo hace? ¿cómo lo hace?

Syd  

Me aclaraste varios puntos, seguire conservando solo Prototype&Scriptaculous (cargada desde las API de Google), no necesito otra libreria, creo que voy bien; solo me queda optimizar las imagenes, eso ayudara mas a la carga.

Muy completa tu respuesta, muchas gracias!

Responder
Karla Castañeda  

Estoy de acuerdo, creo que innecesariamente se usa más de una librería, y no estoy diciendo que todos deberíamos usar por ejemplo jQuery, pero siendo realistas existen muchísimos plugins para esa librería que lo hacen más atractivo y fácil de usar.

Con respecto a lo de alojarlas por si mismo o usar la librería de Google, es mejor esto último (aunque hay limitaciones), así pudiéramos por ejemplo beneficiarnos de la caché; esto no es un razonamiento propio, es algo que estuve investigando hace tiempo, y vi como respuesta en muchos sitios, por ejemplo:

http://encosia.com/3-reasons-why-you-should-let-google-host-jquery-for-you/

http://encosia.com/6953-reasons-why-i-still-let-google-host-jquery-for-me/


¿Confiando demasiado en las librerías de Google?, es algunos sitios, ponen un respaldo, para cargar jQuery usando otro hosting, por si acaso el de Google fallara.

Saludos JMiur.

JMiur  

Usar varias librerías es algo absolutamente no recomendado, de eso no hay duda y n otiene sentido :D

El resto es subjetivo y sobre todo ... temporal; hoy sirve, mañana no; este mundo es demasiado dinámico y tiende a ser más dinámico aún por lo que cualquier solución es transitoria y las mejores, son siempre las más flexibles.

Responder
tomat  

Hola, JMiur, muy buen artículo, como de costumbre.
Mi comentario no tiene que ver con el tema, así que tú verás si lo quieres contestar aquí o no.
Se trata de algo que ya me dijiste en otra respuesta que no te interesaba demasiado, y es la compatibilidad con el,iPad. Pues bien, que sepas que desde hace una semana o poco más, tu blog presenta un muy mal comportamiento en estos bichos, y al cargarse se queda casi bloqueado, sin funcionar los controles táctiles, lo cual le hace casi inútil para la maquinita. Sí que funcionan los links a las entradas y una vez que entras en una o en los índices, etc, ya si funciona la navegación, pero al volver al inicio se vuelve a quedar mal.
A mi me supone un incordio, pero aún así lo sigo intentando, pero seguro que muchos otros abandonarán antes.

JMiur  

No es un problema de interés o desinterés sino que, simplemente, no uso esos "aparatos" :D y todo eso, queda librado a lo que hace o no hace Blogger.

Si creo (y esto es personal y subjetivo) que la responsabilidad de mostrar las páginas de modo normal en ese tipo de dispositivos es de quienes crean ese tipo de software que, por ahora, tienen mucho camino por recorrer ya que, si una página web se ve con relativa eficiencia en un navegador, debería verse del mismo modo en otro tipo de sistema cosa que no ocurre porque cada fabricante hace lo que se le da la gana.

Responder
Eulalia  

Me queda un mundo por aprender en el tema de los blogs y el de las librerías es una de las cosas en las que voy mas atrasada.
Gracias a entradas como ésta voy entendiendo un poco más acerca de este tema, aunque soy consciente del camino que me queda por recorrer.
Un abrazo.

JMiur  

Todos aprendemos. Generalmente, equivocándonos y probando una y otra vez. Estamos en el mismo barco que a veces se parece al Titanic :-D

Responder
Opositea  

Hola, lamento resucitar un tema tan antiguo, pero a ver si puedes ayudarme. Quiero alojar la librería sexyalert en Google Sites o algún servidor gratuíto del estilo. ¿Sabrías ayudarme a alojarla para que la pueda utilizar después?

Gracias

JMiur  

¿Y cuál es el problema que tienes? Puedes hacerlo tanto en Google Sites como en DropBox sin mayor problema, y, mientras el archivo sea público, puedes usar la url para agregarla a cualqueir sitio.

Opositea  

Sí, pero no sé exactamente cómo. Si subo los archivos a Google Sites o Dropbox, solo obtengo URLs que me permiten descargar los archivos, y yo necesito que sea el código el que esté online. Como en este ejemplo:
http://www.coders.me/ejemplos/sexy-alert-box/global.css

¿Puedes hacerme un tutorial sobre cómo alojarías la librería de sexy alert?

http://webscripts.softpedia.com/script/Internet-Browsers-C-C/Navigation/Sexy-Alert-Box-58428.html

JMiur  

No. Si subes un archivo a Google Sites o Dropbox y son públicos, tendrás la url de acceso directo. Mira los detalles en esta entrada. De hecho, casi todos los scripts con ejemplos de este blog, se alojan en DropBox.

Sexy Alert Box no es una librería, requiere de las librerías MooTools y jQuery así que, simplemente, puedes descargar el script y agregarlo en tu sitio copiando y pegando el código. No hace falta alojarlo en un servidor externo.

Opositea  

No sé si no nos estamos entendiendo o qué xD Así que procuraré ser intensamente específico. En la cabecera de mi blog tengo el siguiente contenido:






Sí, JQuery está alojada en Google AJAX y no me preocupa nada de nada. Lo que me intriga es que si coders.me desaparece, los archivos sexyalertbox.v1.2.jquery.js y sexyalertbox.css que uso de su web, dejarán de estar funcionales en mi blog.

Ahora, la pregunta es: ¿Cómo puedo hacer para cambiar esos enlaces a lo siguiente?
- http://www.miweb.com/sexyalertbox.v1.2.jquery.js
- http://www.miweb.com/sexyalertbox.css

PD: Espero que el HTML quede tal cual en el comentario. Es decir, que no se implemente.

JMiur  

Si tienes un dominio miweb.com y un hosting asociado con ese dominio, simplemente subes los archivos a tu hosting.

Si se trata de Blogger, no tienes ese hosting así que debes descargar los archivos, alojarlos en algún servidor o agregarlos directamente en tu plantilla.

Opositea  

Exacto. Y reconecto con mi pregunta inicial. Si las subo a Google Sites, Dropbox o cualquier web de ese estilo, veo que NO me funciona. Porque no me basta con subir los archivos sexyalertbox.v1.2.jquery.js y sexyalertbox.css, de los que solo obtendría links para su descarga. ¿Por qué? Porque estos archivos requieren de imágenes (archivos JPG) que no sé dónde tengo que subir. Luego la pregunta es, ¿sabes cómo se puede hacer? ¿Sabes cómo puedo hacer para cambiar los enlaces de coders.me a otros enlaces de Google Sites o Dropbox?

PD: No es tan sencillo como alojarlo en un servidor y sustituir el link; eso, desde luego, ya lo he intentado.

JMiur  

Si los scripts o el CSS usan imágenes, también debes alojarlas en un servidor y cambiar las direcciones, editando los archivos.

Responder
Opositea  

Cuando leo instrucciones sobre su instalación en webs (como ésta: http://www.xtro.es/2008/10/16/sexyalertbox-destaca-tu-web-con-alertas-originales-y-personalizadas/ ), te ponen:

Instalación

Sube todos los archivos de SexyAlertBox a tu servidor. Las imágenes, el CSS y el Javascript. Si ubicas la carpeta imágenes en un directorio diferente, no olvides cambiar las rutas que están dentro del archivo CSS.

Ahora bien, si mi servidor, es Google Sites o Dropbox, ¿cómo lo hago?

JMiur  

Esas instrucciones se refieren a la instalación en un sitio alojado en un hosting propio. Blogger no lo es por lo tanto, debes cambiar las urls relativas de las imágenes y colocarles urls absolutas.

Responder
Adolfo Fernandez Penayo  

Hola JMiur, hace unos dias te envie un email a tu correo, no se si lo recibiste. Yo sigo a la espera de tu respuesta. Un saludo.

JMiur  

No. No hay ninguno. Envíalo otra vez.

Adolfo Fernandez Penayo  

Hola JMiur, lo acabo de re-enviar al mismo correo vagabundia @ gmail . com

JMiur  

OK. Respondido.

Responder
Unknown  

Cordial saludo,

MI pregunta tiene que ver con algo que recién noté, uso la librería Prototype en mi sitio, que a su vez tengo instalado en 2 servidores diferentes, con la utilidad firebug de firefox analicé los tiempo de carga y la misma librería pesa casi el triple de un servidor a otro, el archivo es el mismo, pero no entiendo por que los pesos son diferentes.

Tienen alguna idea?

JMiur  

Ya te respondí el mail. Los dos archivos son distintos, de allí la diferencia.

Responder

¿Quiere dejar un comentario?

recuerde que los comentarios están siendo moderados y serán publicados a la brevedad ...

Nota: sólo los miembros de este blog pueden publicar comentarios.

Si le gusta ir a lo seguro utilice este botón para abrir los comentarios en una ventana modal en esta misma pagina.

Si añora tiempos idos, use este enlace para agregar un comentario al viejo estilo ...

 
CERRAR