Prototipo VS jQuery – Fortalezas y Debilidades?

No quiero abrir otro «Otro VS Js Js» hilo.

Supongo que, al final Prototype y jQuery son tanto JS y tienen casi los mismos métodos y funciones y la necesidad casi las mismas líneas de código para tareas idénticas.

Para un real Aplicación de Internet enriquecida, ¿cuáles son los fortalezas reales y lo que el debilidades en Prototipo vs jQuery?

  • Tenemos varios duplicados de esta pregunta ya (ver esta búsqueda). Este en particular solo pasa a ser extraordinario subjetivo y argumentativa. Qué votar?
  • Básicas/hechizo de la gramática va un largo camino cuando se espera que otros tomen el tiempo para responder a sus preguntas.
  • tan pronto como se alcance la suficiente reputación necesaria para editar otros puestos, pls no dude en para modificar los errores de gramática y comprobar todos los hechizos que quieras! tnx… 😉
  • posibles duplicados de ¿hay alguna razón para preferir Prototipo para JQuery?

14 Kommentare

  1. 105

    Al principio me gustó la idea de Prototipo de la ampliación de los elementos nuevos o modificados métodos.

    Sin embargo, he descubierto un número de razones por las que esto es un cosa mala (TM)

    Hacer buscar un poco en google y probablemente encontrará algunas otras razones, pero la principal razón es que el Prototipo no puede ser garantizada a «jugar bonito» con otros frameworks o librerías, como otras bibliotecas de esperar que el comportamiento de los elementos y métodos para ser «estándar», y debido a las cosas Prototipo hace, usted puede encontrar un número de cosas que se rompen por ella.

    El ejemplo más reciente que descubrí fue el Prototipo de atornillar con JSON y stringify. Yo estaba usando EasyXDM, y simplemente no funciona en algunos casos donde la prototype.js la biblioteca se ha cargado. Como yo estaba escribiendo un marco de trabajo para ser utilizado por otros, y por lo tanto no tenemos control sobre el contenido de la página, que necesitaba para crear y hacer todo en un IFRAME con el fin de asegurarse de que las cosas tales como prototype.js no estragos con lo que yo estaba tratando de hacer.

    …así jQuery gana las manos abajo para mí, porque yo no creo que su derecho para que un marco de forma automática tornillo con el comportamiento estándar de la DOM y javascript. USTED debe estar en el control de estas cosas, Prototipo se lleva a algunos de este control de distancia de usted….

    • Debo añadir que, en casos limitados, donde usted está en control completo de la página, no depender de otras bibliotecas, etc, hay algunas cosas que el Prototipo puede hacer bien, simplemente y fácilmente (me gusta especialmente la absolutize() método). Pero no creo que sea una buena opción para un «defecto» framework que uso todo el tiempo, mientras que la de jQuery y otros menos invasiva que las bibliotecas son bastante segura para incluir (me gusta especialmente la .noConflict() método – todos mis jQuery se hace con $j en lugar de $, mediante el uso de window.$j = jQuery.noConflict();
    • tengo que comprobar tu respuesta amigo! 😉 esta es la más correcta aquí! muchas gracias de nuevo!
    • Ha mantenido hasta la fecha con easyXDM? La última versión de la realidad ‘sobrevive’ PrototypeJs como cuentan con pruebas de que el objeto JSON antes de usarlo.
    • no usar la versión más reciente – yo tenía un par de «parches» que me iba a enviar pero cuando iba a volver a su sitio es apareció (ver el código, no de prueba) estos son resueltos en la versión más reciente. Uno de ellos era un problema si ENDPOINT contenía una cadena de consulta (por ejemplo, si hash.html o una aplicación de su funcionalidad tenido un URI de como //some.domain/some.script?page=easyXDMhash&someOtherValueName=someOtherValue). De que todo lo que dijo -, mientras que su marco maneja Prototipo, algunos otros no (por lo tanto, yo todavía no me gusta la forma de Prototipo hace las cosas)
    • Por cierto @Sean Kinsey – gracias de un impresionante marco. EasyXDM es definitivamente el camino a seguir para cross-domain-cruz-de marco de comunicación 🙂
    • Si no te importa, me podrias enviar el archivo parcheado, o una descripción de estos (al menos aquellos que no afirmativamente dicen haber sido solucionado)? Probablemente hay algunos casos de uso que no he previsto 🙂
    • Kinsey – me tomó este debate de Desbordamiento de Pila (que es un poco off topic de esta página) y twitter usted. tl.gd/v541p
    • y peraphs esta es la única respuesta! que pregunte a mi pregunta!!! y déjame que piense que usted es el único que he leído por completo! 😉
    • Me gusta bind() en prototype, jQuery no tienen porque exige que todo es «modular». Pero haciendo a veces que es como golpear un clavo con un martillo. También me gusta el prototipo que devuelve (ok, es extendido sé) el elemento DOM en lugar de un objeto jQuery. A pesar de que esta respuesta tiene un punto MUY bueno en cuanto a los prototipos de mayor caída.
    • Fue el conflicto causado únicamente por el Prototipo o puede que la culpa sea poner en ambos Prototipo y EasyXDM? No entraré en detalles, así que me gustaría asumir que hubo un conflicto debido a que ambos Prototipo y EasyXDM había extendido la misma «clase» con la misma función. Por ejemplo, ambos pueden tener definido hide en Element. La última carga de la biblioteca iba a reemplazar el anterior, provocando que los antiguos no funcionen como se espera. En este caso, tanto las bibliotecas tienen la culpa. Entonces, ¿por qué tendría que utilizar otro mal de la biblioteca si usted ya considerado Prototipo a ser malo?

  2. 45

    Puedo usar jQuery de prototipo así, con tan sólo mirar en la parte superior de esta página por qué:

    jquery etiquetado preguntas : 531,752

    prototipo de etiquetado pregunta : 2,465

    Actualizado 9/22/2014, en 12/14/2011 jQuery – 135,641 /prototipo – 2,327

    jQuery es muy breve, conciso código. Prototipo puedo encontrar mucho más detallado, aunque a menudo equivalente en muchas áreas de la funcionalidad. Sin embargo, si usted necesita ayuda para empezar, usted desea que la mayor parte de la comunidad. Más apoyo, más de las mismas preguntas que usted tendrá que ya no respondió y fácil a google, y más plugins, código probablemente usted está buscando para hacer algo…ya escrito.

    Por las mismas razones, la más grande sea la comunidad, más código, el más complejo código, lo que significa que las cosas simples se ha escrito y muchas situaciones complicadas resuelto así, es probable que si usted está escribiendo un muy rico aplicación que vamos a correr hacia algunas bastante complicadas preguntas o situaciones…hay más recursos hacia fuera allí para ayudarle a manejar esto.

    De nuevo…para el mismo tamaño de la comunidad de la razón, más deficiencias en el marco se han encontrado y las lagunas llena, porque una comunidad más grande era el escrutinio de la misma. Esto significa que cuando usted viene a través de un problema, es posible que alguien más lo hizo también, y algún método o opción se agregó para mantenerte en movimiento, no se atasca debido a que golpeó algo que el marco no podía hacer.

    • El número de preguntas que hace, no quiere decir nada. Se podría decir que jQuery necesita un montón de preguntas más para ser entendido/usado, o que jQuery es utilizado principalmente por unexperiences/personas no cualificadas… con Todo, esto no significa que cualquier cosa relacionada con la pregunta.
    • Muéstrame cualquier tema, ASÍ que con casi treinta veces la cantidad de actividad en los que la comunidad no es más grande…se relaciona directamente a la pregunta, hay más respuestas que hay para jQuery vs prototipo. La comunidad de cuestiones de tamaño, la pregunta recuento fue sólo una inmediata ilustración. Si prototipo tenía una comunidad más grande, su calendario de lanzamientos de no tomar mucho tiempo…y desde el 2.0 cambia su sintaxis es debido a la DOM problemas que introducen a través de cómo toda su modelo funciona…yo diría jQuery solo tienes que elegir un camino mejor, y se alza en el consumo a causa de ella.
    • 2.0 ? Prototipo estable es de 1.6 y RC es de 1.7. Prototipo decidió extender js prototipos y nunca miró hacia atrás. jQuery escogió un camino diferente y nunca miró hacia atrás. Diferentes necesidades, diferentes enfoques, tampoco está mal. No se sectarist.
    • miró hacia atrás»…no estoy de acuerdo completamente, principalmente debido a que los miembros del Prototipo del equipo central contradice así, aquí está uno de ellos mirando hacia atrás, y discutiendo 2.0: perfectionkills.com/whats-wrong-with-extending-the-dom
    • Ver cuántas preguntas han sido hechas por un marco que NO es ninguna indicación sobre la calidad de un marco – de hecho, podría ser el opuesto como una más complejos o mal diseñados marco con baja documentación es el resultado de un lote más preguntas!
  3. 19

    Actualmente estoy reescribiendo grandes bloques de una aplicación para pasar de Prototipo para jQuery. Por qué? Plugins, plugins, plugins, especialmente widgets de interfaz de usuario. Prototipo de interfaz de usuario elementos son bastante fragmentado y muy poco a poco, mientras que jQuery tiene un muy amplio conjunto de «estándar» elementos.

    • Esto es lo que echo de menos acerca de prototipo 🙁 aunque me parece prototipo (y scriptaculous) que funciona para mí como yo sólo uso de una pequeña cantidad de efectos, selectores y ajax. De tener un buen dominio en raw JS, el hecho de prototipo se extiende es más agradable de manejar que tener para aprender correctamente jQuerys métodos (como se devuelve un objeto de sí misma, y entonces usted necesita para utilizar los métodos, raw no js). Si yo fuera a hacer algo más involucradas en relación con el prototipo o requiere un montón de extras, como la caja de luz y así sucesivamente, entonces jQuery es.
  4. 13

    JQuery fue construido para facilitar la adición de efectos de lujo a las páginas de fácil. Se ha logrado un 100% de éxito.

    Desde adición de animaciones y ocasionales llamadas ajax es lo que la gente generalmente de la necesidad y la demanda de una biblioteca de Javascript, JQuery tiene una gran comunidad. El JQuery lema es «voy a añadir algo de brillo, y salir del camino», que es exactamente lo que nosotros, los desarrolladores, a menudo necesitan.

    Sin embargo Prototipo destaca en la mayoría de los otros casos de uso. Tiene un marco estable para la clase de programación orientada a objetos (uniformemente la resolución de problemas como heredar los constructores), y un buen conjunto de uso general abstracciones de acuerdo con datos.

    • no voy a votar abajo esta solo porque soy una persona seria. PS: «escribe menos, haz más».
    • Se le preguntó acerca de la experiencia de la vida real con Prototype y jQuery en la toma de RIAs. Usted no mencionó que el punto era alabar a jQuery y criticar el Prototipo. Generalmente se usa Javascript para manipular el DOM, añadir efectos, hacer algo de ajax (más se lee, menos se escribe). Aquí es donde jQuery brilla, su diseño es perfecto para este tipo de casos. Pero en las grandes RIAs usted puede ser que necesite para generar complejo JSON, modularizar el código mediante la construcción de clases (tal vez de usar la herencia?) etc. jQuery no ayuda aquí y Prototipo. Es por este motivo no desea votar por mí hacia abajo? PS: «no seas malvado».
    • +1 – primera respuesta que he leído que menciona prototipos ventajas de la programación orientada a objetos 😉
  5. 9

    Elegí jQuery de Prototipo porque:

    • la de «hacer más, escribir menos…»
    • la comunidad jQuery es más grande (por lo tanto, más plugins y recursos)
  6. 6

    He usado ambos y como ambos. Realmente depende de sus requisitos del proyecto. A mí me parece que ambas plataformas venía de 2 direcciones diferentes, porque de 2 diferentes requisitos. Ambos fueron creados a partir de la necesidad de resolver los problemas de programación para ayudar a construir sitios web/aplicaciones más rápido y mejor.

    Al hacer páginas web de forma rápida, con una caja de herramientas estándar de trucos, jquery y su biblioteca es excelente. No tiene sentido reinventar la rueda. Yo, sin embargo, ejecutar en la extraña versión del navegador problema cuando mi herramienta/truco no funciona y siempre sucede que es el cliente quien tiene esa versión específica. Generalmente ocurre cuando la versión del navegador es liberado/actualizado. Así, entonces tengo que ir a buscar la nueva versión del archivo de biblioteca jquery para actualizar todos mis sitios, que es si la comunidad ya ha notado y se resuelve dicho problema. Esta es mi única que pone de mal humor porque no tengo el tiempo para averiguarlo yo mismo. No sucede a menudo, pero sucede.

    Cuando se trabaja en los más complejos proyectos web, tal vez en una red de sitios compatibles con el back-end de la Api, y luego encontrar prototipo es grande. Debo aprovechar al máximo el lado del servidor OO codificación y estaba muy contento de que puedo hacer lo mismo con el Prototipo. Me siento como que tengo más «control» sobre mis aplicaciones y se puede arreglar las cosas rápidamente como yo soy el autor. Oigo lo que dice la gente acerca de la sobrecarga, el DOMs extendidos, etc. pero no me he topado con ninguna majors problemas (toco madera). También, todo el problema de no contar con un «para cada» instrucción no es mucho de un problema cuando me puede repetir la misma variable .each(function(){},..) y con un poco más de control.

    Así, cada uno tiene su lugar y usted tiene que escoger a su propia droga.

    Gusta,

  7. 4

    Ni es el «mejor». Es depende de todos. Pruebe ambos y ver cuál te gusta más. Yo personalmente uso JQuery debido a facilidad de uso de prototipo que está bastante avanzada y ya tiene la curva de aprendizaje.

    Tiene una mirada en:

    Prototipo vs JQuery (en Ajaxian)

    • Yo diría que es al revés para ser honesto, después de aprender tanto para jquery, prototype y primas de js. jQuery es un dolor en el **** con mantener la devolución de un objeto jquery (lo que significa que deben aprender los métodos del objeto jquery con el fin de poder hacer uso de ella), a diferencia del prototipo, la cual devuelve una extendida elemento de dom para innerHTML por ejemplo va a funcionar. La desventaja es la compatibilidad con todos los navegadores, pero sigue siendo inferior a la de una curva de aprendizaje para el prototipo. También, prototipos método bind() no te obliga a hacer todo lo modular (algo más que aprender) como jQuery hace.
    • Aunque me gustaría decir – ese último comentario es SÓLO a partir de una curva de aprendizaje perspectiva. jQuery impone dos buenos puntos – por la devolución de un objeto jQuery y usando sólo métodos del sida en la cruz del navegador de scripts & codificación en un sistema modular de fasion no es una mala cosa 😉 a Pesar de que ambos requieren más de aprendizaje que de prototipo.
    • Yo solía utilizar el prototipo para un largo tiempo y ahora he estado usando jQuery. Yo no veo el prototipo más avanzado que el de jQuery.
    • +1 para un enlace fantástico, aunque pasen los años. No puedo creer que no he visto eso antes. Voy a compartir esto con mis co-desarrolladores.
  8. 3

    Este es otro interesante artículo sobre jQuery y MooTools (MooTools y Prototype su mayoría son intercambiables, al menos en el contexto de este debate) : http://jqueryvsmootools.com/

    • «MooTools es un framework que intenta implementar JavaScript como debe ser (de acuerdo a los autores de MooTools). El objetivo es implementar un API que se siente como JavaScript y mejora todo; no solo el DOM. jQuery es un conjunto de herramientas que le da un fácil utilizar la colección de métodos en un sistema autónomo diseñado para hacer el DOM sí más agradable. Se da la circunstancia de que el DOM es donde la mayoría de la gente se centra su esfuerzo al escribir JavaScript, por lo que en muchos casos, jQuery es todo lo que usted necesita.» – tal vez el Prototipo es más un marco demasiado. La mayoría de los aquí parece preferir el kit de herramientas.
  9. 3

    jQuery utiliza CSS al estilo de los selectores y los filtros, que se basan en la sintaxis de CSS. Desde un punto de vista de diseño, este tiene un montón de beneficios. Soy muy aficionado y experto en CSS, por lo que jQuery se siente como en casa para mí, personalmente. Si usted está buscando una sintaxis por lo que su todo-en torno a la experiencia de codificación es más agradable, y eres un gran fan de/competente en CSS, es seguro decir que se prefiere jQuery sobre las alternativas. Tomé un curso básico en Prototipo y yo estaba aburrido hasta las lágrimas. Me acaba de completar «Los fundamentos de jQuery» más en Lynda y me encanta, debido a su estrecha relación con CSS. He estado programando en JavaScript por cerca de 10 años y siempre lo he encontrado para ser extremadamente seca; y para mí es código de overkill (no mucho explosión para el buck). Aunque ha sido muy útil para mí a lo largo de los años. Por lo que he visto hasta ahora, jQuery es lo JavaScript DEBERÍA HABER sido desde el primer día. Pero, de nuevo, lleva mucho tiempo, las pruebas, y el esfuerzo para mejorar las cosas. Así jQuery gana para mí.

    • Prototipo también apoya a los selectores de CSS, usando $$() en lugar de $()
  10. 2

    No tengo experiencia en jQuery o Prototype, sin embargo. A punto de iniciar el aprendizaje de uno de ellos para añadir a mi caja de herramientas en un puesto de ColdFusion Developer & gerente de proyecto. Mi opinión sobre esto es que inicialmente uno un recién decidirá en como esta se refleja en la industria adoptation, que en mi humilde opinión, es la clave.

    Basado en un rápido vistazo a su alrededor y un par de tutorial de las lecturas de ambos, parece que cada uno de ellos ofrecen el mismo núcleo de habilidades. Sin embargo, mirando a las bolsas de trabajo y otros proyectos, jQuery parece mucho más a la «demanda» en lugar de una habilidad que se puede utilizar. Para mí, jQuery gana aquí con la adopción y la demanda, el apoyo de la comunidad y de la documentación es un plus. Nada en contra de Prototipo, es bueno saber si el proyecto lo requiere, debido a la pre existencia porque algún desarrollador lo escogió como el primero miró.

  11. 1

    he usado prototipo de marco y jquery , y como para mí, personalmente, me gusta jquery primo de su noConflict();
    yo prefiero usar el jq noConflict como esto en mi js archivos

    (function($){
    
    }(jQuery));

    esta manera se hará uso de la $ como selector de jquery por archivo js

    • Tengo instalado lo mejor de ambos mundos – prototipo utiliza $ y $$, mientras que utiliza jquery noConflict 😀
  12. 1

    De la suscripción, el ya firmado marcada respuesta correcta me wan no también para compartir una lib que permiten utilizar la mayoría de las utilidades que usted esperaría encontrar en un marco como prototipo, pero con la ventaja de no extender objetos nativos. Como consecuencia de ello se le proporciona un mayor control y flexibilidad sobre complementarios de los marcos que le gustaría utilizar a lo largo de su proyecto.

    Subrayado es una utilidad del cinturón de la biblioteca de JavaScript que proporciona una
    mucha de la programación funcional de apoyo que se puede esperar en
    El prototipo.js (o Ruby), pero sin ampliar cualquiera de los integrados en
    Objetos de JavaScript. Es la corbata para ir junto con jQuery tux, y
    Columna vertebral.js del tirantes.

    • Lástima que no hay efectos o ajax – por lo tanto, ¿por qué otros marcos se utilizan en su lugar.
  13. 0

    También podría ofrecer el argumento de que el uso de uno u otro es un poco de un falso dilema? Tener un montón de experiencia con jQuery sé lo beneficioso que puede ser y cuánto más rápido desarrollo de la aplicación podría llegar a ser.

    Es importante tener en cuenta, sin embargo, que tal vez puede ser más beneficioso para los usuarios finales, en algunos casos, el uso de la biblioteca no en todos, especialmente en los casos donde no se requiere. Aunque es sin duda útil para aplicaciones de gran tamaño, puede ser contra-intuitivo para su uso en el sitio web común, en la cuenta de que el impacto en el rendimiento.

    Un extra de solicitud HTTP para descargar la biblioteca y, aunque por lo general de pequeño, cuando reducirá, el más ancho de banda que se requiere como resultado. Esto tiene el potencial de ralentizar el tiempo de carga de página que puede ser realizado por los usuarios móviles.

    Además, la carga de una biblioteca que va a ejecutar de forma inmediata el código para crear globalmente accesible funciones y objetos, lo que consume más memoria incluso si usted no usarlas nunca. Algunas bibliotecas también agregar funciones y objetos de objeto de prototipos, lo que también aumenta el uso de memoria.

    Finalmente, mientras jQuery y muchas otras bibliotecas a menudo son ampliamente probados para garantizar el mínimo impacto en el rendimiento, el código que se escribe, aunque reducido en la cantidad, la frecuencia será más lento de lo habitual. Tenga en cuenta que todo lo que se puede hacer con una biblioteca que se puede hacer con raw de JavaScript, ya que fundamentalmente son lo mismo.

  14. -1

    Sucinta concisa de código mediante el uso de abreviar operadores de estilo tiende a ser críptico, así por lo que no es necesariamente mejor. Se puede tomar distancia de la lectura y facilitar la comprensión de lo que está pasando en menos clara. En mis muchos años de programación que me he encontrado algunos muy inteligente críptico código que fue el diablo para averiguar cuando había problemas. Personalmente me gusta el código que se auto de los documentos y que está optimizado para los detalles de una situación. Si su objetivo es hacer más en menos líneas de código, a continuación, utilizando DOM extensión de las bibliotecas, como prototype y jQuery puede ser para usted. Yo personalmente creo que es mejor para comprender plenamente las capacidades del lenguaje JavaScript en sí mismo y en el DOM de la implementación de los navegadores y aprovecharlo para la tarea a mano, ya que el edificio de widgets de interfaz de usuario o lo que sea. Yo uso el script.aculo.biblioteca de estados unidos en ocasión de los efectos de animación por lo tanto, me encuentro a mí mismo la carga de la librería prototype código desde scriptaculous depende de ello. Mi sugerencia para cualquier persona que utilice cualquiera de las bibliotecas sería para aprender a escribir OO estilo JavaScript antes por completo en función de cualquiera de estas bibliotecas, a continuación, incorpore la que parece ser la que mejor se ajuste a sus necesidades. Excelente libro para el aprendizaje de estilo OO JavaScript es ‘Java Patrones de Diseño’.

    • Java != Javascript. ¿Por qué recomienda un Java libro para aprender acerca de Javascript?
    • me recomendó un libro para aprender el estilo OO Excellent book for learning OO style JavaScript is. Yo podría estar equivocado.
    • El OO modelos son muy diferentes. Clase basada vs Prototipo basado en la herencia.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea