Recent am avut plăcerea extremă de a vorbi cu Karl Swedberg despre Javascript și dezvoltarea web în general. Karl este autorul mai multor cărți Javascript, cum ar fi Learning jQuery și jQuery Reference Guide. Alăturați-vă nouă când privim în mintea unui dezvoltator umil și talentat.
Sunt un dezvoltator de web (în mare parte front-end) la o agenție mică, Fusionary Media, din Grand Rapids, Michigan. La 41 de ani, probabil că sunt mai în vârstă decât majoritatea dezvoltatorilor web, dar de cele mai multe ori mă simt încă un copil. În afara muncii, sunt foarte implicat în jQuery. Sunt în echipa proiectului jQuery și scriu despre asta, îi antrenez pe alții să o folosească și să vorbească despre asta la conferințe.
Prima mea implicare în dezvoltarea web-ului a fost în 1995, când am construit un site simplu pentru o cafenea pe care am deținut-o. După aceea, am dat peste lucruri web aici și acolo, pentru că am într-adevăr o lovitură, dar nu am început să o fac ca pe o slujbă până acum patru ani.
Îmi place să citesc, să alerg și să stau cu familia. Până acum un an, am studiat karate timp de aproximativ șapte ani și mă gândesc să încep din nou. De asemenea, mă bucur de fotografie, de a descoperi muzică nouă și de a mă înfrunta cu prietenii mei.
Este un blog personal al meu pe care l-am neglijat în ultima vreme. Nu-mi amintesc exact când am început-o - 2000? 2001? - dar ideea a fost să furnizez câteva informații și link-uri pentru studenții mei. În acel timp învățam engleza de liceu. De atunci a devenit o mișcare a intereselor mele trecătoare. În 2003 am încărcat Tipul mobil și am început să fac bloguri. La un moment dat am crezut că ar fi distractiv să postez un cuvânt nou în fiecare zi din ceea ce am întâmplat să citesc la acea dată, așa că am făcut asta pentru o vreme. Apoi am avut ideea nebună că aș putea răspunde la întrebările lumii despre gramatică, punctuație, stil, ortografie și așa mai departe, dar asta nu a durat mult. Am postat o gramada de fotografii pe site pentru o perioada de timp, dar asta a fost si ea blocat. Probabil cea mai mare motivație de ao face să funcționeze a fost să ofere prietenilor și familiei un instantaneu al ceea ce fac, dar în ultima vreme Facebook și Twitter au completat acea nevoie.
Am început să folosesc jQuery cândva în jurul lunii mai sau iunie 2006. Încă mai am o copie a "Rev 27" din fișierul de bază jQuery din 2 mai 2006, înainte de a avea chiar și un număr de versiune. Este o rușine că fișierul este comprimat și obfuscat. Ar fi foarte distractiv sa sapi prin ea si sa vezi cat de mult sa schimbat.
Site-ul a venit primul. După ce am jucat cu jQuery câteva luni, am crezut că ar fi o idee bună să încep să documentez ceea ce am învățat. L-am întrebat pe John Resig dacă se gândeam să folosesc numele jQuery și să scriu bloguri despre experiențele mele și era entuziasmat de ideea.
La câteva luni după ce am început blogul, cineva de la Packt Publishing ma contactat și mi-a întrebat dacă aș vrea să scriu o carte despre jQuery - o ofertă pe care atât m-am lingușit și m-am înspăimântat. Am fost de acord să o fac, dar numai dacă prietenul meu (Jonathan Chaffer) l-ar putea scrie cu mine. Este un programator mult mai bun decât mine, și eram totuși doar un novice la acea vreme.
Alegerea unei biblioteci JavaScript este foarte asemănătoare cu alegerea unei camere digitale SLR (odată ce ați luat prețul din ecuație, desigur). De ce Nikon? De ce nu Canon sau Pentax? Nu sunt sigur că nimeni poate răspunde în mod satisfăcător la aceste întrebări numai pe baza meritelor tehnice. Multe lucruri au de-a face cu necorporalele: comunitatea, sprijinul, compatibilitatea cu modelele tale mentale deja stabilite despre felul în care lucrurile ar trebui să funcționeze și să arate și să se simtă. Oamenii consideră, de asemenea, extensibilitatea - sub formă de lentile și accesorii pentru camere și pluginuri și widget-uri pentru bibliotecile JavaScript. Sigur, meritul tehnic joacă un rol. Performanța, caracteristicile și fiabilitatea sunt importante. Dar, la fel ca și în cazul companiilor de camere, dezvoltatorii de biblioteci JavaScript continuă să se înrăutățească unul peste celălalt în aceste domenii, iar cel mai bun din oricare dintre aceste domenii astăzi ar putea să nu fie cel mai bun în această zonă, la șase luni de acum.
Motivul pentru care am ales jQuery, în primul rând, este că mi-a făcut sens aproape instantaneu. Am văzut că pot transfera cu ușurință cunoștințele mele despre CSS la jQuery cu abordarea centrată pe DOM. De atunci, după cum am învățat mai multe despre tehnicile JavaScript avansate, am descoperit că JavaScript suficient este suficient pentru a face față domeniilor limbii pe care jQuery nu le abordează și nu au simțit nevoia de a se baza pe o bibliotecă pentru acele zone . Îmi place, de asemenea, spiritul comunității și generozitatea și bunătatea celorlalți membri ai echipei de proiect și a contribuitorilor listelor de discuții.
Întrebarea pe care o văd cel mai adesea pe lista de discuții jQuery (Grupul Google) este conformă cu "De ce evenimentele mele nu mai funcționează după ce am introdus elemente în documentul meu?" Avem un subiect detaliat cu întrebări frecvente care răspunde la această întrebare. Am scris câteva articole despre learningjquery.com despre asta. Avem pluginul Live Query și, din jQuery 1.3, metoda .live () care rezolvă problema. Totuși, în ciuda tuturor acestor lucruri, întrebarea vine încă de câteva ori pe săptămână.
În afară de learningjquery.com și de carte de învățare jQuery 1.3, există destul de puține resurse mari. Remy Sharp are câteva clipuri teribile pe site-ul său jQuery for Designers și am văzut câteva articole importante de la Marc Grabanski și James Padolsey pe blogurile lor respective. Grupul jQuery Google este foarte popular, cu peste 16.000 de membri și canalul #jquery IRC de pe freenode.net este destul de activ și util.
Doresc ca metoda .live () să funcționeze cu toate tipurile de evenimente. În prezent funcționează doar cu un subset, astfel încât să nu-l poți folosi cu schimbare, focalizare, blur, submit, mouseenter sau mouseleave. De asemenea, cred că ar fi bine să permiteți ca o funcție anonimă să fie folosită ca argument pentru .css (), .val () și .html () în același mod ca pentru .attr ().
Mă tem că acestea vor suna ca niște plăgi, dar aici merge: Nu vă fie frică să învățați pe măsură ce mergeți. Nu trebuie să ai tot ce sa gândit înainte. Fiți dispus să faceți greșeli. Continuați să învățați lucruri noi despre limbă și încercați să faceți legături între ceea ce știți deja și ceea ce învață acum.
Sigur. O practică proastă este folosirea jQuery pentru ceva ce ați putea face mai ușor și mai eficient cu CSS. De exemplu, dezvoltatorii web de ani de zile au schimbat poziția de fundal a unui sprite de imagine atunci când mouse-ul utilizatorului se deplasează peste un link. Nu există absolut niciun motiv pentru a utiliza jQuery pentru acest lucru, cu excepția cazului în care dezvoltatorul dorește ca schimbarea de tip hover-state să fie animată.
O altă metodă proastă este repetarea inutilă a selectorilor. În loc să creați un alt obiect jQuery de fiecare dată când doriți să faceți ceva la un anumit set de elemente, lanțați metodele sau stocați o referință la obiectul jQuery într-o variabilă și folosiți.
Citiți tutoriale de pe site-urile reputate. Puneți întrebări pe lista de discuții și citiți răspunsurile la întrebările altor persoane. În special, citiți tot ce au scris pe lista Michael Geary și Dave Methvin. Încercați să emulați codul autorilor de plugin-uri mari, cum ar fi Mike Alsup, Ariel Flesler, Jörn Zaefferer și Brandon Aaron.
Adesea scriu propria mea, dar eu folosesc câteva destul de frecvent. Fiecare client pare să dorească un fel de rotator de imagine pe pagina lor de pornire, așa că folosesc plugin-ul Cycle al lui Mike Alsup pentru asta. De asemenea, folosesc pluginurile Form și Media destul de puțin. De cele mai multe ori mă bazez pe pluginul Superfish al lui Joel Birch și pe plug-inul lui hoverIntent al lui Brian Cherne când un client dorește meniuri drop-down. În ultima vreme am folosit jQuery UI din ce în ce mai mult pentru teme generale widget, efecte avansate, glisoare și elemente draggable / droppable.
Nu sunt nebun despre unele dintre numele de metode din API. În versiunile foarte timpurii ale jQuery, au existat două nume de metode pentru a traversa tot drumul în sus pe copacul DOM: părinții () și ancestorii (). Atunci când API a fost tăiat, au fost anulați ancestorii (). Aș prefera să abandonez părinții (), pentru că eu cred că "strămoșii" descriu mai bine ce se selectează. Și, în general, îmi place cum jQuery supraîncărcă metodele, cred că metodele .load () și .toggle () iau ideea puțin prea departe.
Cea mai dificilă parte este probabil să rămână la timp. Dar este absolut esențial să stabiliți un calendar rezonabil înainte de timp și să rămâneți la el în întregime.
Cele mai multe modificări ale nucleului jQuery vor fi în domeniile de performanță, stabilitate și corecții de erori. Nu văd o mulțime de caracteristici noi adăugate la miez. Pentru funcții noi, țineți cont de jQuery UI. Există o mulțime de lucruri minunate noi dezvoltate acolo.
Sunt unul dintre mai mulți recenzori tehnici pentru o carte de bucate jQuery care se află în fabrică. Însă în prezent nu scriu cărți și nu am intenția să fac acest lucru în curând.
Nimic care nu a fost menționat deja, ci mulțumiri pentru ofertă!
Plăcerea este de partea mea! Sunt flatat de interesul tău față de ceea ce am de spus.