Cei mai mulți dintre noi sunt familiarizați cu biblioteca jQuery JavaScript și probabil că o vom folosi în cel puțin câteva dintre proiectele noastre. Dar cât de mult știm despre oamenii care își dau neobișnuit timpul să mențină cea mai populară bibliotecă JavaScript a web-ului? Recent am avut șansa de a intervieva liderul jQuery Core Team, Dave Methvin, și să discutăm despre modul în care sa implicat în proiect și unde vede dezvoltarea în front-end. A contribuit la jQuery din 2006 și este și președintele Fundației jQuery.
Succesul lui jQuery a făcut dificilă schimbarea oricărui lucru.
Mi-am inceput cariera ca programator C full-time, facand lucruri de sistem embedded, cum ar fi navigatia la bord, robotica, automatizarea fabricilor si telecomunicatii. După aceea, m-am mutat în jurnalismul calculatorului și am scris o coloană JavaScript în timp ce eram la Windows Magazine. Când WinMag și-a închis porțile, am co-fondat o pornire care a construit un utilitar de sistem bazat pe JavaScript și HTML pentru Windows, care bazează automat pe multe dintre sfaturile pe care le-am folosit în revista.
Când eram la pornire, căutam o modalitate mai bună de a organiza JavaScript și codul HTML pe care îl scriem. Am văzut postul de blog al lui John Resig din 2005 descriind ceea ce a devenit în cele din urmă jQuery. I-am trimis un e-mail și el a răspuns că a fost înființat o listă de discuții adresată persoanelor interesate.
Deci, brusc, există un grup de oameni foarte talentați care discută biblioteca.
Mulți dintre ei se află încă în proiect până în prezent. Acesta este unul dintre talentele puțin cunoscute ale lui Ioan și un motiv major pentru succesul timpuriu al jQuery; el este foarte incluziv și deschis pentru contribuția tuturor.
Am luat oficial jertfele de jQuery Core in iulie 2011, desi am facut destul de multa munca inainte de aceasta. În ceea ce privește motivul? Cred că John își căuta următoarea mare provocare, una pe care pare să o fi găsit la Academia Khan.
Succesul lui jQuery a făcut dificilă schimbarea oricărui lucru, chiar dacă este o schimbare spre bine, cum ar fi o remediere a erorilor sau îmbunătățirea consecvenței API-ului. Deoarece aproximativ jumătate din toate site-urile Internet folosesc jQuery, putem fi destul de siguri că orice schimbarea pe care o facem bibliotecii va fi o schimbare de rupere pentru cineva. Deși facem betas, marea majoritate a utilizatorilor preferă să aștepte până când este finalizată înainte de a încerca noul cod - adică adesea zboară orb când vine vorba de cunoașterea impactului unei schimbări.
jQuery Core este o bibliotecă care simplifică traversarea, manipularea și recuperarea documentelor HTML.
Când jQuery a sosit în 2006, dezvoltatorii de web-uri au cunoscut șmecheriile browserelor și s-au bucurat să-i obțină jQuery la valoarea de 90% pentru compatibilitatea cu browser-ul încrucișat. Mulți dintre dezvoltatorii de astăzi nu au trăit niciodată în această lume și sunt surprinși de faptul că jQuery nu poate face ca fiecare mică diferență să dispară în toate browserele. Dar există limite pentru cât de bine putem lucra în jurul problemelor browserului; dezvoltatorii trebuie să înțeleagă acest lucru. De multe ori, soluția folosește o soluție simplă la nivel de aplicație sau utilizează un plugin care abordează anumite cazuri rare.
Bug-urile sunt prioritizate dacă sunt o regresie, impactul lor global asupra comunității, gravitatea lor și complexitatea unei soluții. Cele mai multe dintre problemele de non-regresie sunt cazuri de margine sau bug-uri de browser care sângerau până la API-ul jQuery. Provocarea noastră este să rezolvăm aceste probleme fără a crea o mulțime de soluții complexe pe care majoritatea oamenilor nu le au nevoie și să introducă alte erori în proces.
Din moment ce jQuery facilitează combinarea unor efecte minunate folosind doar câteva linii de cod și câteva pluginuri jQuery de la terțe părți, este inevitabil ca neprofesionistii să-și încerce mana să o folosească. Uneori vor reuși, iar alteori vor face o mizerie mare pe care cineva trebuie să o primească și să curețe. Nu văd nici o soluție la acea "problemă", în afară de a face jQuery mai obtuzată, astfel încât numai programatorii profesioniști o pot da seama. Asta nu se va întâmpla.
Chiar dacă scoate IE 6/7/8 există o mulțime de cod în jQuery pentru a netezi bug-uri de browser și neconcordanțe. Am fost oarecum deprimat pentru a vedea câte linii a trebuit să rămână pentru jQuery 2.0. Se pare că toți producătorii de browsere sunt prea ocupați, punând în aplicare funcții noi strălucitoare, cum ar fi CSS3, pentru a reveni și pentru a repara funcționalitatea de bază. Și de ce ar trebui să se angajeze să o repare, deoarece jQuery o rezolvă și, prin urmare, nu se plânge nimănui lor?
Cadrele MV * sunt în cazul în care bibliotecile DOM au fost șase sau șapte ani în urmă când jQuery a sosit pe scenă. Există o multitudine de diversitate în abordarea lor de design, ceea ce este un lucru bun. Cele mai multe dintre aceste cadre sunt fericite să permită jQuery să se ocupe de problemele legate de browserul încrucișat, astfel încât să se poată concentra asupra preocupărilor legate de designul aplicațiilor la nivel superior. Suntem complet complementari eforturilor lor.
Îmi place să glumesc că "Core nu se face până când UI nu va rula".
jQuery Core este o bibliotecă care simplifică traversarea, manipularea și recuperarea documentelor HTML. Uneori oamenii doresc să împingă granițele și să întrebe de ce nu susținem SVG, VML sau alte tehnologii webbish, dar pentru asta sunt și pluginurile. Vrem să păstrăm API-ul aplicației jQuery concentrat pe operațiile DOM. Dincolo de faptul că în biblioteca de bază ar adăuga o mulțime de umflături pe care puțini oameni au nevoie.
jQuery Core are capacitatea de a fi folosit ca modul AMD și încărcat dinamic. În general, modulele numite sunt încruntate, dar atât de multe pluginuri jQuery se așteaptă să împărtășească un obiect jQuery global. Nu sunt mulțumit de starea actuală de încărcare a modulului JavaScript și prefer cel mai simplu proces de combinare și minimizare pentru majoritatea lucrărilor pe care le fac. Cu toate acestea, AMD este destul de populară încât am dorit ca jQuery Core să o susțină, astfel încât utilizatorii AMD să poată încărca jQuery de la un CDN, de exemplu.
Soluțiile pentru IE 6/7/8 reprezintă mai mult de zece la sută din dimensiunea bibliotecii jQuery 1.9, iar aceste soluții au și un impact asupra performanței. Există multe locuri în care aceste soluții nu sunt necesare, cum ar fi aplicațiile Windows 8, pluginurile Chrome și Firefox, aplicațiile PhoneGap / Cordova pe o anumită platformă mobilă sau programele node.js unde o bibliotecă ca Cheerio este utilizată pentru a încărca jQuery.
Acesta este publicul primar pentru jQuery 2.0 în acest moment; majoritatea site-urilor de internet ar trebui să continue să susțină versiunile mai vechi ale IE utilizând jQuery 1.9.
De exemplu, nu văd site-urile Web Target sau Wal-Mart utilizând jQuery 2.0 pentru cel puțin câțiva ani; IE8 utilizatorii au bani prea! Deoarece cele două interfețe API sunt sincronizate, este posibil să utilizați comentariile condiționale pentru a include unul sau altul pentru un anumit browser, dar pentru a fi sincer, nu cred că merită efortul.
Deoarece jQuery UI și Mobile depind de Core, le consultăm cu privire la problemele de pe foaia de parcurs, acolo unde este nevoie. Aceste proiecte rulează, de asemenea, testele unitare împotriva celei mai recente construiri direct de la Github, astfel încât să știm imediat dacă am rupt ceva. Totuși, îmi place să glumesc că "Core nu se face până când UI nu va rula", și de obicei există câteva erori pe care le găsim după fiecare lansare. Qunit este un pic diferit; noi suntem al lor client. Întrebați-le uneori despre caracteristici și, ocazional, actualizările lor ne încalcă testele unitare. Deci, avem un gust de propriul nostru medicament.
Vedem Conferința jQuery ca o adunare pentru dezvoltatorii care creează site-uri web și aplicații web. O parte din ceea ce vor să știe este despre jQuery, dar nu vrem să ne oprim acolo. Orice dezvoltator bun ar trebui să își extindă orizonturile și să continue să învețe instrumentele și tehnicile care le pot ajuta să se îmbunătățească.
Inovațiile vin din toate direcțiile. Războaiele de tip MV * sunt susceptibile de a furniza abordări mult mai bune și mai rapide pentru a dezvolta aplicații web și site-uri web; fără îndoială vom vedea o consolidare acolo, similar cu ceea ce sa întâmplat cu jQuery.
Designul receptiv este un alt subiect important și sper că îmbunătățirile în CSS și imaginile receptive vor face mai ușor implementarea în anul următor.
În acest ultim punct, jQuery lucrează cu grupurile de standarde de la W3C și ECMA pentru a se asigura că dezvoltatorii web din tranșee sunt reprezentați atunci când iau decizii.