jquery - con - prototype javascript
Prototype VS jQuery-Fortalezas y Debilidades? (14)
No quiero abrir otro hilo " Yet Another Js VS Js ".
Supongo que, al final, Prototype y jQuery son ambos JS y tienen casi los mismos métodos y funciones, y necesitan casi las mismas líneas de código para tareas idénticas.
Para una aplicación real de Rich Internet , ¿cuáles son las fortalezas reales y cuáles son las debilidades en Prototype vs. jQuery?
¿Podría también ofrecer el argumento de que usar uno u otro es un falso dilema? Al tener mucha experiencia con jQuery, sé cuán beneficioso puede ser y cuánto más rápido podría ser el desarrollo de aplicaciones.
Sin embargo, es importante señalar que tal vez sea más beneficioso para los usuarios finales en algunos casos no usar ninguna biblioteca, especialmente en los casos en que no es necesario. Si bien es útil para aplicaciones grandes, puede ser contra-intuitivo para su uso en el sitio web común a causa del impacto en el rendimiento.
Se realiza una solicitud HTTP adicional para descargar la biblioteca y, aunque suele ser pequeña cuando se minimiza, se requiere más ancho de banda como resultado. Esto tiene el potencial de ralentizar el tiempo de carga de la página que pueden realizar los usuarios de dispositivos móviles.
Además, al cargar, una biblioteca ejecutará código de inmediato para crear funciones y objetos accesibles a nivel mundial, consumiendo así más memoria, incluso si nunca los usa. Algunas bibliotecas también agregarán funciones y objetos a los prototipos de objetos incorporados, lo que también aumenta el uso de la memoria.
Finalmente, aunque jQuery y muchas otras bibliotecas a menudo se prueban exhaustivamente para asegurar el menor impacto posible en el rendimiento, el código que se escribe, aunque reducido en cantidad, a menudo será más lento que de otra manera. Tenga en cuenta que todo lo que puede hacer con una biblioteca lo puede hacer con JavaScript sin procesar, ya que fundamentalmente son lo mismo.
Actualmente estoy reescribiendo bloques grandes de una aplicación para pasar de Prototype a jQuery. ¿Por qué? Complementos, complementos, complementos, particularmente widgets de interfaz de usuario. Los elementos de la IU prototipo son bastante fragmentados y muy fragmentados, mientras que jQuery tiene un conjunto muy rico de elementos "estándar" .
El código conciso y sucinto que usa operadores de estilo abreviado también tiende a ser críptico, por lo que no es necesariamente mejor. Puede alejarse de la legibilidad y hacer que entender lo que está pasando sea menos claro. En mis muchos años de programación, me he encontrado con un código críptico muy inteligente que era el demonio para descubrir cuando tenía problemas. Personalmente me gusta el código que autoejecuta y que está optimizado para los detalles de una situación. Si su objetivo es hacer lo máximo en las menos líneas de código, entonces el uso de bibliotecas de extensión DOM como prototype y jQuery puede ser para usted. Personalmente creo que es mejor comprender completamente las capacidades del lenguaje JavaScript en sí mismo y la implementación DOM de los navegadores y aprovecharlo para la tarea en cuestión, ya sea construyendo widgets UI o lo que sea. Utilizo la biblioteca script.aculo.us ocasionalmente para efectos de animación, así que me encuentro cargando el código de la biblioteca del prototipo ya que scriptaculous depende de ello. Mi sugerencia para cualquiera que use cualquiera de las bibliotecas sería aprender cómo escribir el estilo de OO JavaScript antes completamente dependiendo de cualquiera de estas bibliotecas, y luego incorporar la que mejor se adapte a sus necesidades. Excelente libro para aprender OO estilo JavaScript es ''Java Design Patterns''.
Elegí jQuery sobre Prototype porque:
- el "hacer más, escribir menos ..."
- la comunidad jQuery es más grande (por lo tanto, más complementos y recursos)
Este es otro artículo interesante sobre jQuery y MooTools (MooTools y Prototype son en su mayoría intercambiables, al menos en el contexto de este debate): http://jqueryvsmootools.com/
He usado ambos y me gustan los dos. Realmente depende de los requisitos de tu proyecto. Para mí, parece que ambas plataformas provienen de 2 direcciones diferentes debido a 2 requisitos diferentes. Ambos fueron creados por la necesidad de resolver problemas de programación para ayudar a construir sitios web / aplicaciones más rápido y mejor.
Al hacer sitios web rápidamente, con una caja de herramientas estándar de trucos, jquery y su biblioteca son geniales. No tiene sentido reinventar la rueda. Sin embargo, me encuentro con la extraña versión de navegador cuando mi herramienta / truco no funciona y siempre sucede que es el cliente quien tiene esa versión específica. Por lo general, ocurre cuando se lanza / actualiza una versión del navegador. Entonces, tengo que ir a buscar la nueva versión de ese archivo de biblioteca de jquery para actualizar todos mis sitios, es decir, si la comunidad ya ha notado y resuelto dicho problema. Este es mi único problema porque no tengo tiempo para resolverlo por mi cuenta. No sucede a menudo, pero sucede.
Cuando trabajo en proyectos web más complejos, tal vez una red de sitios compatibles con API de fondo, entonces creo que el prototipo es excelente. Aprovecho al máximo la codificación OO del lado del servidor y me complació mucho poder hacer lo mismo con Prototype. Siento que tengo más "control" sobre mis aplicaciones y puedo arreglar las cosas rápidamente ya que soy el autor. Escucho lo que la gente dice sobre los gastos generales, los DOM extendidos, etc., pero no me he encontrado con ningún problema importante (tocar la madera). Además, todo el problema de no tener una declaración ''para cada'' no es un gran problema cuando puedo fácilmente iterar la misma variable con .each (function () {}, ..) y con un poco más de control.
Entonces, cada uno tiene su lugar y debes elegir tu propia droga.
Me gusta,
Inicialmente me gustó la idea de los elementos de extensión de Prototype con métodos nuevos o modificados.
Sin embargo, he descubierto una serie de razones por las que esto es malo (TM)
Realiza búsquedas en Google y probablemente encontrarás otras razones, pero la razón principal es que no se puede garantizar que Prototype "juegue bien" con otros marcos o bibliotecas, ya que otras bibliotecas esperan que el comportamiento de los elementos y métodos sea "estándar", y debido a las cosas que hace Prototype, puede encontrar una cantidad de cosas que se rompen por él.
El ejemplo más reciente que descubrí fue Prototype screwing con JSON y stringify. Estaba usando EasyXDM, y simplemente no funcionó en algunos casos donde se cargó la biblioteca prototype.js. Mientras escribía un framework para ser usado por otros , y por lo tanto no tenía control sobre el contenido de la página, necesitaba crear y hacer todo en un IFRAME para asegurarme de que cosas como prototype.js no causen estragos. lo que estaba tratando de hacer
... así que jQuery gana las manos abajo para mí, porque simplemente no creo que sea correcto que un framework se enganche automáticamente con el comportamiento estándar del DOM y javascript. USTED debe tener el control de estas cosas, Prototype le quita algo de este control ...
JQuery fue creado para facilitar la adición de efectos sofisticados a las páginas. Ha logrado un 100% de éxito.
Debido a que agregar animaciones y llamadas ajax ocasionales es lo que las personas generalmente necesitan y exigen de una biblioteca Javascript, JQuery tiene una gran comunidad. El lema de JQuery es: "Voy a agregar algo de chispa y me quitaré de en medio", que es exactamente lo que nosotros, los desarrolladores, a menudo necesitamos.
Sin embargo Prototype sobresale como máximo en otros casos de uso. Tiene un marco estable para OOP basado en clases (resolver problemas de manera uniforme como heredar constructores) y un buen conjunto de abstracciones de uso general para tratar con datos.
Suscribiendo la respuesta correcta marcada ya firmada, también quiero compartir una lib que le permita usar la mayoría de las utilidades que esperaría encontrar en un framework como prototipo, pero con la ventaja de no extender los objetos nativos. Como consecuencia, le proporciona más control y flexibilidad sobre los marcos complementarios que le gustaría usar a lo largo de su proyecto.
Underscore es una biblioteca de cinturón de herramientas para JavaScript que proporciona una gran cantidad de soporte de programación funcional que esperaría en Prototype.js (o Ruby), pero sin extender ninguno de los objetos de JavaScript integrados. Es el empate para acompañar el tux de jQuery y los tirantes de Backbone.js.
También uso jQuery sobre prototipo, solo mire en la parte superior de esta página por qué:
jquery : 531,752
pregunta etiquetada del prototipo : 2,465
Actualizado 22/09/2014, a 12/14/2011 jQuery - 135,641 / prototipo - 2,327
jQuery es un código muy escueto y conciso. El prototipo me parece mucho más detallado, aunque a menudo equivalente en muchas áreas para la funcionalidad. Sin embargo, si necesita ayuda para comenzar, desea una comunidad más grande. Más soporte, más de las mismas preguntas que ya tendrá contestadas y fáciles de buscar en Google, y más complementos, código que probablemente esté buscando para hacer algo ... ya escrito.
Por las mismas razones, cuanto más grande es la comunidad, más código, más complejo es el código, lo que significa que se han escrito cosas simples y se han resuelto muchas situaciones complicadas, lo más probable es que si estás escribiendo una aplicación muy rica vas a ir para encontrarse con algunas preguntas o situaciones bastante complicadas ... hay más recursos disponibles para ayudarlo a manejar esto.
De nuevo ... por la misma razón de tamaño de la comunidad, se han encontrado más deficiencias en el marco y se han llenado las lagunas, porque una comunidad más grande estaba escudriñando. Esto significa que cuando te encuentras con un problema, es probable que alguien más lo haya hecho también, y se agregó algún método u opción para mantenerte en movimiento, sin atorarse porque tocas algo que el marco no pudo hacer.
Tampoco es el "mejor". Todo depende Pruébalos y mira cuál te gusta más. Personalmente uso JQuery debido a la facilidad de uso sobre el prototipo que es bastante avanzado y tiene una curva de aprendizaje más larga.
Mira esto:
Todavía no tengo experiencia en jQuery o Prototype. A punto de comenzar a aprender uno de ellos para agregarlo a mi caja de herramientas como Senior ColdFusion Developer & Project Manager. Mi opinión al respecto es en primer lugar cuál decidirá un nuevo visitante, ya que refleja la adopción de la industria, que en mi humilde opinión es clave.
Basado en una rápida mirada y algunas lecturas tutoriales en ambos, parece que cada uno ofrece las mismas habilidades básicas. Sin embargo, al buscar bolsas de trabajo y otros proyectos, jQuery parece tener mucha más "demanda" que una simple habilidad que uno pueda usar. Para mí, jQuery gana aquí con adopción y demanda, el apoyo de la comunidad y la documentación es una ventaja. Nada en contra de Prototype, es bueno saber si un proyecto lo requiere debido a la existencia previa porque algún desarrollador lo eligió como el primero que investigó.
he usado prototype framework y jquery, y en cuanto a mí, personalmente me gusta jquery primo de su noConflict (); prefiero usar jq noConflict como este en mis archivos js
(function($){
}(jQuery));
De esta manera, usarás el selector $ as jquery por archivo js
jQuery usa selectores y filtros de estilo CSS que se basan en la sintaxis de CSS. Desde el punto de vista del diseño, esto tiene muchos beneficios. Soy muy aficionado y competente en CSS, por lo que jQuery se siente como en casa para mí personalmente. Si busca una sintaxis para que su experiencia de codificación integral sea más placentera, y usted es un gran admirador de / experto en CSS, es seguro decir que preferirá jQuery sobre las alternativas. Tomé un curso básico en Prototype y me aburrí hasta las lágrimas. Acabo de completar "The Essentials of jQuery" en Lynda''s y me encanta, debido a su estrecha relación con CSS. He estado programando en JavaScript vanilla durante aproximadamente 10 años y siempre he encontrado que es extremadamente seco; y para mí es un exceso de código (no mucho por el dinero). Aunque ha sido muy útil para mí a lo largo de los años. Por lo que he visto hasta ahora, jQuery es lo que JavaScript DEBERÍA haber sido desde el primer día. Pero, de nuevo, toma mucho tiempo, pruebas y esfuerzo para mejorar las cosas. Así que jQuery gana para mí.