2011-01-18 19 views
5

Soy muy principiante a jQuery, y estoy teniendo algunas preguntas básicas:jQuery - algunas preguntas de principiante

  1. ¿Es recomendable el uso de jQuery siempre que sea posible reemplazar algo por su uso? Por ejemplo, ¿es prudente vincular todos los eventos a los elementos que lo utilizan, en lugar de hacerlo a través de HTML?

  2. ¿Es mejor alojar el archivo jQuery .js y todos los demás archivos relevantes (como JQuery UI) o quizás sea una mejor opción usar el enlace de Google (parece que también lo alojan para otros)?

  3. Cuando se trata de ejecutar un script cuando la página se carga, ¿de qué manera se prefiere?

    1. $(document).ready(function() {})
    2. $(function() {})
    3. $().ready(function() {})

    Parece que todos hacen lo mismo, pero ¿cuál es la manera preferida de secuencias de comandos?

Respuesta

3
  1. Sí. De esta manera, su JS está completamente separado de su html. Puede ver su archivo y, de un vistazo, ver cómo afecta su HTML. Si estaba incrustado en el HTML, tendrías que buscar onClick, onLoad, etc. y puede ser bastante complicado para aplicaciones grandes.

  2. Los navegadores del cliente almacenarán en caché los archivos, por lo que si utiliza la versión de Google de JQuery, no tendrá que descargarla de su servidor. Ahorrando ancho de banda.

  3. $(document).ready(function() {}) Es la opción preferida. $(function() {}) Simplemente define el bloque para la ejecución, solo se ejecutará una vez que la página esté lista, si es lo último en la página que se ejecutará.

+0

¿en qué se basa el punto 3? – davin

+0

Creo que sería bueno elaborar el n. ° 3. No he visto ninguna diferencia en el uso de 1 o 3 (creo que 2 se ejecutan en el momento de la publicación, en lugar de cuando se carga el documento, pero no estoy 100% seguro) y aunque prefiero usar la opción que especificó, realmente solo por la sintaxis (que lo hace obvio cuando se llama) o hay otras diferencias? – Kris

+0

Es más legible ... sabes lo que está haciendo sin buscarlo. Casi todos los plugins y sitios de JQuery muestran documentos listos. Todas las empresas para las que he trabajado que utilizan JQuery usan Document.ready. Es el más comúnmente utilizado para seguro. Lo cual creo que lo convierte en la opción preferida. –

1

1: no, esto depende completamente de usted. generalmente jQuery incurre en una penalización de rendimiento, porque es una capa extra de abstracción. Solo úsela, si cree que le ayuda a hacer su trabajo más fácilmente. Sin embargo, a menos que realmente necesite optimizar el rendimiento, el beneficio al usarlo superará con creces el costo. jQuery le brinda probada compatibilidad con los navegadores cruzados, que, si desea atender a todos los navegadores diferentes, puede ser costoso implementarlo usted mismo.

2: Use la versión de Google: de esta manera existe la posibilidad de que sus usuarios ya la tengan en la memoria caché y no necesiten volver a cargarla desde su sitio.

3: segunda opción, el acceso directo es muy utilizado hasta el punto en que diría que es preferible, aunque la primera opción es buena y específica. Nunca usaría tercera opción

+0

Veo que no termina de acuerdo con Chris. ¿Es la pena de tiempo despreciable o debería ser realmente consciente de ello? – pimvdb

+1

Creo que OP en el punto 1 se refería a $(). Click() vs. onclick = "", y creo que respondiste jQuery vs. javascript puro. Si es así, también lo entendí como usted, aunque otras respuestas piensan de manera diferente, y pensándolo bien, creo que están en lo cierto. Aunque tal vez te malentendí – davin

+0

@pim: Depende de lo que necesites. jQuery está ahí por conveniencia y puede reducir seriamente el tiempo de desarrollo. Si la aplicación que está creando no está manejando grandes cantidades de datos, es probable que la penalización de rendimiento de la capa de abstracción no sea un problema.Si te gusta trabajar en un gran proyecto que maneja grandes cantidades de datos, jQuery puede convertirse en un cuello de botella que intentas evitar cada vez que el mayor costo de tiempo de desarrollo es lo suficientemente bajo –

2

1.) Sí y No. Se considera la mejor práctica para enlazar eventos unobtrusive independientemente del uso de jQuery o no (esto quiere decir, estrictamente separados javascript, html y cualquier otro idioma). Dado que jQuery permite enlazar fácilmente eventos, es una mejor manera de usar controladores en línea.

2.) Debes usar un CDN (como google) para entregar archivos estáticos como jQuery para propósitos de caché + ellos tienen una enorme red de servidores que incluso puede ser más rápida que tu propio host.

3.) Me atengo a las dos primeras llamadas. De todos modos, básicamente, todos ellos lo harán, pero la mejor legibilidad probablemente tiene $(document).ready(function() {});

0
  1. personalmente no me acuerdo con la frase "limpiamente separada JS de HTML". Raramente veo casos de uso del mundo real donde eso tiene algún beneficio. La separación de HTML de JS a menudo conduce a botones que dicen "haga clic aquí para hacer X" en el HTML, pero no haga nada a menos que el javascript correspondiente esté con ellos. Tipo de pierde el punto. Con el caso de jQuery y eventos ... me parece mucho más fácil depurar una aplicación si puedo inspeccionar un botón HTML en Firebug y ver qué hace ese botón (mirando el atributo onclick).
  2. El uso de la versión de Google puede ayudar con el almacenamiento en caché, pero no lo vincula directamente a jquery.com. Hicimos eso una vez y bajaron, nos llevaron con ellos.
+0

Malabaridad pesadilla. Si desea saber lo que hace un botón, use nombres descriptivos de ID/clase. Su escenario de "haga clic aquí para hacer X" es simplemente un mal diseño, no hay un repliegue no-JS adecuado. – kapa

+0

Esa es la dirección que ha tomado mi empresa, pero buscar en varios archivos javascript la identificación de un elemento, descubrir que alguien adjuntó un evento usando el nombre de clase en lugar de la identificación es más una pesadilla de mantenimiento que tener editar archivos HTML y Javascript para cambiar la UI ... La mayoría probablemente proviene de un diseño deficiente, pero desafortunadamente no elijo a las personas con las que trabajo ni a las fechas límite que los impulsan a hacer las cosas rápidamente en lugar de hacerlo derecho. –

2

1) Mantener la unión en el script de todo su evento. Esto hace que sea más fácil cambiar más tarde. También apreciarás tener un solo lugar para buscar toda la lógica relacionada con eventos.

2) Esto ha sido answered very well already.

3) Prefiero # 2 por su brevedad, pero en realidad la forma ideal de hacerlo es like this:

jQuery(function($) { 
    // Your code using failsafe $ alias here... 
}); 

que evitan conflictos si está utilizando otros marcos que definen $.

+0

Gracias por el enlace y la punta – pimvdb

1

Para el punto 3d, ninguno de ellos. en general, se recomienda, por motivos de rendimiento, colocar sus scripts justo antes de la etiqueta de cierre </body>. Por lo tanto, no tendrá que esperar al evento ready: en esta etapa, la página ya está cargada.

Comprobar Jquery Cookbox (O'Reilly), Capítulo 1.2: Ejecutar jQuery/JavaScript codificado Ater DOM se ha cargado pero antes completa carga de la página (ese libro es una lectura obligada en definitiva)

Para tener una idea rápida acerca de esta técnica, marque Move jQuery to the end of body tag? (hay muchas otras publicaciones sobre SO sobre este tema)

+0

veo su punto, pero

  • 11. Algunas preguntas simples de XNA/HLSL
  • 12. Algunas preguntas sobre el servicio de Grails
  • 13. Algunas preguntas básicas de JPA + Hibernate?
  • 14. Algunas preguntas antes de probar .Net
  • 15. algunas preguntas sobre el uso de ConcurrentDictionary
  • 16. Algunas preguntas sobre la sincronización de subprocesos
  • 17. Algunas preguntas de la plantilla D
  • 18. Algunas preguntas sobre multiprocesamiento en java,
  • 19. Algunas preguntas sobre el trabajo con db4o
  • 20. Algunas preguntas sobre las mónadas en Haskell
  • 21. DB Sqlite con Android algunas preguntas básicas
  • 22. Algunas preguntas con pacman path finding
  • 23. Mercurial: algunas preguntas todas relacionadas con .hgignore
  • 24. Algunas preguntas sobre HierarchyId (SQL Server 2008)
  • 25. Algunas preguntas sobre OAuth y Android
  • 26. Surtido de preguntas de jQuery
  • 27. Algunas preguntas sobre la convención de nomenclatura de C#
  • 28. algunas preguntas acerca de las sesiones de PHP
  • 29. algunas preguntas sobre el orden de búsqueda del enlazador GCC
  • 30. Algunas preguntas sobre una matriz de instancia única en typedef