JavaScript komprimieren

tach zusammen

Ich habe auf meiner Webseite ein Eingabeformular geschrieben, das komplett per JavaScript erstellt und verarbeitet wird. Auch die HTML-Tags werden per Script erzeugt. (mit Formularauswertung, Cookies, Parameterübergabe, Vorschaufenster, …)

Alles funktioniert klasse und ich bin auch ein klein wenig Stolz drauf, aber ich habe das Problem, dass die passende Datei etwa \b|25k groß ist. Durch entfernen sämtlicher Formatierungen im Quelltext (Lerrzeichen, Zeilenschaltungen, etc.) konnte ich die Datei schon mal auf 15,5k schrumpfen. Allerdings ist die Datei jetzt auch quasi nicht mehr lesbar für’s Auge.

Gibt es noch andere Varianten, wie man solche umfangreichen Scripte „komprimieren“ kann?

Gruss Jens

ps: Das Formular im web:
http://stories.nigjo.de/js/form.htm

Hi.

Es gibt meinen Wissensstand nach tatsächlich nur wenige Möglichkeiten, um ein Javascript zu komprimieren. Das entfernen jeglichen Layouts ist ein Mittel, eindeutige umbenennung aller Variablen und funktionennamen in kürzere ein weiterer Schritt.

z.B.

function zeigeMirIrgendwas(paramObject) {} in
function a01(p01) {}

spart auch einiges. Allerdings würde ich das soweit es geht automatisieren und dann immer vor dem hochladen machen. Dh. dass du das Original, an dem du arbeitest nicht komprimierst.

Ich habe vor längerem einen in Javascript erstellten textkomprimierer und entkomprimierer gesehen, der aber wahrscheinlich erst bei wirklich großen skripts zu vorteilen führt, da er selber um die 15-20k groß war, wenn ich mich richtig erinnere. Leider weis ich da die Adresse nicht mehr.

Eine weitere Möglichkeit ist natürlich die Optimierung deines Quelltextes. Möglichst keine Zeile Programmcode zweimal schreiben, sondern in eigene Funktionen abstrahieren - Manchmal sehe ich scripts, die x Zeilen Code gleich 5mal hinschreiben - jeweils im Zweig für ie, ns usw. Da kann man auch sparen.

Eine weitere Möglichkeit ist, das Script in mehrere Dateien aufzuspalten, und bei Bedarf nur die notwendigen einzubinden.
Bei Corssbrowser DHTML-Bibliotheken kann man zuerst den Browser abfragen und dann auf eine Seite weiterleiten, die nur die Bibliotheksteile für den jeweiligen Browser eingebunden hat. Das selbe gilt für komplexere JavaScript Anwendungen:

Lieber mal auf mehrere Seiten verteilen - Dafür braucht man dann nicht auf jeder Seite den gesamten Quellcode - Dh. Die Gesamtladezeit teilt sich auf auf mehrere Seiten. Anfallende Daten kann man ja dann z.B. in einem Frameset ablegen und von dort auch wieder lesen.

mfG,

J.P.Jarolim