JavaScript komprimieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JavaScript komprimieren

    Hi Leute,
    hat einer von euch eine Idee mit welchem Code man seine JavaScripts verkleinern kann.
    Sicherlich kenn ich die Möglichkeit den Code über PHP mit gzip zu komprimieren.

    Dieses Verfahren wird hier beschrieben:
    http://wyome.com/docs/Compressing_Javascript_with_PHP

    Auch suche ich kein Verfahren, dass mir den Code verschlüsselt und dann mit tausend verschachtelten evals den Code interpretiert.

    Auch kommerzielle JavaScript Obfuscator helfen mir nicht wirklich. Die Programme wollen den Code alle nur unleserlich machen. Konvertieren normale Zeichen in ASCII Zeichen und so ein Müll...

    Ich bin aber auf der Sache nach einem Tool, welches den Code wie bei den Google APIs komprimiert:
    http://maps.google.com/mapfiles/maps2.67.api.js

    Ich will meinen Code nicht schützen, ich will ihn komprimieren.
    Ich denke da kann man einiges rausholen.

    Bei den Google APIs werden Funktionen und Variablennamen durch möglichst wenige Buchstaben ersetzt. Kommentare werden natürlich auch gelöscht

    Mit regulären Ausdrücken ist das auf jeden Fall zu realisieren (wenn auch nicht in 10Minuten) - aber bestimmt gibts schon eine Möglichkeit...

    Danke
  • Hi,

    also ich hatte mal n programm da mit dem der quelltext so konvertiert wurde das keine unnötigen leerzeichen mehr im code enthalten waren... aber das macht imho wohl auch erst bei einigen tausend zeilen code sinn. ich wollte damals nach einem prog suchen das mein html "code" verschlüsseln konnte. das ist allerdings auch schon ein paar jahre her und ich hab es dann auch gelassen.


    vlt hilft dir das ja ;)

    mfg BendIt
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Hey,

    hab extra für dich die ganze Zeit bei Google gesucht :)
    Und bin schließlich auch fündig geworden! Erst habe ich nur Tools gefunden, die Leerzeichen usw. entfernen, aber nach langer Sucherei habe ich ein Programm entdeckt, das auch Variablennamen verändert.
    Aus

    Quellcode

    1. //detect which browser is used
    2. var detect = navigator.userAgent.toLowerCase();
    3. var OS,browser,version,total,thestring;
    4. if (checkIt('konqueror'))
    5. {
    6. browser = "Konqueror";
    7. OS = "Linux";
    8. }
    9. else if (checkIt('opera')) browser = "Opera"
    10. else if (checkIt('msie')) browser = "Internet Explorer"
    11. else if (!checkIt('compatible'))
    12. {
    13. browser = "Netscape Navigator"
    14. version = detect.charAt(8);
    15. }
    16. else browser = "An unknown browser";
    17. //version of browser
    18. if (!version) version = detect.charAt(place + thestring.length);
    19. //client OS
    20. if (!OS)
    21. {
    22. if (checkIt('linux')) OS = "Linux";
    23. else if (checkIt('x11')) OS = "Unix";
    24. else if (checkIt('mac')) OS = "Mac"
    25. else if (checkIt('win')) OS = "Windows"
    26. else OS = "an unknown operating system";
    27. }
    28. //check the string
    29. function checkIt(string)
    30. {
    31. place = detect.indexOf(string) + 1;
    32. thestring = string;
    33. return place;
    34. }
    Alles anzeigen


    wird

    Quellcode

    1. var e=navigator.userAgent.toLowerCase();var f,b,c,total,d;if(a('konqueror')){b="Konqueror";f="Linux";};else if(a('opera'))b="Opera";else if(a('msie'))b="Internet Explorer";else if(!a('compatible')){b="Netscape Navigator";c=e.charAt(8);};else b="An unknown browser";if(!c)c=e.charAt(g+d.length);if(!f){if(a('linux'))f="Linux";else if(a('x11'))f="Unix";else if(a('mac'))f="Mac";else if(a('win'))f="Windows";else f="an unknown operating system";};function a(string){g=e.indexOf(string)+1;d=string;return g;};


    Im Forum kann man das jetzt nicht wirklich gut erkenne, wegen den entfernten Umbrüchen.
    Das Tool ist leider für Windows gedacht, aber es gibt ja wine ^^ Ich habe es auch ausprobiert, es hat erst funktioniert, jetzt i-wie mehr, er ändert die Namen von Variablen und Funktionen nicht. Vielleicht auch, weil es nicht die Premium Version ist?

    Also, hier der Link http://www.javascript-source.com/de/index.html
    Ich hoffe das hilft dir weiter :) Auf Download gibts die unregistrierte Version... Vllt funzt sie ja bei dir?

    Liebe Grüße,
    David
  • hi,
    danke schonmal für die Antworten. Habe noch ein weiteres vielversprechendes Windows Tool gefunden:
    http://www.javascript-source.com/tutorial.html

    Hm, nur leider muss ich inzwischen doch einsehen, dass ich entweder ein linux Tool oder ein Tool in einer anderen Websprache brauche.
    Automatisierung ist Pflicht.

    Werde mir mal PHPJSO anschauen. Dort wird zwar auch wieder viel mit evals gearbeitet, aber immerhin ist es OpenSource..

    Aber vielleicht hat ja bereits jemand eine PHP/Perl/Ruby Klasse.
  • Hallo , hast du mal folgendes Script entdeckt ?

    ScripZip - Javascript komprimieren

    Zwar evtl etwas komplizierter einzubauen, aber dafür mit jedem System / Seite nutzbar. Ich denke das ist genau was du suchst.
    Es komprimiert Scripts (Js & CSS) sozusagen on the fly bei einem Request der Datei. Genau wie von dir gewünscht werden vorher unnötige Leerzeichen, Zeilenumbrüche, Kommentare usw. entfernt.
    So spart das Script ca. 75-85% der Dateigröße ein.

    Das einzige was das Script nicht macht ist die Variablen- und Funtionsnamen zu verkürzen. Wenn nämlich das ganze GZip komprimiert übertragen wird ist das 1. eh nur ein tropfen auf den heisen Stein (Änderung < 1%) und 2. könnte man Probleme mit seinen HTML Dateien bekommen wenn die Funktionen plötzlich alle anders heißen.

    Zusätzlich (bedenken nur wenige und wurde hier noch gar nicht erwähnt) benutzt das ganze den sog. Browser-Cache bzw. Conditional-Get. Das heist das Script liefert die Datei nicht bei jedem Aufruf auch aus.

    Sollte an den Request Headern, die der Browser schickt, zu erkennen sein das er die Datei bereits in seinem Cache hält, wird der Browser nur mit einen enstprd. Header informiert das sich diese nicht verändert hat. Der Inhalt der Datei wird dabei nicht neu versendet ( Ersparnis 100% !!! )
    Kannst es ja mal testen und deine Meinung schreiben ... würde mich freuen.

    Gruß Gagget
    Schreib Artikel gegen Geld - Lupuz.de - Die offene Artikel Community