@media ajax dag 2
Så er konferencen overstået og jeg er kommet hjem igen. De sidste par dage har været hektiske, men I skal naturligvis ikke snydes for den spændende anden-dag hvor oplægget var at man skulle medbringe sin bedste hjerne!
JavaScript 2 and The Open Web
Brendan Eich skød dagen i gang med at fortælle lidt om de aktuelle planer for JavaScript 2 aka. EcmaScript 4. Den aktuelle version af JavaScript (ES4) er uændret siden 1999, så han mente det var tid til forandring. Specifikationen er stadig åben for debat, men følgende menes at komme med:
- Et valgfrit type-system:
type Addr = { at: [string, string], name: string }; - Rigtige konstanter
- Namespaces, pakker og kompilerings-enheder
Bemærk at dette indebærer at der reelt er tale om et helt nyt sprog, som ikke er kompatibelt med det eksisterende.
Building Interactive Prototypes with jQuery
Efter at Brendan havde fyret et par
ScreamingMonkeys af — små abe-dukker der hylende blev skudt ud over publikum — kom
John Resig fra jQuery på scenen til en noget mere teknisk snak. John gav en overbevisende demonstration af
jQuery frameworket, hvis fokus er via CSS selectors (hele CSS1-3 er understøttet, og mere til) at udpege og derefter udføre bestemte handlinger på DOM elementer. Som afrunding præsenterede John en implementation af
Processing i JavaScript, som han har begået for nylig.
Sneak
peeks er på hans blog.
Metaprogramming JavaScript
Sidste indlæg før frokost blev begået af Dan Webb og handlede om
meta-programmering. Dan bragte os på glimrende step-by-step vis ind i JavaScript’s meget dynamiske verden. Nogle af hans vigtigste pointer undervejs:
- Funktioner er objekter, og metoder er intet andet end funktioner der er tildelt til en egenskab på et objekt.
- Ved brug af call/apply kan man lave binde “this” i funktioner til bestemte objekter.
- Ved brug af “new” overføres et objekts prototype til et nyt objekt, hvorved en call chain oprettes.
- En underanvendt optimeringsteknik er at lade funktioner overskrive sig selv med en optimeret udgave første gang de kører, fremfor at evaluere de samme tests hver gang de kører.
Dan nævnte også et par interessante projekter:
- Base2, udviklet af Dean Edwards, sigter mod at levere en jævn grænseflade på tværs af browsere, ved at rette ind efter standarderne hvor det er muligt.
- Metaprogramming Javascript, under udvikling af Adam McCrea, sigter mod at kunne angive event handlers deklarativt.
- DomBuilder, af Dan selv, som dog får kæmpe minus i min bog ved at samtlige referencer til stadset, inkl. dem fra Dans egen blog, fører til en 404. Der er dog en god chance for at tingen er indentisk med den Dom Builder kode der har fundet vej til Prototype 1.6.
Dojo 1.0: Great Experiences For Everyone
Efter frokost var det meningen at Alex Russell, speed-talker extraordinaire, og leder af
Dojo teamet, skulle have præsenteret Dojo toolkit’et. I stedet valgte han at holde konferencens længste og klart mest imponerende (set ud fra et tale-teknisk perspektiv) monolog om alt hvad der er galt med verden i dag, og hvordan Dojo teamet har forsøgt at indtænke løsninger på det. Det er svært at fremhæve nøglepunkter i hans tale, så i stedet vil jeg nøjes med at fremhæve et par citater. Den første kan jeg nikke genkendende til:
The future is here, it’s just not widely distributed yet*Den næste kan jeg erklære mig delvist enig i. Set ud fra et JavaScript perspektiv er det fuldstændig korrekt, og selv fra et mere generelt web service perspektiv er der en del sandhed i det:
XML is a bug on the web — there’s just no question about it!JavaScript: The Good Parts
Som dagens sidste taler forsøgte Douglas Crockford, bl.a. kendt fra
json.org, at udpege de elementer i JavaScript som gør sproget rigtigt godt. Først fremhævede han et par ting man bør undgå med citater som
eval is a cry for helpog
You should never use “==” in this languageDernæst fremhævede han lambdaer, dynamiske objekter og loose typing som gode elementer man sjældent ser i andre sprog. Hans tale om closures, og hvordan man bruger dem til at opnå true private properties ramte plet for mit vedkommende:
var bean = (function() { var property; var object = {}; object.getProperty = function() { return property; }; object.setProperty = function(value) { property = value; }; return object; })();
Douglas havde også et par idéer til hvad der burde fikses i næste version, og han er langt fra enig med Brendan. Specielt mente han man burde fokusere på:
- at inkludere JSON understøttelse,
- at tilføje en sikker eval metode, samt
- at give mulighed for at tilføje egenskaber til objekter der ikke enumereres ved for-in.
Endelig anbefalede Douglas at man kørte sin JavaScript kode igennem JSLint. JSLint kan finde mange problemer ved JavaScript kode, og konsekvent brug fører utvivlsomt til en bedre, lettere gennemskuelig, kvalitet af kode.
*) citatet er fra William Gibson
11. januar 2008 kl. 21:30
Super resumé. Det var iøvrigt en fed tur! =)
mvh Michael Schøler