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.
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…
Vielleicht hätte ich mal dazuschreiben sollen wozu ich das überhaupt benötige
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
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 )
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!
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)
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/
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 ?
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:
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/
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.