RobIII schreef op woensdag 10 november 2010 @ 01:25:
[...]
Dat is maar net hoe je 't bekijkt; ik persoonlijk heb altijd nét een graantje meer op met lui die in hun vrije tijd lekker freewheelen en leren en experimenteren en bezig zijn met dingen uitvogelen dan lui die 15 libraries tegen elkaar aan flempen en verder geen flauw benul hebben van wat er nou eigenlijk precies gebeurt. En je kunt ook als argument aandragen dat in de baas z'n tijd met deadlines in je nek zo'n jQuery of wat-dan-ook veel aantrekkelijker/efficiënter/logischer/etc. is om in te zetten dan als je zit te fröbelen op een hobby project.
Goed punt.
Maar 15? Met jQuery, MooTools én Prototype in de buurt ben je doomed... $ ftw
Point being: "
Juist in een 'hobbyprojectje'" gaat helemaal niet op. Een beetje devver weet wanneer 'ie iets wel en wanneer 'ie iets niet moet gebruiken. Een beetje devver weet wanneer 't loont iets zelf te schrijven en wanneer er beter naar een (zo goed als) kant-en-klaar oplossing gegrepen kan/mag/moet worden. En de pest is: een beetje devver word je alleen maar als je op z'n tijd ook eens lekker freewheeled en je verdiept in de materie
Dat een jQuery (om daar maar even bij te blijven) je werk uit handen neemt, browser-specifieke zaken voor je wegabstraheert en ga zo maar door ontken ik daarmee overigens niet.
Mijn inschatting was dat TS, ondanks dat-ie geen code zomaar wilde kopiëren, niet in de groep devvers zit die zich echt wil verdiepen in de materie. Daar zat ik dus een beetje naast.
Daarnaast vind ik
de code van CyCloneNL echt een heel slecht voorbeeld. Zoals Bosmonster ook zegt, zo heb je niet eens images in je content zonder Javascript. Hint: progressive enhancement.
Verwijderd schreef op woensdag 10 november 2010 @ 11:30:
De uitleg van Bosmonster is erg constructief!
Een vraag:in hoeverre is de uitdrukking
"$('li.cat2>img').fadeIn();"
eigelijk als javascript op te vatten? Ik heb zelf tamelijk veel ervaring op het gebied van applicatie-ontwikkeling, en dergelijke termen ken ik dan weer totaal niet uit die Java omgeving; het verbaast me dan ook een beetje om te zien dat dit (het doet eerder aan Perl oid denken?). Mogelijk stel ik nu een zeer domme vraag hoor; ik ben pas sinds deze discussie op het spoor gekomen van het jQuery concept, waar ik me overigens nu ook in aan het verdiepen ben.
Het is uiteraard "gewoon" Javascript. Dit is alleen een bepaalde syntax die o.a. door jQuery wordt gebruikt. De truuk bij jQuery zit hem er grotendeels in dat "$()" een function is die je kunt gebruiken als CSS selector (bijv.
$('li.cat2>img')). Hieruit krijg je dan een set DOM elementen, waarmee je middels chaining direct verder kunt (in jouw voorbeeld voer je op elk resultaat uit de CSS selector een fadeIn() uit. Echter, "$" is ook een global object waarop allerlei nuttigs zit, zoals $.ready() en $.ajax(). Overigens is "$" hetzelfde als "jQuery".
Dat het je doet denken aan Perl o.i.d. komt waarschijnlijk door het chaining? Dat is op zich niet nieuw in Javascript, kijk maar naar bijv. getElementsByClassName('div')[0].style.display = 'none'.
Volgende vraag: hoe netjes is het gebruik van jQuery nou eigenlijk? Ik refereer nu even aan de post van X-lars en de reactie van RobIII daarop; als ik jullie goed begrijp, is de netheid van het gebruik van jQuery een punt van discussie?
Wat mij betreft is jQuery relatief "netjes", in de zin dat het geen native Javascript objecten aantast (iets wat bijv. Prototype wel doet). Zonder hier zelf verder op in te gaan staat
hier één van de betere uiteenzettingen van dat probleem (want dat is het). Daarom wrapt jQuery alles in objecten, waarmee je dan weer vanalles kunt doen (zoals er event listeners aan hangen of animaties, etc.).
Persoonlijk ben ik geen fan van de "$" notatie, voornamelijk omdat meerdere libs dat doen. Daar valt soms wel omheen te werken, maar ideaal is het nooit. Dat staat overigens los van het feit of het een goed idee is om meerdere libs in één app te combineren

Idealiter is iedere developer/team vrij om een shortcut aan een lib toe te wijzen, zonder dat de lib dat al op voorhand doet.
Uiteindelijk vind ik (alleen) jQuery niet geschikt voor complexere apps. Dan ga je toch eerder kijken naar bijv. YUI, of zorg je dat je een goed design neerzet, waarbinnen je met jQuery los kunt. Het probleem is dat je nu al wel veel projecten ziet, waarin met jQuery alsnog erg veel spaghetti-code geproduceerd wordt (anonymous functions, veel global vars, etc).
De kunst is dus om de juiste tool voor de job te kiezen.