javascript - remove - ¿Cuáles son algunas razones técnicas empíricas para no usar jQuery?
removeattribute jquery (10)
Contexto: estoy asombrado por la cantidad de desarrolladores de front-end que piratean HTML, Javascript y CSS durante todo el día y que ignoran las herramientas como jQuery ( u otros marcos auxiliares equivalentes ) y se niegan a usarlas. No estoy hablando de gurús de JavaScript, estoy hablando en las trincheras todos los días Joe desarrolladores de producción. Recibo muchos argumentos que son más como excusas u opiniones personales que no creo que tengan ningún mérito técnico, quiero asegurarme de no perderme nada.
Pregunta: ¿Cuáles son algunas razones técnicas empíricas para no usar jQuery?
No estoy buscando argumentos religiosos o dogmáticos o opiniones subjetivas "como que algún otro marco es mejor", considere jQuery como el hombre de paja para todos los marcos comparables en la pregunta.
Actualización 2015:
En esta respuesta de 2011 estoy hablando de bibliotecas como jQuery, YUI o Prototype. Hoy en 2015 ese razonamiento sigue siendo aplicable a marcos como Angular, React o Ember. En esos 4 años la tecnología progresó tremendamente y aunque veo considerablemente menos prejuicio contra React o Angular que lo que vi contra jQuery o YUI, el mismo tipo de pensamiento, aunque en menor medida, todavía está presente hoy.
Actualización 2016:
Recomiendo un artículo publicado hace unos días:
- ¿Por qué jQuery? por Michael S. Mikowski, autor del libro de aplicaciones web de una sola página
Ese artículo es básicamente una respuesta muy detallada a esta misma pregunta. Si hubiera estado disponible cuando estaba escribiendo la respuesta a continuación, definitivamente la hubiera citado.
Respuesta original:
Responderé sobre jQuery, pero esos son los mismos argumentos que he escuchado contra el uso de YUI, Prototype, Dojo, Ext y algunos otros. Principales argumentos que he escuchado:
el tamaño del archivo , que de hecho es de 84.6 KB en el caso de jQuery 3.2.1 , probablemente más pequeño que el logotipo en un sitio web promedio y se puede publicar desde CDN de Google, que probablemente ya esté en la memoria caché de la mayoría de sus visitantes. Como usar jQuery siempre significa un tamaño de archivo más pequeño para sus propios archivos JavaScript, en realidad puede significar una descarga más pequeña , incluso si no está ya en el caché del navegador.
velocidad : escribir JavaScript puro puede ser más rápido, pero escribir JavaScript portátil parece ser imposible para la mayoría de las personas. Un sitio web que es más rápido pero que no funciona en todos los navegadores populares es inútil en el mundo real. Además, jQuery usa algunas optimizaciones bastante pesadas para ser bastante rápido y se vuelve aún más rápido con cada lanzamiento, por lo que no es tan fácil escribir código más rápido a mano para nada más que ejemplos triviales. (*)
"propiedad intelectual" : una compañía tiene miedo al usar el código de otra persona, mientras que jQuery es un software libre y de código abierto que se usa en todas partes, desde el blog de su abuela hasta Amazon, desde Twitter hasta el Bank of America, desde Google hasta Microsoft. Úselo, entonces cualquier compañía puede usarlo.
No recuerdo haber escuchado ningún otro argumento en serio.
(*) Aquí hay un ejemplo trivial: getElementById (''someid'') vs. jQuery (''# someid'')
¿Está usando getElementById más rápido? Sí. Y, por supuesto, todo el mundo siempre comprueba el parentNode para atrapar cuando Blackberry 4.6 devuelve nodos que ya no están en el documento, ¿verdad? jQuery sí. Y todos manejan el caso donde IE y Opera devuelven elementos por nombre en lugar de ID, ¿verdad? jQuery sí. Si no lo haces, entonces tu código no es portátil e introduces errores sutiles que pueden ser muy difíciles de encontrar. Y getElementById es el ejemplo más trivial que uno podría encontrar: ni siquiera me inicie en eventos, AJAX y DOM ...
Actualizar:
En realidad, hay un cuarto resultado al preguntar por qué alguien no quiere usar jQuery. Olvidé ponerlo en esta lista porque no es realmente una respuesta sino la falta de respuesta. El comment que recibí ayer me lo recordó. Esta no es una "razón técnica" para agregar a la lista, pero puede ser interesante y, de hecho, puede ser la reacción más común.
Sin embargo, lo que personalmente sospecho que es la principal razón subyacente de todas esas reacciones es lo que creo que es el mayor obstáculo para el progreso en la informática: "No quiero usarlo porque nunca lo hice, por lo tanto debe no sea tan importante ".
Alguna vez fue la reacción a la optimización de ensambladores, compiladores, programación estructurada, lenguajes de nivel superior, recolección de basura, programación orientada a objetos, cierres o casi todo lo que ahora damos por sentado, y hoy en día son las bibliotecas AJAX. Tal vez algún día nadie recuerde que una vez usamos para interactuar manualmente con la API de DOM sin procesar en el nivel de la aplicación como ahora nadie recuerda que una vez solíamos escribir programas con números hexadecimales crudos, sin adornos e inescrutables .
¿Por qué no usar jQuery?
No puedo pensar en una buena excusa para usar JavaScript vainilla sobre jQuery (aparte del factor de intimidación de aprender algo nuevo), pero algunas personas prefieren otros frameworks de JavaScript (como las excelentes MooTools ) debido a las diferencias filosóficas entre ellos.
A algunas personas simplemente no les gusta la sintaxis DSL -ish de jQuery, pero reconocen la importancia de usar un marco robusto de JavaScript.
Personalmente, me encanta jQuery, pero conozco personas que usan otros marcos y que no son menos productivas.
Por supuesto, me gusta jQuery, pero hay algunas razones para no usar jQuery:
- Tamaño de descarga / ancho de banda: jQuery 1.5 está ahora más de 200K sin comprimir, para algunos el tamaño de la biblioteca es demasiado para justificar el beneficio.
- Rendimiento: Escribir JS nativos siempre será más rápido que abstraerlo detrás de una biblioteca.
- Complejidad añadida: muchas personas descargarán toda la biblioteca de jQuery cuando en realidad solo necesiten algunas características interesantes.
- Dependencias de la aplicación: la introducción de dependencias siempre tiene sus problemas. Si hay un error en jQuery, puede depurar y editar el archivo, pero la actualización posterior presenta problemas. Puede dejar el error, pero ahora depende de la tabla de tiempos de jQuery para una solución, no la suya.
Porque a menudo es innecesario. si todo lo que quiero hacer es validar alguna entrada, o aprovechar algún campo, entonces es igual de fácil escribir código javascript / dom simple. Y jQuery realmente no ayuda en casos tan simples, así que la pregunta debería ser ¿ por qué usarlo?
Claramente, hay muchos casos en que es muy útil, pero a veces las personas parecen usarlo sin ninguna razón real también.
Preferiría usar jquery para la manipulación del dom o atravesar el dom, lo cual es realmente fácil con jquery. Además, adjuntar un evento o delegación de evento es tan fácil usando jquery u otro framework; de lo contrario, tiene que escribir datos adjuntos de eventos personalizados para navegadores IE o no IE, etc.
Pero tiene alguna penalización de rendimiento cuando usas $ .each en vez de vanilla JS for y array.push () ... otras cuestiones como si vincula un evento y lo elimina sin desvincularlo tendrá una pérdida de memoria ....
Mi conclusión es solo utilizar cualquier marco para la manipulación dom compleja y el uso de reposo vanilla JS
Una razón para no usar un marco (y este es un caso extremo) es cuando se escribe código incrustado para otro sitio web, como un banner. La inserción arbitraria de una biblioteca complicada u otra estará contaminando el espacio de nombres y potencialmente rompiendo el sitio de otra persona. No es que no quisiera dejar pasar a algunos anunciantes para intentarlo de todos modos, la escoria que chupa el estanque, pero estoy divagando ...
No estoy de acuerdo con agregar un marco cuando uno ya está presente y con la misma capacidad. Lo veo con demasiada frecuencia y es mi odio favorito, lo veo como un engorro injustificado. Esa es otra pregunta por completo.
Aparte de eso, no puedo pensar en una razón justificada para no hacerlo.
jQuery expresa todo en un paradigma DOM-céntrico que puede ser engañoso y no requiere ninguna necesidad de expresar cosas en un patrón de aplicación.
Muchos desarrolladores terminan programando a sí mismos en una esquina con este patrón DOM-centrado y finalmente se dan cuenta de que no han creado nada extensible o reutilizable.
Rebecca Murphey tiene un excelente relato de su propio cambio a Dojo de jQuery : la publicación del blog es más sobre por qué no jQuery versus por qué Dojo.
tamaño de archivo, pero en realidad, más allá de eso, es un envío de Dios absoluto para las diferencias de navegador y JavaScript multiplataforma. Tendría que tener algunas muy buenas razones para no querer incluirlo en su conjunto de herramientas (o ser un idiota desarrollador fundamentalista).
- No pueden justificar el tamaño del archivo (aunque probablemente sea menos que el script que no utiliza las abstracciones proporcionadas).
- No quieren confiar en herramientas de terceros.
- Su negocio no quiere ejecutar ninguna biblioteca (por las razones que sean).
- Su negocio no quiere ejecutar ningún código JavaScript no escrito por sus empleados.
- Para realmente codificar todo, y aprender más. (En lugar de usar cosas precodificadas)
- jQuery tiene TONELADAS de características que quizás no necesites, ¿por qué hacer que el usuario descargue tantos códigos si no va a utilizarlos?
- ¿Retarte a ti mismo? ¿Puedo vencer a jQuery, o al menos, puedo sobrevivir con el código simple de vainilla?
- Flexibilidad: Altho jQuery es realmente flexible ... es posible que necesite algo que no proporciona ...