2008-09-13 18 views
6

¿Qué experiencia puede compartir sobre el uso de múltiples bibliotecas AJAX?¿Cuáles son las mejores estrategias para usar múltiples bibliotecas AJAX?

Existen características útiles en Prototype, algunas en jQuery, la biblioteca de Yahoo, etc. ¿Es posible incluir todas las bibliotecas y usar lo que desee de cada una, generalmente todas juegan muy bien junto con espacios de nombres, etc. En aras de la velocidad, ¿hay un límite práctico para el tamaño/número de bibliotecas que incluir o es insignificante? ¿Hay pares que funcionan particularmente bien juntos (por ejemplo, Prototype/Scriptaculous) o pares que no funcionan bien?

Respuesta

9

Puede usar todas esas bibliotecas, pero lo recomiendo encarecidamente.La descarga y la ejecución de esa cantidad de JavaScript probablemente ahogarán el navegador y ralentizarán la experiencia de los usuarios. Sería mucho mejor desde la perspectiva de un usuario y un desarrollador elegir uno. Menos cambio de contexto/arquitectura y menos código para mantener.

Como han dicho otras respuestas, la mayoría no entran en conflicto.

Consulte el sitio de Yahoo! Exceptional Performance para obtener más información.

1

Estoy utilizando jQuery y la versión del archivo javascript única del kit de herramientas Microsof ajax uno al lado del otro en el proyecto en este momento.

Creo que voy a ir con jQuery y terminaré eliminando el de Microsoft. Soy muy nuevo en jQuery, pero cuanto más aprendo, más me enamoro.

2

Soy un creyente jQuery, así que perdonen mi falta de conocimiento sobre los otros, pero ...

Lo que hace jQuery tan grande es el modo de no-conflicto, así por ejemplo, que haría :

$('#foobar').whatever(); 

con el modo de no-conflicto, que haría esto:

var jq = jQuery.noConflict(); 
jq('#foobar').whatever(); 

Una cosa menos de qué preocuparse. Me imagino que el prototipo ofrece una característica similar, y Yahoo también.

Pero de todos modos, no quiero abogar mucho por jQuery y enojar a la gente, pero independientemente de la biblioteca que elijas, creo que todos pueden hacer casi todo lo que necesites. Especialmente piense en los beneficios de no teniendo que aprender tres bibliotecas diferentes.

Los tres deben ser capaces. Seleccione el que más le guste y extiéndalo. :)

+0

AFAIK El prototipo no tiene esta característica. jQuery namespaces todo dentro del objeto "jQuery", y Prototype tiene sus funciones diseminadas en docenas de clases personalizadas e integradas, por lo que sería muy difícil hacerlo. –

+0

En cuanto a Yahoo, si recuerdo correctamente, oculta todo dentro de un espacio de nombre llamado "yahoo" o algo así, por lo que no entra en conflicto con nada por defecto. –

0

Ruby on Rails utiliza prototipo y Scriptaculous por defecto, ya que hay poca superposición entre los dos. También he usado yui snippets además de eso y nunca he tenido un problema. Los tiempos de carga son un problema, pero las bibliotecas generalmente se almacenan en caché, por lo que solo se cargan en la primera página.

+1

Scriptaculous es un ADDON al prototipo. Por eso trabajan bien juntos. – Till

3

YUI tiene un espacio de nombres bastante fuerte, por lo que no debe chocar con otras bibliotecas.

Como se mencionó, puede ejecutar jQuery en modo no conflictivo.

Prototipo tiene tiene algunos problemas jugando bien con otras bibliotecas, en parte porque (o se utiliza) modifica los objetos centrales como Array. Protosafe intenta abordar esos problemas.

Script.aculo.us es simplemente una biblioteca de widgets que se encuentra encima de Prototype, por lo que esas dos obviamente deberían jugar muy bien juntas.

Todo esto significa que usted podría uso YUI, jQuery, Prototype & Script.aculo.us en su aplicación, pero es posible que el uso de una sola biblioteca hace que sea mucho más fácil de mantener las cosas.

4

Puede usar Google AJAX Libraries API. Proporciona una red de distribución común y una arquitectura de carga para jQuery, prototipo, script.aculo.us, MooTools y dojo

1

La mejor estrategia es no utilizar varias bibliotecas. Es tentador querer arrojar más bibliotecas a un problema, pero es ineficiente, propenso a errores y hace que su código sea más difícil de mantener por otros.

En la mayoría de los casos, debe evitar el uso de múltiples bibliotecas al comprender su dominio problemático y qué biblioteca lo ayudará a resolverlo mejor. También hay una gran cantidad de complementos y extensiones para todas estas bibliotecas.

Por ejemplo, JQuery admite llamadas JSONP entre dominios de forma inmediata y tiene una buena biblioteca de widgets en JQueryUI, Prototype no.

$.getJSON('http://anothersite.com/mashup.json?callback=?', function(data) { }); 

prototipo tiene muy buen soporte OO y es fácil de recorrer el DOM, pero carece de algunas de las funcionalidades de dominios cruzados necesario para crear widgets y mashups.

var Foo = Class.create({ 
    initialize: function(name) { 
    this.name = name; 
    } 
}); 

var Bar = Class.create(Foo, { 
    initialize: function($super, name) { 
    $super(name); 
    } 
}); 

Mootools tiene grandes efectos, un buen apoyo OO, widgets muy sólidos y solicitud de dominios cruzados, pero (y esto podría ser mi impresión), la comunidad de desarrollo no es tan colaborativo y social con la comunidad global (fuera de mootools) como las otras comunidades (el prototipo solía ser así). Esto podría ser el resultado de que su (s) desarrollador (es) principal (es) viva (n) fuera de los EE. UU., Y por lo tanto no pueden asistir a tantas conferencias ni participar en la comunidad en general. Sin embargo, no dejaría que eso te desanime por completo, pero es algo a tener en cuenta.

Cuestiones relacionadas