jQuery-Geschichte und Legacy

jQuery-Geschichte und Legacy
jQuery - Dies ist das beliebteste in der Welt eine JavaScript-Bibliothek. Die Webentwicklungs-Community hat es Ende der 2000er Jahre erstellt und daraus ein reichhaltiges Ökosystem aus Websites, Plugins und Frameworks mit jQuery unter der Haube geschaffen.

Doch in den letzten Jahren hat sein Status als führendes Tool für die Webentwicklung an Bedeutung verloren. Schauen wir uns an, warum jQuery populär wurde und warum es aus der Mode kam und in welchen Fällen es immer noch ratsam ist, es zum Erstellen moderner Websites zu verwenden.

Eine kurze Geschichte von jQuery

John Resig (Johannes Resig) erstellte 2005 die erste Version der Bibliothek und veröffentlicht im Jahr 2006-m, bei einer Veranstaltung namens BarCampNYC. An Offizielle jQuery-Website Der Autor schrieb:

jQuery ist eine Javascript-Bibliothek nach dem Motto: Javascript sollte Spaß machen, zu programmieren. jQuery übernimmt häufige, sich wiederholende Aufgaben, entfernt alle unnötigen Markups und macht sie kurz, elegant und sauber.

jQuery hat zwei Hauptvorteile. Die erste ist eine praktische API zum Bearbeiten von Webseiten. Insbesondere bietet es leistungsstarke Methoden zur Auswahl von Elementen. Sie können nicht nur nach ID oder Klasse auswählen, sondern mit jQuery können Sie auch komplexe Ausdrücke schreiben, um beispielsweise Elemente basierend auf ihren Beziehungen zu anderen Elementen auszuwählen:

// Select every item within the list of people within the contacts element
$('#contacts ul.people li');

Im Laufe der Zeit wurde der Auswahlmechanismus zu einer separaten Bibliothek Sizzle.

Der zweite Vorteil der Bibliothek bestand darin, dass sie Unterschiede zwischen Browsern abstrahierte. Damals war es schwierig, Code zu schreiben, der in allen Browsern zuverlässig funktionierte.

Aufgrund der fehlenden Standardisierung mussten Entwickler zahlreiche Unterschiede zwischen Browsern und Randfällen berücksichtigen. Schauen Sie mal rein dieser frühe jQuery-Quellcode und suchen Sie nach jQuery.browser. Hier ist ein Beispiel:

// If Mozilla is used
if ( jQuery.browser == "mozilla" || jQuery.browser == "opera" ) {
        // Use the handy event callback
        jQuery.event.add( document, "DOMContentLoaded", jQuery.ready );

// If IE is used, use the excellent hack by Matthias Miller
// http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited
} else if ( jQuery.browser == "msie" ) {

        // Only works if you document.write() it
        document.write("<scr" + "ipt id=__ie_init defer=true " + 
                "src=javascript:void(0)></script>");

        // Use the defer script hack
        var script = document.getElementById("__ie_init");
        script.onreadystatechange = function() {
                if ( this.readyState == "complete" )
                        jQuery.ready();
        };

        // Clear from memory
        script = null;

// If Safari  is used
} else if ( jQuery.browser == "safari" ) {
        // Continually check to see if the document.readyState is valid
        jQuery.safariTimer = setInterval(function(){
                // loaded and complete are both valid states
                if ( document.readyState == "loaded" || 
                        document.readyState == "complete" ) {

                        // If either one are found, remove the timer
                        clearInterval( jQuery.safariTimer );
                        jQuery.safariTimer = null;

                        // and execute any waiting functions
                        jQuery.ready();
                }
        }, 10);
}

Und dank jQuery könnten Entwickler die Sorgen über all diese Fallstricke auf die Schultern des Teams abwälzen, das die Bibliothek entwickelt.

Später erleichterte jQuery die Implementierung komplexerer Technologien wie Animationen und Ajax. Die Bibliothek ist praktisch zu einer Standardabhängigkeit für Websites geworden. Und heute betreibt es einen großen Teil des Internets. W3Techs glaubt das 74 % der Websites verwenden heute jQuery.

Auch die Kontrolle über die jQuery-Entwicklung wurde stärker formalisiert. Im Jahr 2011 das Team jQuery Board erstellt. Und im Jahr 2012 jQuery Board in jQuery Foundation umgewandelt.

Im Jahr 2015 fusionierte die jQuery Foundation mit der Dojo Foundation. um die JS Foundation zu erstellen, die dann mit der Node.js Foundation fusionierte 2019-m zu erstellen OpenJS-Stiftung, innerhalb dessen jQuery einer der „bahnbrechende Projekte. "

Sich ändernde Umstände

Allerdings ist in den letzten Jahren jQuery verlor an Popularität. GitHub Die Bibliothek wurde aus dem Frontend meiner Website entfernt. Bootstrap v5 Werde jQuery losweil es seins ist“größte Client-Abhängigkeit für reguläres JavaScript"(derzeit 30 KB groß, minimiert und gepackt). Mehrere Trends in der Webentwicklung haben die Position von jQuery als unverzichtbares Werkzeug geschwächt.

Browser

Aus mehreren Gründen haben Browserunterschiede und -beschränkungen an Bedeutung verloren. Erstens hat sich die Standardisierung verbessert. Große Browser-Entwickler (Apple, Google, Microsoft und Mozilla) arbeiten bei der Entwicklung zusammen Webstandards im Rahmen der Arbeitsgruppe für Web-Hypertext-Anwendungstechnologie.
Auch wenn sich Browser immer noch in vielen wichtigen Punkten voneinander unterscheiden, verfügen Anbieter zumindest über die Möglichkeit, eine gemeinsame Datenbank zu durchsuchen und zu erstellen permanenter Krieg zusammen. Dementsprechend haben Browser-APIs neue Fähigkeiten erhalten. Z.B, Fetch API Kann Ajax-Funktionen aus jQuery ersetzen:

// jQuery
$.getJSON('https://api.com/songs.json')
    .done(function (songs) {
        console.log(songs);
    })

// native
fetch('https://api.com/songs.json')
    .then(function (response) {
        return response.json();
    })
    .then(function (songs) {
        console.log(songs);
    });

Methoden querySelector и querySelectorAll Duplikate jQuery-Picker:

// jQuery
const fooDivs = $('.foo div');

// native
const fooDivs = document.querySelectorAll('.foo div');

Sie können jetzt Elementklassen mit manipulieren Klassenliste:

// jQuery
$('#warning').toggleClass('visible');

// native
document.querySelector('#warning').classList.toggle('visible');

Der Standort Möglicherweise benötigen Sie jQuery nicht Hier sind einige weitere Situationen, in denen jQuery-Code durch nativen Code ersetzt werden kann. Manche Entwickler bleiben immer bei jQuery, weil sie einfach nichts über die neuen APIs wissen, aber wenn sie es wissen, nutzen sie die Bibliothek seltener.

Die Verwendung nativer Funktionen verbessert die Seitenleistung. Viele Animationseffekte von jQuery Jetzt können Sie es umsetzen viel effektiver mit CSS.

Der zweite Grund ist, dass Browser viel schneller aktualisiert werden als zuvor. Die meisten von ihnen verwenden „immergrüne“ Erneuerungsstrategie, mit Ausnahme von Apple Safari. Sie können im Hintergrund ohne Benutzereingriff aktualisiert werden und sind nicht an Betriebssystem-Updates gebunden.

Dies bedeutet, dass neue Browserfunktionen und Fehlerbehebungen viel schneller verteilt werden und Entwickler nicht warten müssen, bis sie verfügbar sind Kann ich benutzen ein akzeptables Niveau erreichen wird. Sie können neue Funktionen und APIs sicher nutzen, ohne jQuery oder Polyfills herunterladen zu müssen.

Der dritte Grund ist, dass sich der Internet Explorer einem Zustand völliger Bedeutungslosigkeit nähert. IE ist seit langem der Fluch der Webentwicklung auf der ganzen Welt. Seine Fehler waren weit verbreitet, und da der IE in den 2000er-Jahren dominierte und keine immergrüne Update-Strategie nutzte, sind ältere Versionen immer noch weit verbreitet.

Im Jahr 2016 beschleunigte Microsoft die Stilllegung des IE. aufhören zu unterstützen zehnte und frühere Versionen, beschränkt auf die Unterstützung für IE 11. Und zunehmend haben Webentwickler den Luxus, die IE-Kompatibilität zu ignorieren.

Seitdem unterstützt sogar jQuery IE 8 und niedriger nicht mehr Version 2.0, veröffentlicht im Jahr 2013. Und obwohl in einigen Fällen immer noch IE-Unterstützung erforderlich ist, beispielsweise auf älteren Websites, treten diese Situationen immer seltener auf.

Neue Frameworks

Seit dem Aufkommen von jQuery wurden viele Frameworks erstellt, darunter auch moderne Leader Reagieren, Angular и Vue. Sie haben zwei wichtige Vorteile gegenüber jQuery.

Erstens erleichtern sie die Aufteilung der Benutzeroberfläche in Komponenten. Frameworks sind für das Rendern und Aktualisieren von Seiten konzipiert. Und jQuery wird normalerweise nur zum Aktualisieren verwendet, sodass die Aufgabe, dem Server die erste Seite bereitzustellen, überlassen bleibt.

Andererseits ermöglichen Ihnen React-, Angular- und Vue-Komponenten die enge Verknüpfung von HTML, Code und sogar CSS. So wie wir die Codebasis in viele eigenständige Funktionen und Klassen unterteilen, erleichtert die Möglichkeit, die Schnittstelle in wiederverwendbare Komponenten zu unterteilen, die Erstellung und Wartung komplexer Websites.

Der zweite Vorteil besteht darin, dass neuere Frameworks einem deklarativen Paradigma folgen, bei dem der Entwickler beschreibt, wie die Schnittstelle aussehen soll, und es dem Framework überlässt, alle notwendigen Änderungen vorzunehmen, um das Gewünschte zu erreichen. Dieser Ansatz steht im Widerspruch zum imperativen Ansatz, der den jQuery-Code kennzeichnet.

In jQuery schreiben Sie explizit die Schritte auf, um Änderungen vorzunehmen. Und in einem deklarativen Framework sagen Sie: „Diesen Daten zufolge sollte die Schnittstelle so aussehen.“ Dies kann das Schreiben von fehlerfreiem Code erheblich erleichtern.

Entwickler haben neue Ansätze bei der Website-Entwicklung übernommen, weshalb die Popularität von jQuery abgenommen hat.

Wann sollte jQuery verwendet werden?

Also wann sollte jQuery verwenden?

Wenn die Komplexität des Projekts zunimmt, ist es besser, mit einer anderen Bibliothek oder einem anderen Framework zu beginnen, mit dem Sie die Komplexität sinnvoll verwalten können. Teilen Sie beispielsweise die Schnittstelle in Komponenten auf. Die Verwendung von jQuery auf solchen Websites mag auf den ersten Blick gut aussehen, führt jedoch schnell zu Spaghetti-Code, bei dem Sie nicht sicher sind, welches Fragment welchen Teil der Seite beeinflusst.

Ich war schon einmal in einer solchen Situation: Wenn ich versuche, etwas zu ändern, kommt es mir wie eine schwierige Aufgabe vor. Sie können nicht sicher sein, dass Sie nichts beschädigen, da jQuery-Selektoren von der vom Server generierten HTML-Struktur abhängen.

Am anderen Ende der Skala befinden sich einfache Websites, die nur ein wenig Interaktivität oder dynamischen Inhalt erfordern. Ich würde in diesen Fällen auch nicht standardmäßig auf jQuery zurückgreifen, da Sie mit nativen APIs noch viel mehr tun können.

Selbst wenn ich etwas Leistungsstärkeres benötige, werde ich nach einer spezialisierten Bibliothek suchen, z. B. Axios für Ajax oder Animate.css für Animationen. Dies ist einfacher, als für eine kleine Funktionalität die gesamte jQuery zu laden.

Ich denke, der beste Grund für die Verwendung von jQuery ist, dass es umfassende Funktionalität für das Frontend einer Website bietet. Anstatt eine Vielzahl nativer APIs oder spezialisierter Bibliotheken zu erlernen, können Sie einfach die jQuery-Dokumentation lesen und sofort produktiv werden.

Der imperative Ansatz lässt sich nicht gut skalieren, ist aber leichter zu erlernen als der deklarative Ansatz anderer Bibliotheken. Für eine Site mit deutlich eingeschränkten Funktionen ist es besser, jQuery zu verwenden und ruhig zu arbeiten: Die Bibliothek erfordert keine komplexe Assemblierung oder Kompilierung.

Darüber hinaus ist jQuery gut, wenn Sie sicher sind, dass Ihre Website mit der Zeit nicht kompliziert wird, und wenn Ihnen die native Funktionalität egal ist, für die Sie sicherlich mehr Code schreiben müssen als für jQuery.

Sie können diese Bibliothek auch verwenden, wenn Sie ältere Versionen des IE unterstützen müssen. Dann wird Ihnen jQuery genauso dienen wie damals, als der IE der beliebteste Browser war.

Prospektion

jQuery wird so schnell nicht verschwinden. Sie aktiv weiterentwickeln, und viele Entwickler bevorzugen die Verwendung seiner API, auch wenn native Methoden verfügbar sind. Die Bibliothek hat einer ganzen Generation von Entwicklern dabei geholfen, Websites zu erstellen, die in jedem Browser funktionieren. Obwohl jQuery in vielerlei Hinsicht durch neue Bibliotheken, Frameworks und Paradigmen ersetzt wurde, hat es eine äußerst positive Rolle bei der Schaffung des modernen Webs gespielt.

Sofern sich die Funktionalität von jQuery nicht wesentlich ändert, ist es wahrscheinlich, dass die Nutzung der Bibliothek in den nächsten Jahren langsam, aber stetig zurückgehen wird. Neue Websites werden tendenziell von Anfang an mit moderneren Frameworks erstellt und geeignete Anwendungsfälle für jQuery werden immer seltener.

Manche Leute mögen die Geschwindigkeit, mit der Webentwicklungstools veraltet sind, nicht, aber für mich ist es ein Beweis für schnellen Fortschritt. jQuery hat es uns ermöglicht, viele Dinge besser zu machen. Dasselbe gilt auch für ihre Nachfolger.

Source: habr.com

Kommentar hinzufügen