Jag har nyligen haft det extrema glädjen att chatta med Karl Swedberg om Javascript och webbutveckling i allmänhet. Karl är författare till flera Javascript-böcker, såsom Learning jQuery och jQuery Reference Guide. Följ med oss när vi tittar in i en ödmjuk och begåvad utvecklare.
Jag är en (främst frontend) webbutvecklare på en liten byrå, Fusionary Media, i Grand Rapids, Michigan. Vid 41 är jag antagligen äldre än de flesta webbutvecklare, men mest av tiden känner jag mig fortfarande som ett barn. Utanför jobbet är jag mycket inblandad i jQuery. Jag är på jQuery-projektteamet, och jag skriver om det, tränar andra hur man använder det och talar om det vid konferenser.
Mitt första engagemang med webbutveckling var 1995, då jag byggde en enkel plats för ett kafé som jag ägde. Därefter dabblade jag med webben här och där, för jag fick verkligen en spark ut av det, men jag började inte göra det som jobb för ungefär fyra år sedan.
Jag gillar att läsa, springa och umgås med min familj. Fram till ett år sedan hade jag studerat karate i ungefär sju år, och jag funderar på att börja det igen. Jag tycker också om fotografering, upptäcka ny musik och geeking ut med mina vänner.
Det är en personlig blogg av mig som jag har försummat nyligen. Jag kommer inte ihåg exakt när jag började det - 2000? 2001? - men tanken var att ge lite information och länkar till mina elever. Jag var undervisning i High School English vid den tiden. Sedan dess har det blivit en misshandel av mina flyktiga intressen. 2003 laddade jag upp Movable Type och började blogga på den. Vid en tidpunkt trodde jag att det skulle vara kul att lägga ett nytt ord varje dag från vad jag råkade läsa då, så gjorde jag det för ett tag. Då hade jag det galna idén att jag kunde svara på världens frågor om grammatik, interpunktion, stil, stavning osv. Men det varade inte länge. Jag har lagt upp en massa fotografering på webbplatsen ett tag, men det har också slagit sig. Förmodligen den största motivationen att hålla koll på var att ge vänner och familj en ögonblicksbild av vad jag gör, men på sistone har Facebook och Twitter fyllt det behovet.
Jag började använda jQuery någon gång i maj eller juni 2006. Jag har fortfarande en kopia av "Rev 27" i jQuery-kärnfilen från den 2 maj 2006, innan den till och med hade ett versionsnummer. Det är synd att filen är komprimerad och obfuscated. Det skulle vara kul att gräva igenom det och se hur mycket det har förändrats.
Webbplatsen kom först. Efter att ha spelat med jQuery i ett par månader trodde jag att det skulle vara en bra idé att börja dokumentera vad jag hade lärt mig. Jag frågade John Resig om han skulle tänka på att jag använde jQuery-namnet och bloggar om mina erfarenheter, och han var entusiastisk över idén.
Några månader efter att jag började bloggen, kontaktade någon från Packt Publishing mig och frågade om jag skulle vilja skriva en bok om jQuery - ett erbjudande som både smickrade och skrämmade mig. Jag gick med på att göra det, men bara om min vän (Jonathan Chaffer) kunde skriva den med mig. Han är en mycket bättre programmerare än jag, och jag var fortfarande bara en nybörjare vid den tiden.
Att välja ett JavaScript-bibliotek är mycket som att välja en digital SLR-kamera (en gång tar du pris ut ur ekvationen, förstås). Varför Nikon? Varför inte Canon eller Pentax? Jag är inte säker på att någon på ett tillfredsställande sätt kan svara på dessa frågor utifrån enbart teknisk merit. Många har att göra med immateriella tillgångar: gemenskap, stöd, kompatibilitet med dina redan etablerade mentala modeller om hur saker ska fungera och se ut och känna. Människor ser också utökningsbarhet - i form av linser och tillbehör till kameror och plugins och widgets för JavaScript-bibliotek. Visst, teknisk merit spelar en roll. Prestanda, funktioner och tillförlitlighet är viktiga. Men som med kameraföretagen fortsätter JavaScript-utvecklarna att hoppa över varandra i dessa områden och det bästa på något av dessa områden idag kanske inte är det bästa inom det området sex månader från nu.
Anledningen till att jag valde jQuery i första hand är att det var förnuftigt för mig nästan direkt. Jag såg att jag enkelt kunde överföra min kunskap om CSS till jQuery med sin DOM-centrerade inställning. Sedan dess har jag, som jag har lärt mig mer om avancerade JavaScript-tekniker, funnit att Javascript är tillräckligt för att hantera de områden på språket som jQuery inte adresserar, och har inte behövt lita på ett bibliotek för dessa områden . Jag älskar också gemenskapens anda och generositet och nådighet hos de andra medlemmarna i projektgruppen och bidragsgivarna i diskussionslistorna.
Frågan jag ser oftast ställde på jQuery-diskussionslistan (Google-gruppen) ligger i linje med "Varför mina händelser slutar fungera efter att jag har lagt in element i mitt dokument?" Vi har ett detaljerat FAQ-ämne som svarar på den här frågan. Jag har skrivit ett par artiklar om learningjquery.com om det. Vi har plugin för Live Query och, enligt jQuery 1.3, metl.live () som löser problemet. Men trots allt kommer frågan fortfarande upp ett par gånger i veckan.
Bortsett från learningjquery.com och boken Learning jQuery 1.3 finns det en hel del bra resurser. Remy Sharp har några fantastiska screencasts på sin jQuery for Designers, site och jag har sett några bra artiklar från Marc Grabanski och James Padolsey på deras respektive bloggar. Google-gruppen jQuery är mycket populär, med över 16 000 medlemmar och #jquery IRC-kanalen på freenode.net är ganska aktiv och hjälpsam.
Jag önskar att .live () -metoden skulle fungera med alla evenemangstyper. För närvarande fungerar det bara med en delmängd, så du kan inte använda den med förändring, fokusering, suddning, inlämning, mouseenter eller mouseleave. Jag tycker också att det skulle vara coolt att låta en anonym funktion användas som ett argument för .css (), .val () och .html () på samma sätt som för .attr ().
Jag är rädd att dessa kommer att låta som platituder, men här går: Var inte rädd för att lära dig när du går. Du behöver inte ha allt räknat ut före tid. Var villig att göra misstag. Fortsätt lära dig nya saker om språket och försök att skapa kopplingar mellan vad du redan vet och vad du lär dig.
Säker. En dålig övning använder jQuery för något som du kan göra enklare och effektivt med CSS. Till exempel har webbutvecklare i åratal ändrat bakgrundspositionen för en bildsprite när användarens mus himmlar över en länk. Det finns absolut ingen anledning att använda jQuery för detta, såvida inte utvecklaren vill att sväveländringsändringen ska animeras.
En annan dålig övning är onödigt upprepande selektörer. Istället för att skapa ett annat jQuery-objekt varje gång du vill göra något för en viss uppsättning av element, kedja metoderna eller lagra en referens till jQuery-objektet i en variabel och använd det.
Läs handledning från välrenommerade webbplatser. Ställ frågor på diskussionslistan och läs svar på andras frågor. Läs särskilt allt som Michael Geary och Dave Methvin postar på listan. Försök att emulera koden för stora pluginförfattare som Mike Alsup, Ariel Flesler, Jörn Zaefferer och Brandon Aaron.
Jag skriver ofta min egen, men jag använder några ganska ofta. Varje klient verkar vilja ha någon sorts bildrotator på deras hemsida, så jag använder Mike Alsups Cycle plugin för det. Jag använder också hans Form och Media plugins ganska lite. Jag är ofta beroende av Joel Birchs Superfish-plugin och Brian Cherne's hoverIntent-plugin när en klient vill ha rullgardinsmenyer. På senare tid har jag använt jQuery-användargränssnittet mer och mer för generell widget-teman, avancerade effekter, reglage och dragbara / droppbara element.
Jag är inte galen på några av metodnamnen i API: n. I mycket tidiga versioner av jQuery fanns det två metodnamn för att korsa hela DOM-trädet: .parents () och .ancestors (). När API-programmet trimmades, släpptes .ancestors (). Jag skulle ha föredragit att släppa .parents () istället för att jag tror att "förfäder" bättre beskriver vad som väljs. Och medan jag i allmänhet gillar hur jQuery överbelastar metoder, tror jag att .load () och .toggle () metoder tar tanken lite för långt.
Den svåraste delen är nog bara kvar på schemat. Men det är absolut nödvändigt att sätta ett rimligt schema i förväg och hålla fast vid det hela vägen.
De flesta av förändringarna i jQuery-kärnan kommer att ligga inom prestanda, stabilitet och buggfixar. Jag ser inte många nya funktioner som läggs till i kärnan. För nya funktioner, hålla koll på jQuery UI. Det finns många fantastiska nya saker som utvecklas där.
Jag är en av flera tekniska granskare för en jQuery-kokbok som finns i verken. Men jag för närvarande inte författar några böcker och har inte planer på att göra det någon gång snart.
Inget som inte redan nämnts, men tack för erbjudandet!
Mitt nöje! Jag är smickrad av ditt intresse för vad jag måste säga.