Dado lo mucho más simple que es el desarrollo de jQuery, en comparación con JavaScript nativo, ¿qué hace que las personas renuncien a bibliotecas como jQuery?
¿Es esto porque jQuery tiene limitaciones o es lento? Quiero decir, si jQuery es tan fácil en comparación con JavaScript nativo, ¿qué razones tiene la gente para seguir usando JavaScript puro?
XMLHttpRequest
vsActiveXObject
, oaddEventListener
vsattachEvent
, ocss selectors
vsxpath selectors
vsno selector support
, etc.) En los navegadores recientes, la mayoría de estos problemas no existen, porque siguen los mismos estándares.Respuestas:
Hablemos de autos.
Oh, espera, ya lo hicimos, ¿recuerdas esa vez que nos conocimos, hace algún tiempo? Hablamos de autos. De hecho, parecía ser un experto en automóviles. Pudiste explicar, en detalle, todo lo que está bien, lo que está mal y lo emocionante de la última carrera de Fórmula 1. Sabías de memoria todos los modelos de Lamborghini, incluido su precio y disponibilidad. Incluso pensaste en comprar tu propio Ferrari 599 GTB Fiorano y estabas ahorrando (apuesto a que la cena de bistec no ayudó mucho).
Mientras explicaba las fallas de Toyota con una gran voz emocionada, de repente saltaste de tu silla y gritaste en el aire, agitando los puños sobre: "¡Maldita sea, soy un magnífico experto en todo lo relacionado con los autos! ¡Voy a ser mecánico de automóviles! "
Y así fuiste. Tuviste una entrevista, el Jefe estaba tan impresionado como yo con tu conocimiento, y fuiste contratado. Entró el primer cliente. Su embrague estaba roto. Lo inspeccionaste y no sabías qué hacer. De hecho, no tenías ni idea de cómo seguir los consejos que te dio el Jefe. Fuiste despedido.
¿Pero cómo podría ser eso? ¡Sabes todo sobre autos! Excepto por ... todo sobre autos. Puede saber muy bien que el automóvil de sus sueños tiene un motor V12, pero no sabe lo que realmente significa.
Entonces, en realidad no eres mecánico de automóviles, eres un entusiasta de los automóviles. Y hasta que aprenda cómo funcionan los automóviles , seguirá siendo un entusiasta.
Ahora déjame preguntarte. Como
$.fn.text
funciona ¿Y de qué$.fn
? ¿Qué quieren decir realmente? ¿Cómo$(something)
devuelve una cosita gigantesca que contiene cosas, y qué es exactamente esa cosita? ¿Puedes replicar su funcionalidad, al menos un poco, incluso en teoría? ¿Se puede hacer frente sin jQuery?Decir que "JavaScript nativo es difícil" es simplemente ... falso. En primer lugar, porque JavaScript como lenguaje no tiene nada que ver con el DOM , que es principalmente lo que jQuery resume. Segundo, porque una vez que aprendes un poco sobre el DOM, ya puedes navegar a través de los errores más comunes entre navegadores. Pero solo un pequeño secreto: todo es difícil al principio. La división larga fue una perra en quinto grado.
Como segunda analogía para esta respuesta: jQuery es JavaScript-DOM (no JavaScript, el idioma, solo el DOM) como
Array.prototype.forEach
esfor
. Funciona, para el 99% de los casos. Y funciona bien. Pero para ese 1% que no está cubierto, debe saber cómo usar elfor
bucle, aunque solo sea práctico. Toda esta respuesta se basa en el lado "más puro" de la pregunta, y ni siquiera en el lado técnico (el tamaño de la biblioteca, por ejemplo, y varias otras cosas como se explica en la respuesta de Michael Dorrant). Porque me encanta JavaScript y cuando la gente parece tirarlo a un lado casualmente diciendo "pah, esos javascriptianos tontos" y agitando elegantes guantes blancos, todo se reduce a la moralidad.Si puede aceptar el hecho de que siempre será un entusiasta de JavaScript, ¿quién soy yo para detenerlo? Pero si quieres ser un programador de JavaScript, primero debes tener el conocimiento para al menos elegir entre usar jQuery (o cualquier otra biblioteca) y no usar una biblioteca. Aprende el DOM. Aprenda como usarlo. Escriba su propia biblioteca pequeña o simplemente una colección de funciones auxiliares. Y una vez que conoces el DOM, y eliges usar jQuery - Godspeed. La pereza se otorga a aquellos que trabajaron duro.
fuente
Razones que sé:
Cuando la necesidad es extremadamente mínima, diga 1 onclick.
Cuando la velocidad de descarga es crítica y la biblioteca jQuery es demasiado grande Y NO tiene que escribir mucho código (personalizado) para reemplazarla.
Al integrarse con otras tecnologías, a veces, js sin formato es mejor.
Cuando se trabaja en un sistema heredado (también conocido como 'producción') ya escrito en js con patrones establecidos.
fuente
jQuery es simplemente un marco: un conjunto de herramientas escritas en JavaScript. Al usar ese conjunto de herramientas, todavía estás usando JavaScript. Algunas personas prefieren escribir JavaScript utilizando las herramientas que proporciona jQuery, algunas eligen no hacerlo, otras eligen otros conjuntos de herramientas.
Algunas razones por las que puede querer escribir JavaScript "puro" sin jQuery:
fuente
jQuery, como cualquier biblioteca o marco, agrega otra capa de errores . Me encanta, pero también he perdido un día buscando un error que resultó estar en jQuery core y no en mi código (una ocasión rara, pero no tan rara).
Aparte de eso, no encuentro ninguna otra razón para no usarlo:
PERO nunca debe usarse como un sustituto del conocimiento de Javascript. Si no sabe cómo hacerlo en Javascript puro, inicialmente puede salirse con la suya con una biblioteca, pero a la larga lo pagará.
Y, por supuesto, todos nosotros hemos estado encerrados en un combate mortal con IE6 durante bastantes años, y no renunciaremos fácilmente a nuestros trucos de la vieja escuela en favor de un juguete nuevo y brillante.
fuente
The huge gallery of plugins help me write prototypes in very short times
... Solo prototipos, los evito en el código de producción cuando es posible. Hay algunos plugins con código excelente, por supuesto, pero hay que buscar mucho para ellos ...En el entorno del navegador, necesita una herramienta de normalización de navegador cruzado. Tal herramienta viene en dos sabores
En general, puede usar estas utilidades de una de las tres maneras
addClass
o ensetText
todo su código cuando y donde las necesiteNecesita algún mecanismo de normalización; de lo contrario, obtendrá cero compatibilidad con el navegador cruzado.
En cuanto a usar uno existente, está bien. Simplemente no usaría jQuery. Personalmente, actualmente estoy escribiendo mi propia biblioteca ( DOM-shim repara los navegadores sin exponer una API propietaria extranjera. Convierte sus navegadores en un único navegador estandarizado y bien comportado).
fuente
Si no necesita abstracción DOM, compatibilidad con navegadores cruzados y navegadores antiguos, puede prescindir fácilmente de jQuery.
Este es el caso cuando está desarrollando extensiones de navegador, scripts de greasemonkey (a veces), cosas para descifrar números, desarrollo para Node.js u otros entornos que no son del navegador.
fuente
Junto con las otras respuestas aquí, especialmente las de Michael Durrant , vi que la velocidad es una razón importante para que ocasionalmente elija usar JavaScript sin formato.
Últimamente he estado trabajando en muchas animaciones u otras tareas intensivas de CPU y, algunas veces, JavaScript sin procesar es mucho, mucho más rápido que si paso por jQuery.
Un ejemplo es donde quería cambiar la opacidad de un
position: fixed
elemento en relación con qué tan abajo en una página se ha desplazado un usuario. El efecto fue demasiado lento cuando utilicé jQuery para esto, lo que hizo que el desplazamiento fuera desigual y el efecto de desvanecimiento se arruinó. Cambié a usar JavaScript directo y todo fue sedoso en todos, excepto IE <= 8.fuente
Necesito presentar mi respuesta con cierta honestidad. Amo a jQuery. Me facilita enormemente la vida y hace que el código JavaScript sea más declarativo, que es la forma en que creo que las cosas deberían funcionar.
jQuery hace muchas cosas ...
Sí , puede agregar complementos
Sí , puede extender los selectores
Sí , simplifica la animación
pero jQuery no hace todo
¿Alguna vez has intentado trabajar en contextos de ventanas múltiples con jQuery? jQuery apesta al tratar con diferentes contextos de ventana porque retiene el original
window
y eldocument
contexto de la ventana en la que se llamó.He escrito un código aquí y allá para hacer popouts *, y jQuery simplemente puede interferir con lo que estoy tratando de lograr. Agregar una nueva referencia a jQuery en la ventana secundaria a menudo puede empeorar las cosas al hacer que sea más difícil saber qué contexto jQuery se está utilizando.
* Piense en la ventana emergente de Gmail para redactar un correo electrónico en una nueva ventana, no en publicidad spam
Úselo cuando simplifica el código
El momento de usar jQuery es cuando puede hacer que su código sea más simple, más corto, más legible y más rápido.
El momento de no usar jQuery es cuando no hará que su código sea más simple, más corto, más legible o más rápido. Si necesita ajustar los tiempos de carga, es posible que no desee usar jQuery debido a la sobrecarga del evento.
fuente
Como sabrán, jQuery es un marco de uso general que proporciona muchos métodos que muchos de nosotros no usamos en nuestros proyectos. (Algunos de ellos no los he usado en absoluto).
Hay dos razones principales para no usar jQuery o cualquier otro marco bien establecido.
1. El proyecto no es lo suficientemente grande o complejo como para usar dicho marco: en este caso, el codificador toma una decisión informada basada en su experiencia y conocimiento en JavaScript. Esto lo ayudará a reducir el peso de la página y también más control sobre el código.
2. El codificador desarrolla su propio marco. He visto un proyecto en mi empresa que tiene su propio marco JavaScript. La razón por la que citan es que si están usando jQuery y hay algún error que solucionar, tienen que esperar hasta la próxima versión. Además, si hay que agregar una función, deben solicitarla al equipo de jQuery o agregar un complemento, aunque convertirlo en un complemento no será una buena idea (dieron el ejemplo de haber usado algo
.live
similar en su marco incluso antes de que se agregara oficialmente a JQuery). Tener su propio marco le da más control al código. La desventaja es que necesita reinventar la rueda con respecto a los problemas de compatibilidad del navegador, etc. Además, si el proceso de desarrollo no es bueno, su marco se hinchará y solo aumentará el tiempo para mantenerlo.fuente
Micro
Creo que las personas se protegen contra el uso de algunas bibliotecas debido a la dependencia de esa solución de infraestructura / biblioteca para realizar alguna tarea.
Pero tengamos cuidado de recordar que los idiomas van y vienen como bibliotecas a largo plazo.
Entonces, tal vez sea de alcance temporal. Tal vez las personas duden en invertir en una biblioteca que tal vez no esté allí, o que tengan tanto impulso a la larga.
¿Mí mismo? No tengo ninguna objeción a usar JQuery en particular. También miro, por ejemplo, Box2d.js o three.js y preferiría adoptarlos incluso si tienen una vida útil a corto plazo que perderse las frutas que tienen para ofrecer.
La conclusión de Mike es que existe un riesgo en la vida útil de una biblioteca que elijas, y creo que algunos en la comunidad de JavaScript pueden haber experimentado pérdidas debido a que una biblioteca o proyecto está llegando a su fin, y pueden haber dicho, nunca más.
fuente
Diría que el problema principal es que cada vez más personas (¿la gran mayoría?) Ya no saben cómo codificar en JavaScript. Si jQuery no puede hacer algo, no pueden hacerlo.
Está llegando al punto en que los ejemplos simples de JavaScript se están volviendo difíciles de encontrar. Nada en contra de jQuery; Es un gran marco. Obtuve muchas buenas ideas, pero la gente debería aprender JavaScript primero y luego aprender un marco. Personalmente, considero que mi propio marco es más flexible y se adapta mejor a mis necesidades, y sí, a veces reinvento la rueda, pero el control total y el control sobre las correcciones de errores es una gran ventaja siempre que esté dispuesto a poner el trabajo en aprender JavaScript.
No solo eso. Conocer JavaScript vainilla hace que sea mucho más divertido jugar y experimentar con las funciones más nuevas en lugar de esperar una implementación basada en el marco. Además, no culpo a jQuery por esto, ya que es principalmente una biblioteca DOM , pero puede ser difícil de escalar con grandes proyectos. Otros marcos hacen un mejor trabajo en esto; El prototipo me viene a la mente.
En resumen, es un gran marco, pero no todo es lo que la gente dice.
fuente
Puedo agregar dos razones más que no se mencionaron:
Cuando elijo tecnología completamente nueva, muchas veces, comenzaría con construcciones de nivel inferior antes de pasar a las de nivel superior. Principalmente soy un desarrollador de C ++ / C #, pero hace un tiempo, cuando comencé a jugar con HTML / CSS / JavaScript, decidí no usar ningún marco porque primero quería entender la tecnología (es decir, el JavaScript lenguaje en sí) sobre el que se construyen esos marcos.
No sé qué tan común es esto, pero para mí parece que hay muchas personas que cuando ven el próximo marco / tecnología / lenguaje, su primera respuesta es "¡no otra API para que yo aprenda!" No les importa lo fácil que es jQuery, pero simplemente lo ven como un obstáculo entre ellos y entregando trabajo usando sus métodos "verdaderos y probados". Esta es la misma categoría de personas que se niegan a usar la biblioteca Boost o cualquiera de STL y continúan usando malloc para casi todo. Usted preguntó por qué eligen JavaScript puro sobre jQuery y, en realidad, nunca lo hicieron porque la mayoría de las veces se negaron a evaluar jQuery en primer lugar y están perfectamente contentos con su ritmo de desarrollo actual, no importa cuán lento sea.
fuente
jQuery es una biblioteca escrita en y para JavaScript. La idea es que simplifica todas las cosas difíciles / tediosas de JavaScript, lo que acelera el tiempo de desarrollo y hace que sus scripts sean mucho más propensos a funcionar en varios navegadores.
Lo que hace que sea preferible usar jQuery:
Aquí hay razones que hacen que sea preferible usar JavaScript en lugar de jQuery:
Debido a estas razones, me gusta usar JavaScript para evitar el marco jQuery. Es mucho mejor aprender JavaScript en lugar de depender de dicha biblioteca ...
Incluso si desea extenderlos, debe escribir código en JavaScript. Lo cual también es una gran charla. Los desarrolladores dependen de estas bibliotecas, por lo que para tener control sobre los proyectos, JavaScript es mejor que usar frameworks.
fuente
Creo que las personas usan jQuery porque es más simple, más fácil y más poderoso, y porque les ayuda a olvidarse de IE. Además, para funcionalidades personalizadas, las personas usan JavaScript. Intente referir el DOC para más detalles.
fuente