¿Es jquery una biblioteca o marco de JavaScript? [cerrado]

121

Aquí, jquery se menciona en la categoría de marco: http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks

¿Es jquery una biblioteca o marco de JavaScript?

rahul dagli
fuente
40
La biblioteca de una persona es el marco de otra persona.
nnnnnn
1
Esto está fuera de tema aquí porque todas las respuestas son igualmente válidas: "¿Cuál es tu ______ favorito?" . Además, ¿qué importa si todo es una biblioteca o un framework?
EJoshuaS - Reincorporación a Monica

Respuestas:

169

Una biblioteca. Según la página de inicio , y con la que estoy de acuerdo.

Un framework es algo que generalmente fuerza una cierta forma de implementar una solución, mientras que jQuery es solo una herramienta para facilitar la implementación de lo que quieres hacer.

GregL
fuente
55
+1. Una biblioteca es algo que llamas desde tu programa. Un marco es algo que llama a su programa.
Thilo
1
Para comparar bibliotecas y marcos, consulte "Inversión de control" stackoverflow.com/a/3057818/2144912
cheshireoctopus
30

jQuery: la biblioteca JavaScript Write Less, Do More .

Dunhamzzz
fuente
14
Aunque estoy de acuerdo, un nombre / eslogan auto-dado no prueba nada. Hay miles de los llamados "marcos" que en realidad son bibliotecas.
kapex
@Kapep, pero el caso inverso es menos común: no muchos marcos se llaman a sí mismos "bibliotecas". Supongo que el término "marco" suena más atractivo para algunos ...
Franklin Yu
19

Por supuesto, es una biblioteca de JavaScript. Pero sobre ser un marco o no, creo que no es un marco. Eche un vistazo a la definición de wikipedia de software-framework :

Es una colección de bibliotecas de software que proporcionan una interfaz de programación de aplicaciones definida.

Y jQuery es solo una biblioteca. Después de eso dice:

Los marcos contienen características distintivas clave que los separan de las bibliotecas normales:

  1. inversión de control: en un marco, a diferencia de las bibliotecas o las aplicaciones de usuario normales, el flujo de control general del programa no lo dicta la persona que llama, sino el marco.

Entonces, creo que no es un marco.

Saeed
fuente
9

Según el sitio web de angularjs

  • una biblioteca: una colección de funciones que son útiles al escribir aplicaciones web. Su código está a cargo y llama a la biblioteca cuando
    lo considera oportuno. Por ejemplo, jQuery.
  • frameworks: una implementación particular de una aplicación web, donde su código completa los detalles. El marco está a cargo y llama a su código cuando necesita algo específico de la aplicación. Por ejemplo, durandal, brasa, etc.
Harke
fuente
5

Marco y biblioteca no son necesariamente términos mutuamente excluyentes. El marco suele ser una biblioteca o una colección de bibliotecas.

Estrictamente hablando, jQuery es una biblioteca, pero, hasta cierto punto, cumple con la definición de un marco de software. Aunque muchos argumentarían que jQuery no cumple con la definición de un marco de software lo suficientemente estrictamente, el hecho es que ningún otro marco de JavaScript cumple completamente con la definición de un marco tampoco.

Una de las características definitorias de un marco de software es que su código está protegido contra modificaciones. En JavaScript, claramente este no es el caso. Todas las bibliotecas o marcos que se pueden invocar en el código del lado del cliente son modificables, aunque alterarlos sería contrario a las mejores prácticas. Por lo tanto, si está permitido llamar a Bootstrap o AngularJS un marco, no hay ninguna razón por la que jQuery tampoco pueda llamarse marco. Este enlace contiene una explicación más detallada de cómo jQuery cumple con los criterios para ser llamado marco.

Quizás la mejor explicación de por qué jQuery es más un marco que una biblioteca es el hecho de que, como desarrollador, puede optar por no usar ninguna de sus funcionalidades similares a marcos. Puede, por ejemplo, mezclar una declaración jQuery simple con una declaración JavaScript estándar en la misma línea. AngularJS y Bootstrap normalmente no le permiten hacer esto. Por lo tanto, la respuesta precisa si jQuery es un marco o no es "depende de si elige usarlo como marco o no".

Fiodar Sazanavets
fuente
2

Estoy de acuerdo con todas las respuestas aquí en que jQuery en sí es de hecho una biblioteca, no un marco. Como especifica la respuesta de Saeed, una de las características distintivas clave es la inversión del control. Sin embargo, puede usar la funcionalidad de jQuery para crear su propio marco.

Ejemplos: hay proyectos construidos sobre jQuery que se definen como frameworks: jQuery Mobile: A Touch-Optimized Web Framework , JavaScriptMVC y sammy.js, por nombrar algunos.

También hay otras bibliotecas creadas sobre jQuery, como jQuery UI

Algo de eso parece semántica al definir qué es una biblioteca frente a un marco, pero esos ejemplos me ayudan a trazar la línea.

Durandal
fuente
1

Si hablamos de Inversión de control, del que casi todos en el hilo anterior hablan, entonces jQuery es un MARCO.

Tiene IOC, por ejemplo, cuando escribimos la función $ (documento) .ready {} ... es el contenedor el que llama a este método y simplemente ponemos nuestro código entre llaves. No somos los que llaman de este método y, por lo tanto, "Inversión de control"

De esta manera jQuery es un MARCO.

Pinkman
fuente
1
Meh, la mayoría de las bibliotecas importantes proporcionan al menos algún tipo de método vagamente similar a la devolución de llamada para algún propósito. Puede escribir una gran cantidad de código jQuery sin depender nunca de ready().
Nathan Tuggy
@NathanTuggy Entonces, ¿por qué incluso la discusión detallada sobre Framework vs Lib habla sobre el COI? Si está ahí, está ahí. Por qué hablar de "confiar" o "no confiar".
pinkman
Porque el IoC estilo framework se caracteriza por la necesidad de utilizarlo. No la posibilidad de usarlo, como se desee, de formas específicas, a la carta. En un marco, no tiene otra opción: el control está invertido.
Nathan Tuggy