Frage

Was ist der beste verfügbare JavaScript-Kompressor?Ich suche ein Werkzeug, das:

  • ist einfach zu bedienen
  • hat eine hohe Komprimierungsrate
  • Zuverlässige Endergebnisse liefern (den Code nicht durcheinander bringen)
War es hilfreich?

Lösung

Ich habe es kürzlich veröffentlicht UglifyJS, ein JavaScript-Kompressor, der in JavaScript geschrieben ist (läuft auf NodeJS Node.js Plattform, kann aber leicht geändert werden, um auf jeder JavaScript-Engine ausgeführt zu werden, da keine erforderlich ist Node.js Einbauten).Es ist viel schneller als beides YUI-Kompressor Und Google-Schließung, es komprimiert besser als YUI bei allen Skripten, an denen ich es getestet habe, und es ist sicherer als Closure (kann mit „eval“ oder „with“ umgehen).

Neben der Entfernung von Leerzeichen führt UglifyJS auch Folgendes aus:

  • Ändert lokale Variablennamen (normalerweise in einzelne Zeichen)
  • Verbindet aufeinanderfolgende var-Deklarationen
  • vermeidet das Einfügen unnötiger Klammern, Klammern und Semikolons
  • optimiert IFs (entfernt „else“, wenn festgestellt wird, dass es nicht benötigt wird, wandelt IFs in &&, || oder ?/ um:wenn möglich, usw.).
  • verwandelt foo["bar"] hinein foo.bar wo möglich
  • Entfernt nach Möglichkeit Anführungszeichen aus Schlüsseln in Objektliteralen
  • löst einfache Ausdrücke auf, wenn dies zu kleinerem Code führt (1+3*4 ==> 13)

PS:Oh, es kann auch „verschönern“.;-)

Andere Tipps

Ich greife diese Frage ein paar Jahre später noch einmal auf: UglifyJS, scheint derzeit die beste Option zu sein.

Wie unten angegeben, läuft es auf der NodeJS-Plattform, kann aber leicht geändert werden, um auf jeder JavaScript-Engine ausgeführt zu werden.

--- Alte Antwort unten---

Google veröffentlicht Abschluss-Compiler das scheint bisher die kleinsten Dateien zu erzeugen Hier Und Hier

Davor die verschiedenen Optionen waren wie folgt

Grundsätzlich Packer leistet bei der anfänglichen Komprimierung einen besseren Job, aber wenn Sie die Dateien vor dem Versenden per GZIP komprimieren (was Sie tun sollten) YUI-Kompressor erhält die kleinste Endgröße.

Die Tests wurden übrigens mit jQuery-Code durchgeführt.

  • Ursprüngliche jQuery-Bibliothek 62.885 Bytes, 19.758 Bytes nach gzip
  • jQuery minimiert mit JSMin 36.391 Bytes, 11.541 Bytes nach gzip
  • jQuery minimiert mit Packer 21.557 Bytes, 11.119 Bytes nach gzip
  • jQuery minimiert mit dem YUI-Kompressor 31.822 Bytes, 10.818 Bytes nach gzip

@Daniel James Erwähnungen im Kommentar Kompressorrater was zeigt, dass Packer bei der besten Komprimierung die Tabelle anführt, also schätze ich ymmv

YUI-Kompressor ist der richtige Weg.Es verfügt über eine hervorragende Komprimierungsrate, ist gut getestet und wird von vielen Top-Websites verwendet und, nun ja, von mir persönlich empfohlen.

Ich habe es für meine Projekte verwendet, ohne einen einzigen JavaScript-Fehler oder -Schluckauf.Und es gibt eine schöne Dokumentation.

Ich habe die CSS-Komprimierungsfunktionen nie genutzt, aber es gibt sie auch. Die CSS-Komprimierung funktioniert genauso gut.

Notiz:Obwohl Dean Edwards' /Packer/ eine bessere Komprimierungsrate als YUI Compressor erreicht, sind mir bei der Verwendung einige JavaScript-Fehler aufgefallen.

ich benutze ShrinkSafe aus dem Dojo-Projekt - Es ist außergewöhnlich, weil es tatsächlich einen JavaScript-Interpreter verwendet (Nashorn), um sich mit der Suche nach Symbolen im Code und dem Verständnis ihres Umfangs usw. zu befassen.Dadurch wird sichergestellt, dass der Code funktioniert, wenn er am anderen Ende ausgegeben wird, im Gegensatz zu vielen Komprimierungstools, die Regex verwenden, um dasselbe zu tun (was nicht so zuverlässig ist).

Ich habe tatsächlich eine MSBuild-Aufgabe in einem Web-Bereitstellungsprojekt In meiner aktuellen Visual Studio-Lösung wird ein Skript ausgeführt, das wiederum alle JS-Dateien der Lösung vor der Bereitstellung über ShrinkSafe ausführt, und es funktioniert recht gut.

BEARBEITEN: Über „am besten“ lässt sich übrigens streiten, da die Kriterien für „am besten“ je nach den Anforderungen des Projekts variieren.Persönlich denke ich, dass ShrinkSafe eine gute Balance ist;Für einige Leute, die denken, dass die kleinste Größe am besten ist, wird es nicht ausreichen.

BEARBEITEN: Es ist erwähnenswert, dass der YUI-Kompressor auch Rhino verwendet.

Versuchen JSMin, hat C#, Java, C und andere Ports und ist auch leicht verfügbar.

Wenn Sie Packer verwenden, wählen Sie einfach die Option „Variablen verkleinern“ aus und komprimieren Sie den resultierenden Code.Die Base62-Option ist nur für den Fall gedacht, dass Ihr Server keine gzip-Dateien senden kann.Packer mit „shrink vars“ erreichen eine bessere Komprimierung der YUI, können aber zu Fehlern führen, wenn Sie irgendwo ein Semikolon übersprungen haben.

base62 ist im Grunde ein gzip für arme Leute, weshalb Sie beim Gzippen von base62-ed-Code größere Dateien erhalten als beim gzipping von Shrink-Var-ed-Code.

JSMin ist noch einer.

Bei der Suche in Silver Bullet fand diese Frage.Für Ruby on Rails http://github.com/sstephenson/sprockets

Hier ist der Quellcode eines HttpHandlers, der das tut, vielleicht hilft es Ihnen

Hier ist ein YUI-Kompressorskript (Byuic), der alle JS- und CSS-Dateien in einem Pfad findet und komprimiert bzw. (optional) verschleiert.Lässt sich gut in einen Build-Prozess integrieren.

bananscript.com Früher habe ich die besten Ergebnisse erzielt.

KJScompress

http://opensource.seznam.cz/KJScompress/index.html

KJSComPress/CSSKOMPRESS ist eine Reihe von zwei Anwendungen (KJSCompress a CSSCompress), um nicht signifikante Whitespaces und Kommentare aus Dateien mit JavaScript und CSS zu entfernen.Beide sind Befehlszeilenanwendungen für GNU/Linux-Betriebssystem.

Js Crush ist ein guter Kompressor, den Sie nach der Minimierung verwenden können.

ich benutze jscompressor.com als Chrome-App.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top