Ist jquery eine Javascript-Bibliothek oder ein Javascript-Framework? [geschlossen]

121

Hier wird jquery unter der Framework-Kategorie http://en.wikipedia.org/wiki/Comparison_of_JavaScript_frameworks erwähnt

Ist jquery eine Javascript-Bibliothek oder ein Javascript-Framework?

rahul dagli
quelle
40
Die Bibliothek einer Person ist das Framework einer anderen Person.
nnnnnn
1
Dies ist hier nicht zum Thema, da jede Antwort gleichermaßen gültig ist: "Was ist Ihr Favorit ______?" . Was macht es auch aus, wenn wir alle eine Bibliothek oder ein Framework haben?
EJoshuaS

Antworten:

169

Eine Bibliothek. Laut der Homepage , und der ich zustimme.

Ein Framework erzwingt normalerweise eine bestimmte Art der Implementierung einer Lösung, während jQuery nur ein Werkzeug ist, um die Implementierung der gewünschten Aufgaben zu vereinfachen.

GregL
quelle
55
+1. Eine Bibliothek rufen Sie aus Ihrem Programm auf. Ein Framework ruft in Ihr Programm auf.
Thilo
1
Für Bibliothek vs Rahmen Vergleich finden Sie unter „Inversion of Control“ stackoverflow.com/a/3057818/2144912
cheshireoctopus
30

jQuery: Die JavaScript- Bibliothek " Weniger schreiben, mehr tun" .

Dunhamzzz
quelle
14
Obwohl ich zustimme, beweist ein selbst gegebener Name / Slogan nichts. Es gibt Tausende von sogenannten "Frameworks", es gibt tatsächlich Bibliotheken.
Kapex
@Kapep, aber der umgekehrte Fall ist weniger verbreitet: Nicht viele Frameworks nennen sich "Bibliotheken". Ich denke, der Begriff "Framework" klingt für manche sexier ...
Franklin Yu
19

Sicher ist es eine Javascript-Bibliothek. Aber ob man ein Framework ist oder nicht, ich denke nur, dass es kein Framework ist. Schauen Sie sich die Wikipedia-Definition des Software-Frameworks an :

Es ist eine Sammlung von Softwarebibliotheken, die eine definierte Anwendungsprogrammierschnittstelle bereitstellen.

Und jQuery ist nur eine einzige Bibliothek. Danach heißt es:

Frameworks enthalten wichtige Unterscheidungsmerkmale, die sie von normalen Bibliotheken trennen:

  1. Umkehrung der Steuerung - In einem Framework wird im Gegensatz zu Bibliotheken oder normalen Benutzeranwendungen der Steuerungsfluss des gesamten Programms nicht vom Aufrufer, sondern vom Framework vorgegeben.

Ich denke, es ist kein Rahmen.

Saeed
quelle
9

Laut der AngularJS-Website

  • eine Bibliothek - eine Sammlung von Funktionen, die beim Schreiben von Web-Apps nützlich sind. Ihr Code ist verantwortlich und ruft die Bibliothek auf, wenn
    er dies für richtig hält. ZB jQuery.
  • Frameworks - eine bestimmte Implementierung einer Webanwendung, bei der Ihr Code die Details ausfüllt. Das Framework ist verantwortlich und ruft Ihren Code auf, wenn es etwas App-spezifisches benötigt. ZB Durandal, Glut usw.
Harke
quelle
5

Framework und Libarry schließen sich nicht unbedingt gegenseitig aus. Framework ist normalerweise eine Bibliothek oder eine Sammlung von Bibliotheken.

Genau genommen ist jQuery eine Bibliothek, die jedoch zum Teil der Definition eines Software-Frameworks entspricht. Obwohl viele argumentieren würden, dass jQuery die Definition eines Software-Frameworks nicht genau genug erfüllt, ist die Tatsache, dass auch kein anderes JavaScript-Framework die Definition eines Frameworks vollständig erfüllt.

Eines der bestimmenden Merkmale eines Software-Frameworks ist, dass sein Code vor Änderungen geschützt ist. In JavaScript ist dies eindeutig nicht der Fall. Alle Bibliotheken oder Frameworks, die in Ihren clientseitigen Code aufgerufen werden können, können geändert werden, obwohl es gegen bewährte Methoden verstößt, sie zu ändern. Wenn es also zulässig ist, Bootstrap oder AngularJS als Framework aufzurufen, gibt es keinen Grund, warum jQuery auch nicht als Framework bezeichnet werden kann. Dieser Link enthält eine detailliertere Erläuterung, wie jQuery die Kriterien erfüllt, die als Framework bezeichnet werden sollen.

Die vielleicht beste Erklärung dafür, warum jQuery eher ein Framework als eine Bibliothek ist, ist die Tatsache, dass Sie als Entwickler entscheiden können, keine seiner Framework-ähnlichen Funktionen zu verwenden. Sie können beispielsweise eine einfache jQuery-Anweisung mit einer Standard-JavaScript-Anweisung in derselben Zeile mischen. AngularJS und Bootstrap erlauben dies normalerweise nicht. Daher lautet die genaue Antwort, ob jQuery ein Framework ist oder nicht, "es hängt davon ab, ob Sie es als Framework verwenden oder nicht".

Fiodar Sazanavets
quelle
2

Ich stimme allen Antworten hier zu, dass jQuery selbst in der Tat eine Bibliothek ist, kein Framework. Wie in Saeeds Antwort angegeben, ist eines der wichtigsten Unterscheidungsmerkmale die Umkehrung der Kontrolle. Sie können jedoch die Funktionalität von jQuery verwenden, um ein eigenes Framework zu erstellen.

Beispiele: Es gibt Projekte, die auf jQuery basieren und als Frameworks definiert sind: jQuery Mobile: Ein berührungsoptimiertes Webframework , JavaScriptMVC und sammy.js, um nur einige zu nennen.

Es gibt auch andere Bibliotheken, die auf jQuery aufbauen, wie z. B. die jQuery-Benutzeroberfläche

Einiges davon scheint semantisch zu sein, wenn definiert wird, was eine Bibliothek im Vergleich zu einem Framework ist, aber diese Beispiele helfen mir, die Grenze zu ziehen.

Durandal
quelle
1

Wenn wir über die Umkehrung der Kontrolle sprechen, von der fast jeder im obigen Thread spricht, dann ist jQuery ein RAHMEN.

Es hat IOC, zB wenn wir die Funktion $ (document) .ready {} schreiben ... es ist der Container, der diese Methode aufruft und wir setzen unseren Code einfach in geschweifte Klammern. Wir sind nicht der Aufrufer dieser Methode und daher "Inversion of Control"

Auf diese Weise ist jQuery ein RAHMEN.

Pinkman
quelle
1
Meh, die meisten umfangreichen Bibliotheken bieten zumindest eine vage Callback-Methode für einen bestimmten Zweck. Sie können viel jQuery-Code schreiben, ohne sich jemals darauf verlassen zu müssen ready().
Nathan Tuggy
@ NathanTuggy Warum also auch die ausführliche Diskussion über Framework vs Lib über IOC spricht? Wenn es da ist, ist es da. Warum über "Verlassen" oder "Nicht Verlassen" sprechen?
Pinkman
Weil IoC im Framework-Stil durch die Notwendigkeit gekennzeichnet ist , es zu verwenden. Nicht die Möglichkeit, es wie gewünscht auf bestimmte Weise à la carte zu verwenden. In einem Framework haben Sie keine Wahl: Die Steuerung ist invertiert.
Nathan Tuggy