Javascript compilieren. Also zusammenfassen

Hi Leute,

ich habe ein Javascript, bei dem ich, zur übersichtlichkeit beim Scripten, jeden Befehl in eine Zeile und eingerückt und alles geschrieben habe.

Jetzt ist das Ganze großigroß bis zum Himmel und ich möchte es verkleinern. Dazu gucke ich mir so manch anderes Script an, und merke dass die einfach ALLES hintereinander in eine Zeile geschreibselt haben.

Welchen Tipp gebt ihr mir, um das zu erreichen. Ist das wirklich so einfach und ich muss nur alle Zeilenumbrüche und Tabs durch „“ ersetzen?

Oder gibt es da irgend eine Krux dahinter.

Mir ist klar dass ich alle Befehle mit ; abschließen muss, und alle //Kommentare durch /*Kommentare*/ ersetzen muss.

Ich habe es bei meinem Script mit obiger Variante versucht, laufe dann aber auf einen Fehler, wobei ich die Schuld nicht von mir weisen will, da es natürlich auch ein allgemeiner Syntax-fehler sein kann.

Irgendwelche Tips?

Hi kleiner,
ich würde Dir dringend davon abraten alles in eine Zeile zu schreiben, das verringert die „Lesbarkeit“ enorm.
Ausserdem, was hast Du davon? Nun musst Du zur Seite scrollen statt nach unten!
Und Dein fertig compiliertes Programm wird dadurch auch nicht kleiner - also die Dateigrösse.
Wenn Du unbedingt die Zeilenzahl verringern willst fasse halt lieber nur zusammengehörige Blocks, wie Schleifen und so, zusammen, so bleibt wenigstens ein bissel von der Übersichtlichkeit erhalten.
Für die Fehlermeldung: Schau Dir doch an was es für ein Fehler ist und wo er aufgetreten ist, also die Zeilenzahl … achso, das geht ja mit nur einer Zeile schlecht… :stuck_out_tongue:

Hi zottel, :smile:

Vielleicht hätte ich mal dazuschreiben sollen wozu ich das überhaupt benötige :smile:

Die Idee ist Folgende: Ich habe ein kleines „PlugIn“ geschrieben, dass ich unter der GNU GPL auf meiner Seite anbiete. Das Entwickeln würde bei mir auf dem Skript mit Zeilenumbrüchen und allem TamTam passieren. Dann wird getestet, gedebugt, gebugfixt, und dann wird das Ganze gekürzt und hinaus in die Welt getragen.

Die Lesbarkeit ist mir ab dem Moment wurscht, wenn das ding draußen ist. Denn bei mir hab ich ja die „uncompilierte“ Version im Source Control liegen.

Zum verkleinern:
Glaubst du nicht, dass ein Skript dass von seinen ganzen Cr/Lf und Tabs getrennt wird, automatisch kleiner wird? jetzt stell dir mal ein 600 Zeiliges Script vor. Das heißt dann du hast 600 Cr/Lf (Was meiner Meinung nach zwei Zeichen sind, die irgendwie in der Textdatei (ASCII?) gespeichert werden müssen. Dann hat man sagen wir mal Durchschnittlich einen Tab pro Zeile sind noch mal 600 Zeichen. Heißt ich spare 1800 Zeichen ein. Ich denke schon dass das was ausmacht…

Aber ich kann mich natürlich Irren. Wär mal nen Test wert :smile:

Alles in eine Zeile??
Der Sinn kann doch nur sein,
um andern das Lesen zu erschweren.
Sonst sehe ich keinen.

OK, OK,
ich hätte mal besser aufpassen sollen das es hier um Javascript geht. Kann mir aber ehrlich gesagt trotzdem nicht vorstellen, dass das viel ausmacht. Kannst ja ausprobieren, wenn die verkleinerte Version funktioniert! (halt mich auf dem Laufenden :smile: )
Dafür brauchst Du aber weiterhin die genaue Fehlermeldung. Sagt Dir Deine Entwicklungsumgebung nicht was für ein Fehler auftrat und wo?
Kann Dir leider nichts Entsprechendes empfehlen, falls nicht - hab scho lang nimmer gescripted / programmiert. Aber da find’st Du schon was!

Hallo,

auf Anhieb würde ich mal sagen: Nimm statt „“ ein Leerzeichen (" "), nachdem der JS-Code ohne Komprimierung fehlerfrei läuft.

Alternativ gibt es auch Online JS Kompressoren. In der Suchmaschine deiner Wahl einfach nach „js code komprimieren“. (Vorher auch wieder alles fehlerfrei machen -> Tipp: Firefox Webdeveloper-Toolbar zum Debuggen nehmen)

LG aus OÖ

Anton

Moin moin,

für solche Anforderungen gibt es bereits fertige Tools.
Einfach bei Google nach Javascript Compressor suchen.

Folgender Compressor packt nicht nur alles in eine Zeile, er analysiert (falls gewünscht) auch den Code - Schmeißt unnütze Codeblöcke raus, entfernt Kommentare und vieles mehr.
http://code.google.com/p/closure-compiler/

Viele Grüße

Hallo Klein-Artur,

Ich hatte ein ähnliches Problem mit PASCAL, das ich mit einem FORMATTER-Programm gelöst habe. Dieses interpretierte zugehörige Kennworte und rückte die jeweils nächste Hierarchie entsprechen weiter ein. Dabei konnten eventuelle Programmierfehler leichter entdeckt werden, zum Beispiel fehlende/falsche Enden von Abfragen und Schleifen. Wenn ich die Datei noch finde, kann ich sie Dir als neue Antwort schicken.

Ich schlage vor, Deine Groß-Version aufgrund der Übersichtlichkeit beizubehalten und jeweils eine zweite komprimierte danebenzustellen, am besten mit einem Sonderzeichen dahinter ( zum Beispiel „_“ noch vor dem Punkt ), damit im Directory die Aufzählung immer paarweise unter/hintereinander steht. Aus dieser Kurz-Version kannst Du dann auch alle Kommentare entfernen. Diese Variante ist dann fast nicht mehr lesbar, was eventuell als Kopierschutz gelten kann.

Wäre das nicht ein großartiges JavaScript-Projekt ?
Zeilenweises Einlesen einer Datei, Entfernen der Kommentare und Zusammenfassen bis kurz vor dem Überschreiten einer vorgegebenen Zeilen-Maximal-Länge in eine Ausgabedatei ?

Mit Gruß,
Frank-Thomas

Hi,

für dich als Entwickler des Sourcecodes ist es eigentlich sehr wichtig, dass du deinen Sourcecode weiterhin lesen kannst.

Ich empfehle daher das Javascript nur für den Produktiv- (evtl. auch bei öffentlichen Test-) Betrieb zu verkleinern.

Das selbst zu machen (und auch noch bei jedem Release) ist aber fehleranfällig und Zeitaufwändig.

Es gibt aber einige Tools die dir das machen können:

  1. YUI Compressor
    Ist ein CommandLine Tool.
    Kümmert sich auch um dein CSS wenn du willst.
    Kannste somit auch in deinen automatischen Build integrieren, falls du sowas einsetzt.
    http://yui.github.com/yuicompressor/

  2. Javascript Obfuscator
    Online Tool.
    Javascript einfügen. Knopf drücken und Ergebnis kopieren.
    http://www.javascriptobfuscator.com/

  3. Google Closure compiler
    Auch ein Online Tool, aber der kann deinen Code auch noch optimieren.
    http://closure-compiler.appspot.com/home

Das sind nur die, die ich auf die schnelle parat hatte.
Gibt sicher nocheinige weitere.

Hoffe, ich konnte helfen.

Grüße
Jens

Hi Leute,

ich habe ein Javascript, bei dem ich, zur übersichtlichkeit
beim Scripten, jeden Befehl in eine Zeile und eingerückt und
alles geschrieben habe.

Jetzt ist das Ganze großigroß bis zum Himmel und ich möchte es
verkleinern.

Welchen Tipp gebt ihr mir, um das zu erreichen?

Genau dafür benötige ich das ja auch. :smile: Wär ja n Schuss ins eigene Bein. :smile:

Danke!!! :smile:

lg

Artur

Wenn es dir um die Größe des verbrauchten Speichers geht, macht es keinen Unterschied, ob du alles hintereinander oder untereinander geschrieben hast.
Ich empfehle dir den Code so zu schreiben wie er für dich am übersichtlichsten ist! Falls du jemals später Änderungen daran durchführen musst.
Mit einem Kompiler hat das ganze nichts zu tun ein Kompiler übersetzt den geschriebenen Code in eine Maschinensprache aus 0 und 1 … zumindest so ungefähr.
Generell steht bei Programmierung heute immer weniger Speicher oder Geschwindigkeit im Vordergrund weil die Hardware einfach immer leistungsfähiger wird, sonder viel mehr die Lesbarkeit, Verständlichkeit und Erweiterbarkeit des geschriebenen Codes.
Mfg
DC

Hallo „klein-artur“,
vielleicht hast du die Objekthierarchie nicht eingehalten. Welches Objekt ist welchem anderen Objekt über- bzw. untergeordnet: window-Objekt (Fenster[inhalt] verändernde Methoden/Eigenschaften), gefolgt von den Objekten Location (speichert aktuelle Web-Adresse/ruft neue Seiten auf), History (ruft besuchte Seiten auf) und document-Objekt (aktuelles Dokument verändernde Metoden/Eigenschaften im Browserfenster), z. B write (Methode des document-Objekts innerhalb des Objekts window). So muss die gesamte Zeile zum Ausgeben des Textes lauten: windows.document.write (""). Anstelle von write innerhalb des Objekts window sind weitere document-Objekte untergeordnet, z. B. Image, Form, Math., Date, screen navigator String.

Überprüfe Deine Aufzeichnungen daraufhin. Vielleicht klappt es jetzt.

fuchs6

Hallo,

es gibt Tools, die das Javascript automatisch für die komprimieren können. Such mal danach bei Google.

Gruß
Chris