Skip to content

Session: Efficient Javascript

"Wie code ich richtig in Javascript?" von Wolfram Kriesing. Code Conventions usw. Brauchbare Editoren: Komodo, Aptana, Eclipse, Netbeans wegen Code Completion, Syntax Check, Code Analyzer (JSLint, findet z.B. IE traps [in phing? svn? your IDE?]) und alles, was für andere Programmiersprachen auch zutrifft. Templates für Code-Strukturen, für das ganze Team. Testen mit Hilfe der Firebug-Konsole nicht vergessen, die auch Auto-Completion mitbringt und das komplette API anzeigen kann.

Watch the traffic: Neben Fiddler und HTTPLiveHeaders existiert auch noch Charles. Nützlich sind auch Debugger, neuerdings auch innerhalb von Eclipse (PDT). Im Sourcecode: debugger; ist ein selbstgesetzter Breakpoint. console.time() und console.timeEnd() und andere console-Methoden. functionName.toString() gibt im Firebug den Sourcecode einer Funktion aus. Firebug hat einen Profiler. Dojo hat einen DocTest.

Update: Wolfram, mit dem ich mich auf der BarCamp-Party am Samstag noch sehr nett unterhalten habe, hat mittlerweile die Slides seiner beiden Vorträge online gestellt.

Jam-Session: Professionelles Javascript

Micheal Probst Stuckmann stellt seine Diplomarbeit über den professionellen Einsatz von Javascript vor. Erste Feststellung: Firebug FTW! Zweitens: Spheregazer, eine App, die interaktive Sternkarten zeichnet. Im Background werkeln eine MySql-Datenbank und Java Servlets (JSP). Javascript-Codebase ist 2,5 MB groß - puh. Ein Problem beim Erstellen der "Sternenkugel" als SVG war der Zugriff aufs DOM der SVG und deren Manipulation. Das Killer-Javascript-IDE fehlt noch, aber Aptana funktioniert oft schon sehr gut. Eingesetzte Libs: Prototype, Scriptaculous, Dojo für GUI-Elemente. Mangelhaft ist allerdings oft die Dokumentation der Libraries, und die Entwicklergemeinde ist überschaubar.

Der Code hinter Spheregazer ist weitgehend objektorientiert und nach MVC-Logik aufgebaut und daher gut erweiterbar und übersichtlich. Model und View kommunizieren manchmal aber direkt ohne Umweg über den Controller. Daten werden über JSON übertragen. Ein weiteres Problem ist Memory-Management, das keiner der modernen Browser wirklich von Haus aus unterstützt (außer FF3 jetzt); Speicher von Objekten, die dereferenziert werden, wird in der Regel nämlich nicht mehr freigegeben. Und DOM-Knoten sind sehr speicherintensiv. Frage: Geschäftslogik ins Javascript verlagern? Antwort: Ja, ist prinzipiell gut und schnell; nur ob man das will, d.h. ob man die Prozesse öffentlich machen möchte, muss entschieden werden. Dokumentiert wurde mithilfe von JSDOC, und das Projekt soll auch in Zukunft fortgeführt werden.