Гісторыя і спадчына jQuery

Гісторыя і спадчына jQuery
jQuery - гэта самая папулярная у свеце JavaScript-бібліятэка. Супольнасць вэб-распрацоўнікаў стварыла яе ў канцы 2000-х, што прывяло да ўзнікнення багатай экасістэмы сайтаў, убудоў і фрэймворкаў, якія выкарыстоўваюць пад капотам jQuery.

Але ў апошнія гады яе статут галоўнай прылады для вэба-распрацоўкі пахіснуўся. Давайце паглядзім, чаму jQuery стала папулярнай і чаму яна выйшла з моды, а таксама ў якіх выпадках яе пакуль яшчэ мэтазгодна выкарыстоўваць для стварэння сучасных сайтаў.

Кароткая гісторыя jQuery

Джон Рэзіг (John Resig) стварыў першую версію бібліятэкі ў 2005-м, а апублікаваў у 2006-м, на мерапрыемстве пад назвай 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');

З часам механізм выбару ператварыўся ў асобную бібліятэку. Пыхнуць.

Другой добрай якасцю бібліятэкі было тое, што яна абстрагавала адрозненні паміж браўзэрамі. У тыя гады было складана пісаць код, здольны надзейна працаваць ва ўсіх браўзэрах.

Адсутнасць стандартызацыі азначала, што распрацоўнікам трэба ўлічваць шматлікія адрозненні паміж браўзэрамі і памежныя выпадкі. Зірніце на гэты ранні зыходны код 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 Foundation уліўся ў Dojo Foundation, каб стварыць JS Foundation, які затым аб'яднаўся з Node.js Foundation у 2019-м для стварэння Фонд OpenJS, у рамках якога jQuery была адным зпрабіўных праектаў».

Якія змяняюцца абставіны

Аднак у апошнія гады jQuery падрасцела сваю папулярнасць. GitHub прыбраў бібліятэку з франтэнда свайго сайта. Bootstrap v5 пазбавіцца ад jQuery, таму што гэта яго «найбуйнейшая кліенцкая залежнасць для звычайнага JavaScript(на дадзены момант памерам 30 Кб, мініфікаваная і запакаваная). Некалькі тэндэнцый у вэб-распрацоўцы прыслабілі пазіцыю jQuery як неабходнай прылады.

Браўзэры

Па шэрагу чыннікаў, адрозненні і абмежаванні браўзэраў сталі меней важныя. Па-першае, палепшылася стандартызацыя. Асноўныя распрацоўшчыкі браўзэраў (Apple, Google, Microsoft і Mozilla) сумесна распрацоўваюць вэб-стандарты у рамках Web Hypertext Application Technology Working Group.
Хоць браўзэры яшчэ адрозніваюцца сябар ад сябра ў шэрагу важных момантаў, у вендараў хоць бы ёсць сродак для пошуку і стварэнні агульнай базы замест перманентнай вайны адзін з адным. Адпаведна, 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');

На сайце You Might Not Need jQuery пералічана яшчэ некалькі сітуацый, у якіх код jQuery можна замяніць натыўным кодам. Некаторыя распрацоўшчыкі заўсёды прытрымліваюцца jQuery, таму што проста не ведаюць аб новых API, але калі даведаюцца, пачынаюць радзей выкарыстоўваць гэтую бібліятэку.

Выкарыстанне натыўных магчымасцей дазваляе павысіць прадукцыйнасць старонак. Многія эфекты анімацыі з jQuery зараз можна рэалізаваць значна больш эфектыўна з дапамогай CSS.

Другая прычына заключаецца ў тым, што браўзэры абнаўляюцца значна хутчэй, чым раней. У большасці з іх прымяняецца "вечназялёная" стратэгія абнаўлення, за выключэннем Apple Safari. Яны могуць абнаўляцца ў фонавым рэжыме без прыцягнення карыстальніка і не прывязаны да абнаўленняў АС.

Гэта азначае, што новыя магчымасці браўзэраў і выпраўленні багаў распаўсюджваюцца значна хутчэй, і распрацоўнікам не трэба чакаць, пакуль дзель Ці магу я выкарыстаць дасягне прымальнага ўзроўню. Яны могуць упэўнена выкарыстоўваць новыя фічы і API без загрузкі jQuery ці паліфілаў.

Трэці чыннік складаецца ў тым, што Internet Explorer набліжаецца да стану поўнай неактуальнасці. IE ўжо даўно з'яўляецца бізуном вэб-распрацоўкі ва ўсім свеце. Характэрныя для яго багі былі шырока распаўсюджаныя, а паколькі IE дамінаваў у 2000-х і не выкарыстоўваў «вечназялёную» стратэгію абнаўлення, да гэтага часу часта сустракаюцца яго старыя версіі.

У 2016-м Microsoft паскорыла выснову IE з эксплуатацыі, спыніўшы падтрымліваць дзясятую і больш раннія версіі, абмежаваўшыся падтрымкай IE 11. І ўсё часцей вэб-распрацоўшчыкі могуць дазволіць сабе раскоша ігнаравання сумяшчальнасці з IE.

Нават jQuery перастаў падтрымліваць IE 8 і ніжэй пачынаючы з версіі 2.0, якая выйшла ў 2013-м. І хоць у некаторых выпадках яшчэ патрабуецца падтрымка IE, напрыклад, на старых сайтах, аднак гэтыя сітуацыі ўзнікаюць усё радзей.

Новыя фрэймворкі

З моманту з'яўлення jQuery было створана мноства фрэймворкаў, у тым ліку сучасныя лідэры. Рэагаваць, вуглаваты и Ую. У іх ёсць дзве важныя перавагі перад jQuery.

Па-першае, яны дазваляюць лёгка падзяляць карыстацкі інтэрфейс на кампаненты. Фрэймворкі спраектаваны так, каб апрацоўваць адмалёўку і абнаўленне старонкі. А jQuery звычайна выкарыстоўваецца толькі для абнаўлення, ускладаючы на ​​сервер задачу падавання пачатковай старонкі.

З іншага боку, кампаненты React, Angular і Vue дазваляюць цесна звязаць HTML, код і нават CSS. Як мы падзяляем кодавую базу на шмат самадастатковых функцый і класаў, так і магчымасць падзяліць інтэрфейс на паўторна выкарыстоўваныя кампаненты спрашчае зборку і суправаджэнне складаных сайтаў.

Другой перавагай з'яўляецца тое, што больш свежыя фрэймворкі прытрымліваюцца дэкларатыўнай парадыгмы, у рамках якой распрацоўшчык апісвае, як павінен выглядаць інтэрфейс, а выкананне ўсіх неабходных змен для дасягнення жаданага ўскладае на фрэймворк. Гэты падыход супярэчыць імператыўнаму падыходу, характэрнаму для jQuery-кода.

У jQuery вы відавочна прапісваеце крокі для здзяйснення якіх-небудзь змен. А ў дэкларатыўным фрэймворку вы кажаце: «Згодна з гэтымі данымі, інтэрфейс павінен выглядаць так». Гэта можа моцна палегчыць напісанне кода без багаў.

Распрацоўнікі прынялі на ўзбраенне новыя падыходы да распрацоўкі сайтаў, з-за чаго папулярнасць jQuery панізілася.

Калі выкарыстоўваць jQuery?

Дык калі ж варта выкарыстоўваць jQuery?

Калі складанасць праекта будзе расці, то лепш пачаць з іншай бібліятэкай ці фрэймворкам, які дазваляе асэнсавана кіраваць складанасцю. Напрыклад, падзяляць інтэрфейс на кампаненты. Выкарыстанне jQuery у такіх сайтах на першую пару можа выглядаць прымальна, але гэта хутка прывядзе да ўзнікнення спагецці-кода, калі вы не будзеце ўпэўненыя ў тым, які фрагмент на якую частку старонкі ўплывае.

Я бываў у такой сітуацыі, пры спробе зрабіць любую змену ўзнікае адчуванне цяжкай задачы. Нельга быць упэўненым у тым, што нічога не зламаеш, таму што селектары jQuery залежаць ад структуры HTML, створанай серверам.

На іншым канцы шкалы знаходзяцца простыя сайты, якім патрабуецца толькі крыху інтэрактыўнасці або дынамічнага кантэнту. У такіх выпадках я таксама не стаў бы па змаўчанні выкарыстоўваць jQuery, бо з натыўнымі API можна зрабіць значна больш.

Нават калі мне спатрэбіцца нешта больш магутнае, я пашукаю спецыялізаваную бібліятэку, напрыклад, аксіёс для Ajax або Animate.css для анімацый. Гэта будзе прасцей, чым загружаць усю jQuery дзеля невялікай функцыянальнасці.

Думаю, лепшым абгрунтаваннем выкарыстання jQuery будзе тое, што яна дае ўсёабдымную функцыянальнасць для працы франтэнда сайта. Замест таго каб вывучаць разнастайныя натыўныя API ці спецыялізаваныя бібліятэкі, вы можаце прачытаць толькі дакументацыю jQuery, і адразу станеце прадуктыўныя.

Імператыўны падыход дрэнна маштабуецца, але яго асвоіць прасцей, чым дэкларатыўны падыход іншых бібліятэк. Для сайта з відавочна абмежаванымі магчымасцямі лепш ужыць jQuery і спакойна працаваць: бібліятэка не патрабуе складанай зборкі ці кампіляцыі.

Акрамя таго, jQuery добрая ў тых выпадках, калі вы ўпэўненыя, што сайт не будзе з часам ускладняцца, і калі вас не хвалюе натыўная функцыянальнасць, якая, безумоўна, запатрабуе напісанні больш кода, чым jQuery.

Таксама вы можаце прымяняць гэтую бібліятэку, калі трэба падтрымліваць старыя версіі IE. Тады jQuery будзе служыць вам як у тыя часы, калі IE быў самым папулярным браўзэрам.

Погляд у будучыню

jQuery знікне яшчэ не хутка. Яна актыўна развіваецца, і многія распрацоўшчыкі аддаюць перавагу выкарыстоўваць яе API, нават пры даступнасці натыўных метадаў. Бібліятэка дапамагла цэламу пакаленню распрацоўшчыкаў ствараць сайты, якія працуюць на любых браўзэрах. І хоць у шматлікіх аспектах яе замянілі новыя бібліятэкі, фрэймворкі і парадыгмы, jQuery адыграла велізарную дадатную ролю ў стварэнні сучаснага вэба.

Калі функцыянальнасць jQuery істотна не зменіцца, цалкам верагодна, што ў найблізкія некалькі гадоў выкарыстанне бібліятэкі будзе працягваць павольна, але няўхільна змяншацца. Новыя вэб-сайты, як правіла, з самага пачатку ствараюцца з выкарыстаннем больш сучасных фрэймворкаў, і прыдатныя сцэнары выкарыстання jQuery узнікаюць усё радзей.

Камусьці не падабаецца інтэнсіўнасць састарэння інструментаў для вэба-распрацоўкі, але для мяне гэта сведчанне хуткага прагрэсу. jQuery дазволіла нам шмат рабіць лепш. Тое ж самае дакладна і для яе пераемнікаў.

Крыніца: habr.com

Дадаць каментар