2010-06-04 18 views
21

Hace poco escuché un podcast que hizo un comentario sobre el uso de $() frente al uso de jQuery(). Se indicó que cada vez que se usó $() se crearía un nuevo objeto y cuando se usó jQuery(), este no fue el caso. Busqué en Google pero no pude encontrar nada sobre este tema específico.

Me doy cuenta de que este no es un ejemplo típico, pero el siguiente es el motivo por el cual estoy interesado en la respuesta a esta pregunta.

Tengo una página que el usuario guardará cargada en un navegador por un día entero (24 horas, o posiblemente más) y las actualizaciones se hacen al DOM cada ~ 5 segundos como resultado de una llamada AJAX a través de jQuery (la porción de llamada AJAX es irrelevante para actualizar el DOM - la actualización al DOM se hace usando una cadena de HTML y una llamada en un objeto jQuery al .empty() y luego al .html()).

Desde oír esto, yo cambié posteriormente todas las llamadas a $()jQuery() llamadas, pero me gustaría saber:
está utilizando $() vs utilizando jQuery() una mala práctica? ¿Hay una diferencia insignificante entre los dos? ¿O es realmente notable en proyectos más grandes?

+0

Lo único malo que veo es que $() es difícil de buscar, por lo que si alguna vez necesitas cambiar el alcance, sería difícil – Earlz

+0

Usar $() como este crearía un objeto cada vez - ' $ ("# item"). html ('aquí'); $ ("# elemento"). slideUp(); '. En cambio, si está utilizando el mismo elemento, debe encadenar llamadas o algo como esto: 'var ele = $ (" # item "); ele.html ('aquí'); ele.slideUp(); ' –

+1

Qué podcast es esto, así que sé para evitarlo. – Mark

Respuesta

21

No, no es una mala práctica, y no hay diferencia de rendimiento.

Los identificadores $ y jQuery hacen referencia a la misma instancia de función.
Esto se hace por la última línea de jquery.js:

window.jQuery = window.$ = jQuery; 
+0

@Nate solo si 'jQuery' también crea un nuevo objeto en la memoria cada vez – Earlz

+1

¡Llamo a este mito, reventado! http://dsc.discovery.com/tv/mythbusters/ – tvanfosson

4

Nop - echar un vistazo al código fuente de jQuery. $ Es sólo otro alias para jQuery - la última línea dice todo:

window.jQuery = window.$ = jQuery; 

ve aquí por sí mismo: http://code.jquery.com/jquery-latest.js

+0

¿Qué sucede si la otra biblioteca que utiliza '$' aparece después de jQuery? – Garrett

+0

Luego use jQuery.noConflict - http://api.jquery.com/jQuery.noConflict/ –

12

El único problema con el uso $() sobre jQuery() es la posibilidad de que otro marco Javascript usa también.

+3

... y hay formas de evitar esto - revise la documentación en noConflict: http://api.jquery.com/ jQuery.noConflict/ – tvanfosson

+1

Además, muchos otros marcos ofrecen (o al menos consideran) formas de evitar este conflicto. – Kurucu

2

Para mí, el objetivo es evitar el nombramiento de colisiones con otras bibliotecas que también usen $ como objeto principal, como Prototype, si desea usar ambas bibliotecas en la misma página, o no sabe dónde estará su código ser usado ...

2

¿Estás seguro de que era $() frente a jQuery()? Tal vez el punto más destacado es que hay éxitos de rendimiento para hacer cualquiera de los dos, y muchos nuevos codificadores de js usan $() innecesariamente cuando pueden hacer js simples.

Es una buena práctica evitar crear un objeto jQuery cuando no sea necesario.

Cuestiones relacionadas