Историја и наследство на jQuery

Историја и наследство на jQuery
jQuery - ова е најпопуларното во светот JavaScript библиотека. Веб-развојната заедница го создаде кон крајот на 2000-тите, што резултираше со богат екосистем од сајтови, приклучоци и рамки кои користат jQuery под капакот.

Но, во последниве години, нејзиниот статус како главна алатка за веб-развој е еродиран. Ајде да погледнеме зошто jQuery стана популарен и зошто испадна од мода, а исто така и во кои случаи сè уште е препорачливо да се користи за создавање модерни веб-страници.

Кратка историја на jQuery

Џон Ресиг (Johnон Ресиг) ја создаде првата верзија на библиотеката во 2005 година и објавена во 2006 година-m, на настан наречен BarCampNYC. На jQuery официјална веб-страница авторот напиша:

jQuery е Javascript библиотека базирана на мотото: Javascript треба да биде забавно за кодирање. jQuery презема вообичаени, повторувачки задачи, ги отстранува сите непотребни ознаки и ги прави кратки, елегантни и чисти.

jQuery има две главни предности. Првиот е удобен API за манипулирање со веб-страници. Особено, обезбедува моќни методи за избор на елементи. Не само што можете да изберете по ID или класа, jQuery ви овозможува да пишувате сложени изрази, на пример, да изберете елементи врз основа на нивните односи со други елементи:

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

Со текот на времето, механизмот за избор стана посебна библиотека Sizzle.

Втората предност на библиотеката беше тоа што ги апстрахираше разликите помеѓу прелистувачите. Во тие години, беше тешко да се напише код кој може да работи сигурно во сите прелистувачи.

Недостатокот на стандардизација значеше дека програмерите треба да ги земат предвид бројните разлики помеѓу прелистувачите и рабовите. Погледни овој ран изворен код на jQuery и побарајте jQuery.browser. Еве еден пример:

// 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);
}

И благодарение на jQuery, програмерите би можеле да ги префрлат грижите за сите овие стапици на рамениците на тимот што ја развива библиотеката.

Подоцна, jQuery го олесни имплементирањето на посложени технологии како што се анимациите и Ajax. Библиотеката ефективно стана стандардна зависност за веб-локациите. И денес напојува огромен дел од Интернетот. W3Techs верува во тоа 74% од сајтовите денес користат jQuery.

Контролата над развојот на jQuery, исто така, стана поформализирана. Во 2011 година тимот создадена jQuery Board. И во 2012 година jQuery Board трансформиран во jQuery Foundation.

Во 2015 година, Фондацијата jQuery се спои со Фондацијата Доџо, да се создаде JS Foundation, кој потоа се спои со Node.js Foundation во 2019-m да се создаде Фондација OpenJS, во чии рамки jQuery беше еден од „пробивни проекти. »

Промена на околностите

Сепак, во последниве години jQuery ја изгуби својата популарност. GitHub ја отстрани библиотеката од предниот дел на мојата страница. Bootstrap v5 ослободете се од jQueryзатоа што тоа е негово“најголема зависност од клиент за редовен JavaScript„(во моментов со големина од 30 KB, минимизирана и спакувана). Неколку трендови во веб-развојот ја ослабнаа позицијата на jQuery како суштинска алатка.

Браузеры

Поради повеќе причини, разликите и ограничувањата на прелистувачите станаа помалку важни. Прво, стандардизацијата е подобрена. Големите развивачи на прелистувачи (Apple, Google, Microsoft и Mozilla) работат заедно за да се развијат веб стандарди во рамките Работна група за технологија за веб хипертекст.
Иако прелистувачите сè уште се разликуваат еден од друг на голем број важни начини, продавачите барем имаат средства да пребаруваат и да создадат заедничка база на податоци наместо постојана војна заедно. Според тоа, API-те на прелистувачите добија нови можности. На пр. Преземи API способен да ги замени функциите на Ajax од jQuery:

// 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);
    });

Методи querySelector и querySelectorAll дупликат jQuery избирачи:

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

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

Сега можете да манипулирате со класи на елементи користејќи classList:

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

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

На сајтот Можеби нема да ви треба jQuery Еве уште неколку ситуации во кои jQuery кодот може да се замени со мајчин код. Некои програмери секогаш се држат до jQuery бидејќи едноставно не знаат за новите API, но кога знаат, почнуваат да ја користат библиотеката поретко.

Користењето на природните функции ги подобрува перформансите на страницата. Многумина анимациски ефекти од jQuery сега можете да имплементирате многу поефективен користејќи CSS.

Втората причина е што прелистувачите се ажурираат многу побрзо од порано. Повеќето од нив користат „зимзелена“ стратегија за обновување, со исклучок на Apple Safari. Тие можат да се ажурираат во заднина без учество на корисникот и не се поврзани со ажурирањата на ОС.

Ова значи дека новите функции на прелистувачот и поправките на грешки се дистрибуираат многу побрзо, а програмерите не мора да чекаат додека Може ли да користам ќе достигне прифатливо ниво. Тие можат самоуверено да користат нови функции и API без преземање jQuery или полифили.

Третата причина е тоа што Internet Explorer се приближува до состојба на целосна ирелевантност. IE одамна е зло за развој на веб ширум светот. Неговите грешки беа широко распространети и бидејќи IE доминираше во 2000-тите и не користеше стратегија за зимзелени ажурирања, постарите верзии сè уште се вообичаени.

Во 2016 година, Мајкрософт го забрза деактивирањето на IE, престанува да поддржува десеттата и претходните верзии, ограничувајќи ја поддршката на IE 11. И сè повеќе, веб-програмерите го имаат луксузот да ја игнорираат компатибилноста со IE.

Дури и jQuery престана да поддржува IE 8 и подолу почнувајќи од верзија 2.0, објавена во 2013 година. И иако во некои случаи сè уште е потребна поддршка за IE, на пример, на постари сајтови, овие ситуации се појавуваат сè поретко.

Нови рамки

Од појавата на jQuery, создадени се многу рамки, вклучително и модерни лидери Реагираат, аголна и Vue. Тие имаат две важни предности во однос на jQuery.

Прво, тие го олеснуваат одделувањето на корисничкиот интерфејс во компоненти. Рамките се дизајнирани да се справуваат со прикажување и ажурирање на страницата. И jQuery обично се користи само за ажурирање, оставајќи ја задачата да ја обезбеди почетната страница на серверот.

Од друга страна, компонентите React, Angular и Vue ви дозволуваат цврсто да ги споите HTML, кодот, па дури и CSS. Исто како што ја делиме базата на кодови на многу сопствени функции и класи, способноста да се подели интерфејсот на компоненти за повеќекратна употреба го олеснува градењето и одржувањето на сложени локации.

Втората предност е што поновите рамки се придржуваат до декларативната парадигма, во која развивачот опишува како треба да изгледа интерфејсот и остава на рамката да ги направи сите потребни промени за да го постигне посакуваното. Овој пристап е спротивен на императивниот пристап што го карактеризира jQuery кодот.

Во jQuery, вие експлицитно ги запишувате чекорите за да направите какви било промени. И во декларативна рамка велите: „Според овие податоци, интерфејсот треба да изгледа вака“. Ова може многу да го олесни пишувањето код без грешки.

Програмерите усвоија нови пристапи за развој на веб-страници, поради што популарноста на jQuery е намалена.

Кога да се користи jQuery?

Па кога мора да биде користи jQuery?

Ако се зголеми сложеноста на проектот, тогаш подобро е да започнете со друга библиотека или рамка што ви овозможува значајно да управувате со сложеноста. На пример, поделете го интерфејсот на компоненти. Користењето jQuery на такви страници на почетокот може да изгледа добро, но брзо ќе доведе до код за шпагети каде што не сте сигурни кој фрагмент влијае на кој дел од страницата.

Сум бил во таква ситуација, кога се обидувам да направам каква било промена се чувствувам како тешка задача. Не можете да бидете сигурни дека нема да скршите ништо бидејќи избирачите на jQuery зависат од структурата на HTML генерирана од серверот.

На другиот крај на скалата се едноставни сајтови за кои е потребна само малку интерактивност или динамична содржина. И во овие случаи не би поставил стандардно jQuery, бидејќи има многу повеќе што можете да направите со домашните API.

И да ми треба нешто помоќно, ќе барам специјализирана библиотека, на пр. аксиози за Ајакс или Animate.css за анимации. Ова ќе биде полесно отколку да го вчитате целиот jQuery за мала функционалност.

Мислам дека најдоброто образложение за користење на jQuery е тоа што обезбедува сеопфатна функционалност за предниот дел на веб-локацијата. Наместо да учите различни природни API или специјализирани библиотеки, можете да ја читате само документацијата за jQuery и да станете инстантно продуктивни.

Императивниот пристап не се размери добро, но е полесен за учење отколку декларативниот пристап на другите библиотеки. За локација со јасно ограничени можности, подобро е да се користи jQuery и да се работи мирно: библиотеката не бара сложено склопување или компилација.

Дополнително, jQuery е добар ако сте уверени дека вашиот сајт нема да стане комплициран со текот на времето и ако не се грижите за мајчин функционалност, што секако ќе бара пишување повеќе код од jQuery.

Можете исто така да ја користите оваа библиотека ако треба да поддржувате постари верзии на IE. Тогаш jQuery ќе ви служи како во времето кога IE беше најпопуларниот прелистувач.

Ветување

jQuery нема да исчезне наскоро. Таа активно се развива, и многу програмери претпочитаат да го користат неговото API, дури и ако се достапни природни методи. Библиотеката ѝ помогна на цела генерација програмери да креираат веб-страници што работат на кој било прелистувач. Иако на многу начини е заменет со нови библиотеки, рамки и парадигми, jQuery одигра огромна позитивна улога во создавањето на модерната веб-страница.

Освен ако функционалноста на jQuery не се промени значително, веројатно е дека користењето на библиотеката ќе продолжи полека, но постојано да опаѓа во текот на следните неколку години. Новите веб-локации имаат тенденција да се градат со користење на посовремени рамки од самиот почеток, а соодветните случаи за употреба за jQuery стануваат сè поретки.

Некои луѓе не ја сакаат брзината со која алатките за развој на веб застаруваат, но за мене тоа е доказ за брз напредок. jQuery ни овозможи да направиме многу работи подобро. Истото важи и за нејзините наследници.

Извор: www.habr.com

Додадете коментар