jQuery Istwa ak Legacy

jQuery Istwa ak Legacy
jQuery - sa a se pi popilè a nan mond lan yon bibliyotèk JavaScript. Kominote devlopman entènèt la te kreye li nan fen ane 2000 yo, sa ki lakòz yon ekosistèm rich nan sit, grefon, ak kad lè l sèvi avèk jQuery anba kapo a.

Men, nan dènye ane yo, estati li kòm premye zouti pou devlopman entènèt te erode. Ann gade poukisa jQuery te vin popilè ak poukisa li te tonbe nan mòd, epi tou nan ki ka li toujou rekòmande pou sèvi ak li yo kreye sit entènèt modèn.

Yon istwa brèf nan jQuery

John Resig (Jan Resig) te kreye premye vèsyon bibliyotèk la an 2005, epi pibliye an 2006-m, nan yon evènman ki rele BarCampNYC. Sou Sit entènèt ofisyèl jQuery otè a te ekri:

jQuery se yon bibliyotèk Javascript ki baze sou deviz: Javascript ta dwe amizan pou kode. jQuery pran travay komen, repetitif, retire tout mak ki pa nesesè yo, epi fè yo kout, elegant, ak pwòp.

jQuery gen de avantaj prensipal. Premye a se yon API pratik pou manipile paj wèb. An patikilye, li bay metòd pwisan pou chwazi eleman. Non sèlman ou ka chwazi pa ID oswa klas, jQuery pèmèt ou ekri ekspresyon konplèks, pou egzanp, chwazi eleman ki baze sou relasyon yo ak lòt eleman:

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

Apre yon sèten tan, mekanis seleksyon an te vin tounen yon bibliyotèk separe Sizzle.

Dezyèm avantaj bibliyotèk la se te ke li abstrè diferans ki genyen ant navigatè yo. Nan ane sa yo, li te difisil pou ekri kòd ki te kapab travay fiable nan tout navigateurs.

Mank normalisation te vle di ke devlopè yo te bezwen pou kont pou anpil diferans ant navigatè ak ka kwen. Pran yon gade nan kòd sous jQuery bonè sa a epi chèche jQuery.browser. Men yon egzanp:

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

Ak gras a jQuery, devlopè yo te kapab deplase enkyetid yo sou tout enkonvenyans sa yo sou zepòl yo nan ekip la devlope bibliyotèk la.

Apre sa, jQuery te fè li pi fasil pou aplike teknoloji pi konplèks tankou animasyon ak Ajax. Bibliyotèk la te vin efektivman yon depandans estanda pou sit entènèt. Ak jodi a li pouvwa yon gwo pati nan entènèt la. W3Techs kwè sa 74% nan sit jodi a itilize jQuery.

Kontwòl sou devlopman jQuery te vin pi ofisyèlman tou. Nan 2011 ekip la kreye jQuery Board. Ak nan 2012 jQuery Board transfòme nan Fondasyon jQuery.

An 2015, Fondasyon jQuery te rantre ak Fondasyon Dojo, pou kreye Fondasyon JS, ki Lè sa a, fizyone ak Fondasyon an Node.js nan 2019-m pou kreye Fondasyon OpenJS, nan ki jQuery se te youn nan "pwojè avansman. »

Chanje sikonstans

Sepandan, nan dènye ane yo jQuery pèdi popilarite li. GitHub retire bibliyotèk la nan entèfas sit mwen an. Bootstrap v5 debarase m de jQuerypaske se li"pi gwo depandans kliyan pou JavaScript regilye"(Kounye a 30 KB nan gwosè, minified ak chaje). Plizyè tandans nan devlopman entènèt te febli pozisyon jQuery a kòm yon zouti esansyèl.

Navigatè

Pou yon kantite rezon, diferans navigatè ak limit yo te vin mwens enpòtan. Premyèman, normalisation te amelyore. Gwo devlopè navigatè (Apple, Google, Microsoft ak Mozilla) ap travay ansanm pou devlope estanda entènèt nan kad la Web Hypertext Aplikasyon Teknoloji Gwoup Travay.
Malgre ke navigatè toujou diferan youn ak lòt nan yon kantite fason enpòtan, machann yo omwen gen yon mwayen pou fè rechèch ak kreye yon baz done komen olye pou yo. lagè pèmanan ansanm. An konsekans, API navigatè yo te genyen nouvo kapasite. Pa egzanp, Chèche API kapab ranplase fonksyon Ajax soti nan 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);
    });

Metòd querySelector и querySelectorAll kopi seleksyon jQuery:

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

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

Ou kapab kounye a manipile klas eleman lè l sèvi avèk classList:

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

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

Sou sit la Ou ta ka pa bezwen jQuery Men kèk lòt sitiyasyon kote kòd jQuery ka ranplase ak kòd natif natal. Gen kèk devlopè toujou rete ak jQuery paske yo tou senpleman pa konnen sou nouvo API yo, men lè yo fè sa, yo kòmanse itilize bibliyotèk la mwens souvan.

Sèvi ak karakteristik natif natal amelyore pèfòmans paj la. Anpil efè animasyon soti nan jQuery kounye a ou ka aplike pi efikas lè l sèvi avèk CSS.

Dezyèm rezon an se ke navigatè yo mete ajou anpil pi vit pase anvan. Pifò nan yo itilize estrateji renouvèlman "evergreen"., ak eksepsyon de Apple Safari. Yo ka mete ajou nan background nan san yo pa patisipe nan itilizatè epi yo pa mare ak dènye OS yo.

Sa vle di ke nouvo karakteristik navigatè ak korije ensèk yo distribye pi vit, ak devlopè yo pa oblije rete tann jiskaske yo Èske mwen ka itilize pral rive nan yon nivo akseptab. Yo ka sèvi ak nouvo karakteristik ak API avèk konfyans san yo pa telechaje jQuery oswa polyfills.

Twazyèm rezon an se ke Internet Explorer ap apwoche yon eta de total non pertinence. IE depi lontan te malè devlopman entènèt atravè mond lan. Pinèz li yo te gaye toupatou, epi paske IE te domine ane 2000 yo epi li pa t 'sèvi ak yon estrateji aktyalizasyon Evergreen, ansyen vèsyon yo toujou komen.

Nan 2016, Microsoft akselere dekomisyon an nan IE, sispann sipòte dizyèm ak vèsyon pi bonè, limite sipò nan IE 11. Ak de pli zan pli, devlopè entènèt gen liks nan inyore konpatibilite IE.

Menm jQuery sispann sipòte IE 8 ak pi ba a kòmanse nan vèsyon 2.0, pibliye an 2013. Ak byenke nan kèk ka sipò IE toujou nesesè, pou egzanp, sou sit ki pi gran, sitiyasyon sa yo rive pi piti ak mwens souvan.

Nouvo kad

Depi avènement de jQuery, anpil kad yo te kreye, ki gen ladan lidè modèn Reyaji, Angilè и Vue. Yo gen de avantaj enpòtan sou jQuery.

Premyèman, yo fè li fasil separe koòdone itilizatè a an eleman. Kad yo fèt pou okipe rann paj ak ajou. Ak jQuery anjeneral itilize sèlman pou mete ajou, kite travay la nan bay paj inisyal la nan sèvè a.

Nan lòt men an, eleman React, Angilè ak Vue pèmèt ou byen marye HTML, kòd ak menm CSS. Menm jan nou divize baz kòd la nan anpil fonksyon endepandan ak klas, kapasite nan divize koòdone a nan eleman ki kapab itilize ankò fè li pi fasil yo bati ak kenbe sit konplèks.

Dezyèm avantaj la se ke kad ki pi resan konfòme yo ak yon paradigm deklaratif, nan ki pwomotè a dekri ki sa koòdone a ta dwe sanble ak kite li nan kad la fè tout chanjman ki nesesè yo reyalize sa yo vle. Apwòch sa a kontrè ak apwòch enperatif ki karakterize kòd jQuery.

Nan jQuery, ou klèman ekri etap sa yo pou fè nenpòt chanjman. Ak nan yon fondasyon deklaratif ou di, "Dapre done sa a, koòdone a ta dwe sanble sa a." Sa ka fè ekri kòd san ensèk anpil pi fasil.

Devlopè yo te adopte nouvo apwòch nan devlopman sit entènèt, ki se poukisa popilarite jQuery a te diminye.

Ki lè pou itilize jQuery?

Se konsa, lè ta dwe itilize jQuery?

Si konpleksite nan pwojè a ogmante, Lè sa a, li pi bon kòmanse ak yon lòt bibliyotèk oswa kad ki pèmèt ou jere konpleksite. Pou egzanp, divize koòdone a an eleman. Sèvi ak jQuery sou sit sa yo ka parèt byen nan premye, men li pral byen vit mennen nan kòd espageti kote ou pa sèten ki fragman afekte ki pati nan paj la.

Mwen te nan yon sitiyasyon konsa, lè m ap eseye fè nenpòt chanjman, li santi l tankou yon travay difisil. Ou pa ka asire w ke ou pa pral kraze anyen paske seleksyon jQuery depann sou estrikti HTML ki te pwodwi pa sèvè a.

Nan lòt bout la nan echèl la se sit senp ki sèlman mande pou yon ti jan nan entèaktif oswa kontni dinamik. Mwen pa ta default nan jQuery nan ka sa yo tou, paske gen anpil plis ou ka fè ak API natif natal.

Menm si mwen bezwen yon bagay ki pi pwisan, mwen pral chèche yon bibliyotèk espesyalize, pa egzanp. axios pou Ajax oswa Animate.css pou animasyon. Sa a pral pi fasil pase chaje tout jQuery pou yon ti fonctionnalités.

Mwen panse ke rezon ki pi bon pou itilize jQuery se ke li bay fonksyonalite konplè pou fen devan yon sit entènèt. Olye pou w aprann yon varyete API natif natal oswa bibliyotèk espesyalize, ou ka li jis dokiman jQuery a epi vin pwodiktif imedyatman.

Apwòch enperatif la pa echèl byen, men li pi fasil pou aprann pase apwòch deklaratif lòt bibliyotèk yo. Pou yon sit ki gen kapasite klèman limite, li pi bon pou itilize jQuery ak travay avèk kalm: bibliyotèk la pa mande pou asanblaj konplèks oswa konpilasyon.

Anplis de sa, jQuery bon si ou gen konfyans ke sit ou a pa pral vin konplike sou tan, epi si ou pa pran swen sou fonksyonalite natif natal, ki pral sètènman mande pou ekri plis kòd pase jQuery.

Ou ka sèvi ak bibliyotèk sa a tou si ou bezwen sipòte ansyen vèsyon IE. Lè sa a, jQuery pral sèvi ou tankou li te fè tounen nan jou yo lè IE te navigatè ki pi popilè.

Gade nan lavni an

jQuery pa pral disparèt nenpòt ki lè byento. Li devlope aktivman, ak anpil devlopè prefere sèvi ak API li yo, menm si metòd natif natal yo disponib. Bibliyotèk la te ede yon jenerasyon antye devlopè kreye sit entènèt ki travay sou nenpòt navigatè. Malgre ke li te ranplase nan plizyè fason pa nouvo bibliyotèk, kad, ak paradigm, jQuery te jwe yon wòl trè pozitif nan kreyasyon an nan entènèt la modèn.

Sòf si fonksyonalite jQuery a chanje anpil, li posib ke itilizasyon bibliyotèk la ap kontinye diminye tou dousman men piti piti pandan kèk ane kap vini yo. Nouvo sit entènèt yo gen tandans yo dwe bati lè l sèvi avèk kad ki pi modèn depi nan kòmansman an, ak ka itilize apwopriye pou jQuery yo ap vin de pli zan pli ra.

Gen kèk moun ki pa renmen pousantaj nan ki zouti devlopman entènèt vin demode, men pou mwen li se prèv pwogrè rapid. jQuery te pèmèt nou fè anpil bagay pi byen. Menm bagay la tou vre pou siksesè li yo.

Sous: www.habr.com

Add nouvo kòmantè