jQuery Historio kaj Heredaĵo

jQuery Historio kaj Heredaĵo
jQuery - ĉi tiu estas la plej populara en la mondo JavaScript biblioteko. La retejo-disvolva komunumo kreis ĝin en la malfruaj 2000-aj jaroj, rezultigante riĉan ekosistemon de retejoj, kromaĵojn kaj kadrojn uzante jQuery sub la kapuĉo.

Sed en la lastaj jaroj, ĝia statuso kiel la ĉefa ilo por reto-disvolviĝo eroziis. Ni rigardu kial jQuery populariĝis kaj kial ĝi malmodiĝis, kaj ankaŭ en kiuj kazoj estas ankoraŭ rekomendinde uzi ĝin por krei modernajn retejojn.

Mallonga Historio de jQuery

John Resig (Johano Resig) kreis la unuan version de la biblioteko en 2005, kaj publikigita en 2006-m, ĉe evento nomita BarCampNYC. On jQuery oficiala retejo la aŭtoro skribis:

jQuery estas Javascript biblioteko bazita sur la devizo: Javascript devus esti amuza por kodigi. jQuery prenas oftajn, ripetemajn taskojn, forigas ĉiujn nenecesajn markojn kaj faras ilin mallongaj, elegantaj kaj puraj.

jQuery havas du ĉefajn avantaĝojn. La unua estas oportuna API por manipuli retpaĝojn. Aparte, ĝi provizas potencajn metodojn por elekti elementojn. Ne nur vi povas elekti per ID aŭ klaso, jQuery permesas vin skribi kompleksajn esprimojn, ekzemple, elekti elementojn surbaze de iliaj rilatoj kun aliaj elementoj:

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

Kun la tempo, la selektmekanismo iĝis aparta biblioteko sizzle.

La dua avantaĝo de la biblioteko estis ke ĝi abstraktis diferencojn inter retumiloj. En tiuj jaroj, estis malfacile skribi kodon kiu povis funkcii fidinde en ĉiuj retumiloj.

La manko de normigado signifis ke programistoj devis respondeci pri multaj diferencoj inter retumiloj kaj randkazoj. Rigardu ĉi tiu frua jQuery fontkodo kaj serĉu jQuery.browser. Jen unu ekzemplo:

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

Kaj danke al jQuery, programistoj povus ŝanĝi la zorgojn pri ĉiuj ĉi tiuj faŭltoj sur la ŝultrojn de la teamo disvolvanta la bibliotekon.

Poste, jQuery faciligis efektivigi pli kompleksajn teknologiojn kiel animacioj kaj Ajax. La biblioteko efektive fariĝis norma dependeco por retejoj. Kaj hodiaŭ ĝi funkciigas grandegan parton de la Interreto. W3Techs kredas tion 74% de retejoj hodiaŭ uzas jQuery.

Kontrolo super jQuery-disvolviĝo ankaŭ fariĝis pli formaligita. En 2011 la teamo kreis jQuery Board. Kaj en 2012 jQuery Board transformita en jQuery Foundation.

En 2015, la jQuery Foundation kunfalis kun la Doĵo-Fundamento, krei JS Foundation, kiu tiam kunfandita kun la Node.js Foundation en 2019-m krei Fondaĵo OpenJS, ene de kiu jQuery estis unu el la "trarompaj projektoj. "

Ŝanĝantaj cirkonstancoj

Tamen, en la lastaj jaroj jQuery perdis sian popularecon. GitHub forigis la bibliotekon de la fasado de mia retejo. Bootstrap v5 forigi jQueryĉar ĝi estas lia"plej granda klienta dependeco por regula JavaScript"(nuntempe 30 KB en grandeco, minimumigita kaj pakita). Pluraj tendencoj en retejo-disvolviĝo malfortigis la pozicion de jQuery kiel esenca ilo.

Foliumiloj

Pro kelkaj kialoj, retumilo-diferencoj kaj limigoj fariĝis malpli gravaj. Unue, normigado pliboniĝis. Gravaj programistoj de retumilo (Apple, Google, Microsoft kaj Mozilla) kunlaboras por disvolvi TTT-normoj kadre Laborgrupo pri Reteja Hiperteksta Aplika Teknologio.
Kvankam retumiloj ankoraŭ diferencas unu de la alia laŭ kelkaj gravaj manieroj, vendistoj almenaŭ havas rimedon por serĉi kaj krei komunan datumbazon anstataŭe de konstanta milito kune. Sekve, retumiloj API akiris novajn kapablojn. Ekz. Fetch API kapabla anstataŭigi Ajax-funkciojn de 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);
    });

Metodoj querySelector и querySelectorAll duplikataj jQuery-elektiloj:

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

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

Vi nun povas manipuli elementklasojn uzante klasa Listo:

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

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

En la retejo Vi eble ne bezonas jQuery Jen kelkaj pliaj situacioj, en kiuj jQuery-kodo povas esti anstataŭigita per denaska kodo. Iuj programistoj ĉiam restas kun jQuery ĉar ili simple ne scias pri la novaj APIoj, sed kiam ili faras, ili komencas uzi la bibliotekon malpli ofte.

Uzado de indiĝenaj funkcioj plibonigas paĝan rendimenton. Multaj kuraĝigaj efikoj de jQuery nun vi povas efektivigi multe pli efika uzante CSS.

La dua kialo estas, ke retumiloj estas ĝisdatigitaj multe pli rapide ol antaŭe. Plej multaj el ili uzas "ĉiamverda" renoviga strategio, kun la escepto de Apple Safari. Ili povas esti ĝisdatigitaj en la fono sen uzanta implikiĝo kaj ne estas ligitaj al OS-ĝisdatigoj.

Ĉi tio signifas, ke novaj retumiloj kaj korektoj de cimoj estas distribuitaj multe pli rapide, kaj programistoj ne devas atendi ĝis la Ĉu mi povas uzi? atingos akcepteblan nivelon. Ili povas memfide uzi novajn funkciojn kaj API-ojn sen elŝuti jQuery aŭ polyfills.

La tria kialo estas, ke Interreto Explorer alproksimiĝas al stato de kompleta sensignifeco. IE delonge estas la malbono de TTT-evoluo tra la mondo. Ĝiaj cimoj estis ĝeneraligitaj, kaj ĉar IE dominis la 2000-aj jarojn kaj ne uzis ĉiamverdan ĝisdatigstrategion, pli malnovaj versioj daŭre estas oftaj.

En 2016, Mikrosofto akcelis la malmendigon de IE, ĉesante subteni dekaj kaj pli fruaj versioj, limigitaj al subteno por IE 11. Kaj ĉiam pli, TTT-programistoj havas la lukson ignori IE-kongruon.

Eĉ jQuery ĉesis subteni IE 8 kaj sube ekde versio 2.0, publikigita en 2013. Kaj kvankam en iuj kazoj IE-subteno estas ankoraŭ postulata, ekzemple, en malnovaj retejoj, ĉi tiuj situacioj aperas malpli kaj malpli ofte.

Novaj kadroj

Ekde la apero de jQuery, multaj kadroj estis kreitaj, inkluzive de modernaj gvidantoj Reagi, angula и Vue. Ili havas du gravajn avantaĝojn super jQuery.

Unue, ili faciligas apartigi la uzantinterfacon en komponantojn. Kadroj estas dezajnitaj por trakti paĝan bildigon kaj ĝisdatigon. Kaj jQuery estas kutime uzata nur por ĝisdatigo, lasante la taskon provizi la komencan paĝon al la servilo.

Aliflanke, React, Angular kaj Vue-komponentoj permesas vin firme kunligi HTML, kodon kaj eĉ CSS. Same kiel ni dividas la kodan bazon en multajn memstarajn funkciojn kaj klasojn, la kapablo dividi la interfacon en reuzeblajn komponentojn faciligas konstrui kaj konservi kompleksajn retejojn.

La dua avantaĝo estas, ke pli lastatempaj kadroj aliĝas al deklara paradigmo, en kiu la programisto priskribas kiel la interfaco devus aspekti kaj lasas ĝin al la kadro fari ĉiujn necesajn ŝanĝojn por atingi tion, kio estas dezirata. Ĉi tiu aliro estas kontraŭa al la imperativa aliro kiu karakterizas jQuery-kodon.

En jQuery, vi eksplicite skribas la paŝojn por fari ajnajn ŝanĝojn. Kaj en deklara kadro vi diras, "Laŭ ĉi tiuj datumoj, la interfaco devus aspekti tiel." Ĉi tio povas multe pli facile skribi sen cim-kodon.

Programistoj adoptis novajn alirojn al retejo-disvolviĝo, tial la populareco de jQuery malpliiĝis.

Kiam uzi jQuery?

Do kiam devas esti uzi jQuery?

Se la komplekseco de la projekto pliiĝas, tiam estas pli bone komenci per alia biblioteko aŭ kadro, kiu ebligas al vi senchave administri kompleksecon. Ekzemple, dividu la interfacon en komponantojn. Uzado de jQuery en tiaj retejoj eble aspektas bone komence, sed ĝi rapide kondukos al spagetokodo kie vi ne certas, kiu fragmento influas kiun parton de la paĝo.

Mi estis en tia situacio, kiam mi provas fari ajnan ŝanĝon, ĝi sentas kiel malfacila tasko. Vi ne povas esti certa, ke vi ne rompos ion ĉar jQuery-elektiloj dependas de la HTML-strukturo generita de la servilo.

Ĉe la alia fino de la skalo estas simplaj retejoj, kiuj postulas nur iom da interagado aŭ dinamika enhavo. Mi ankaŭ ne defaŭltus jQuery en ĉi tiuj kazoj, ĉar estas multe pli, kion vi povas fari kun denaskaj APIoj.

Eĉ se mi bezonos ion pli potencan, mi serĉos fakan bibliotekon, ekz. aksioj por Ajaco aŭ Animate.css por kuraĝigoj. Ĉi tio estos pli facila ol ŝarĝi ĉiujn jQuery por malgranda funkcio.

Mi pensas, ke la plej bona kialo por uzi jQuery estas, ke ĝi provizas ampleksan funkciecon por la antaŭa fino de retejo. Anstataŭ lerni diversajn indiĝenajn API-ojn aŭ specialajn bibliotekojn, vi povas legi nur la dokumentaron de jQuery kaj fariĝi tuj produktiva.

La imperativa aliro ne bone skalas, sed ĝi estas pli facile lernebla ol la deklara aliro de aliaj bibliotekoj. Por retejo kun klare limigitaj kapabloj, estas pli bone uzi jQuery kaj labori trankvile: la biblioteko ne postulas kompleksan muntadon aŭ kompilon.

Aldone, jQuery estas bona se vi certas, ke via retejo ne komplikiĝos kun la tempo, kaj se vi ne zorgas pri denaska funkcieco, kio certe postulos skribi pli da kodo ol jQuery.

Vi ankaŭ povas uzi ĉi tiun bibliotekon se vi bezonas subteni pli malnovajn versiojn de IE. Tiam jQuery servos al vi kiel ĝi faris en la tagoj, kiam IE estis la plej populara retumilo.

Rigardu la estontecon

jQuery ne baldaŭ malaperos. Ŝi aktive evoluanta, kaj multaj programistoj preferas uzi ĝian API, eĉ se denaskaj metodoj estas disponeblaj. La biblioteko helpis tutan generacion de programistoj krei retejojn, kiuj funkcias per iu ajn retumilo. Kvankam ĝi estis multmaniere anstataŭigita per novaj bibliotekoj, kadroj kaj paradigmoj, jQuery ludis ege pozitivan rolon en la kreado de la moderna retejo.

Krom se la funkcieco de jQuery signife ŝanĝiĝas, verŝajne la uzado de la biblioteko daŭros malrapide sed konstante malpliiĝos dum la venontaj kelkaj jaroj. Novaj retejoj tendencas esti konstruitaj uzante pli modernajn kadrojn de la komenco, kaj taŭgaj uzkazoj por jQuery fariĝas ĉiam pli maloftaj.

Kelkaj homoj ne ŝatas la rapidecon kun kiu TTT-disvolvaj iloj malnoviĝas, sed al mi ĝi estas pruvo de rapida progreso. jQuery permesis al ni fari multajn aferojn pli bone. La sama estas vera por ŝiaj posteuloj.

fonto: www.habr.com

Aldoni komenton