¿Qué sucede si combino múltiples bibliotecas de Javascript en una página?

Tomemos un caso, quiero usar múltiples bibliotecas de JavaScript en una página como jquery, mootools, scriptalous.

¿Es una buena idea? ¿Debo hacer esto?

Depende de la biblioteca. Las bibliotecas como YUI o jQuery usan un sistema estricto de espacios de nombres, lo que significa que pueden ejecutarse felizmente juntas. Por ejemplo, el patrón del module http://www.yuiblog.com/blog/2007/06/12/module-pattern/

Sin embargo, las bibliotecas que usan un model prototípico, como MooTools o Prototype, son mucho más complejas. Usan inheritance prototípica para modificar objects nativos, como Array, Number y String.

Si bien esto ofrece algunas soluciones muy elegantes, y permite a los desarrolladores de la biblioteca "solucionar" algunos de los problemas inherentes a JavaScript, sí significa que rara vez funcionan bien juntos.

Además, como las bibliotecas parecen funcionar perfectamente hasta que se utiliza un nativo en particular de una manera oscura, puede get errores intermitentes y muy difíciles de resolver.

¿Es una buena idea? ¿Debo hacer esto?

No y no.

Hay casos en los que es necesario usar múltiples bibliotecas, por ejemplo, cuando se usa mucho código henetworkingado que necesita la biblioteca A, y otras partes usan la biblioteca B, aunque los complementos como jQuery's noConflict pueden noConflict el dolor y hacer que funcionen juntos. por lo general es difícil.

También hay arguments internos masivos contra el uso de varias librerías DOM que manejan a la vez, debido a la forma en que esas bibliotecas manejan los objects DOM internamente. El usuario Bobince una vez escribió una excelente publicación sobre esto, lamentablemente no puedo encontrarlo ahora mismo.

Si no tiene una necesidad imperiosa de usar múltiples bibliotecas, quédese con una.

Querrá utilizar el modo no conflictivo. Me gusta esto: http://api.jquery.com/jQuery.noConflict/

En cuanto a "¿Deberías hacer esto?" … Yo diría que no. Fuera de los conflictos que tienen frameworks múltiples significa mayor time de carga.

¿Qué sucede si combino múltiples bibliotecas de Javascript en una página?

La respuesta simple: depende.

Técnicamente, si cada biblioteca apropiadamente "espacia el nombre" de sus funciones (y los espacios de nombres no entran en conflicto), no declara ninguna function global, y no anula / aumenta ningún prototipo de object nativo, podrían vivir juntos. En realidad, sin embargo, es muy probable que haya un choque (por ejemplo, muchas bibliotecas definen su propia function $() ).

Encuentre la biblioteca que mejor se adapte a sus necesidades y use esa.