Posts Tagged ‘javascript’

javascript pars[e] pro toto

Wednesday, November 26th, 2008

Pars pro toto is een stijlfiguur waarbij de auteur een gedeelte van een object noemt wanneer hij het hele object bedoelt. Hij gebruikt dus een deel (pars) terwijl hij het geheel (toto, ablatief van totum = geheel) bedoelt: deel voor geheel (pars pro toto).

bron: http://nl.wikipedia.org/wiki/Pars_pro_toto

Met andere woorden, 1 deel beschrijft het geheel, of om het door te trekken naar javascript, 1 script beschrijft de script library. U denkt, niets nieuws onder de zon, en misschien hebt u wel een punt, maar tot op heden ben ik dit nog niet echt tegengekomen.

Als we grote javascript libraries als mootools bekijken, dan is er een “download” pagina waar u alle benodigde classes in 1 grote javascript file, netjes gepacked kunt downloaden. Ideaal, want de browser caching zorgt er voor dat deze file niet nodeloos gedownload wordt ieder bezoek.

Maar… als we nu eens uitgaan van een gigantisch grote library met extreem veel utilities, dan heb je 1 grote js file die moet ingeladen worden. We kunnen er vanuit gaan dat 99% van de mensen wel een snelle internetverbinding hebben en hier weinig tot niets van merken, maar het is iets complexer dan dat.

Diegene die geregeld mijn blog volg(d)en weten dat ik een eigen javascript library ben beginnen ontwikkelen, namelijk de joink library. Deze biedt geen enkele meerwaarde dan de bestaande libraries behalve het feit dat ik ze zelf geschreven heb en er bijgevolg snel mee kan ontwikkelen. Nu wil het toeval dat we deze library bij ons ‘op den bureau’ ook geimplementeerd hebben en er geregeld ‘utilities’ geschreven worden die iets van “dom-magie” uitvoeren.

Waar het grotendeels op neerkomt is dat de joink library een reeks core files heeft en een heleboel utilities (denken we maar aan drilldown functionaliteit, autosuggest, etc…). Om het even in een logische boom te gieten:

Wat onmiddellijk opvalt zijn al de utilities, nu nog niet zo héél veel, maar bij grote projecten waar redelijk wat utilities gebruikt worden om het geheel wat op te schonen is het een hel om een mooi overzicht te houden van wat waar geinclude moet worden, etc…

Vandaar het fantastische idee om per joink.utils.xxx.js file aan te geven welke files er nodig zijn omdat de boel zou werken, zodoende kan ik deze dan on the fly inladen. Om de boel nóg gemakkelijker te maken wilde ik slechts 1 file (de joink.js core file) includen en deze alle benodigde files te laten includen wanneer deze nodig zijn.

Als ik dus bijvoorbeeld een joink.fx object aanmaak moet mijn joink.parsprototo de joink.fx.js library inladen én bijgevolg ook de joink.bezier.js file die nodig is om de animatiecurves te genereren…

Op onderstaande link is een proof of concept uitgewerkt (redelijk vlug geschreven, dus niet echt op de netheid van de code letten aub :p). Er zitten nog wat plooien in, maar deze worden zeker nog gladgestreken.

Proof of concept: http://labs.joggink.be/proof-of-concept/parse-pro-toto/