Ich versuche, einen Webfilter zu erstellen (oder einen vorhandenen zu finden, den ich verwenden kann), der eine JavaScript-Datei zur Laufzeit komprimiert. Ich habe versucht, eine basierend auf YUICompressor zu bauen, aber ich bekomme merkwürdige Fehler daraus, wenn ich versuche, eine String-basierte Quelle anstelle einer tatsächlichen Datei hinein zu geben.
Jetzt erwarte ich, dass ich mit Antworten wie "Echtzeitkomprimierung / Minification ist eine schlechte Idee" bombardiert werde, aber es gibt einen Grund, warum ich es nicht zur Build-Zeit machen will.
Ich habe eine JavaScript-Webanwendung, die faul JavaScript lädt. Es wird nur geladen, was es tatsächlich benötigt. Die JavaScript-Dateien können Abhängigkeiten angeben und ich habe bereits einen Filter, der die angeforderten Dateien und alle Abhängigkeiten, die nicht bereits in eine einzelne Antwort geladen sind, verkettet. Dies bedeutet, dass es eine große Anzahl von verschiedenen Kombinationen im JavaScript gibt, die an den Benutzer gesendet werden, was es unmöglich macht, alle Pakete zum Zeitpunkt der Erstellung zu erstellen.
Also neu zu formulieren. Im Idealfall suche ich nach einem vorhandenen Echtzeit-Javascript-Filter, den ich einfach in meine App einstecken kann.
Wenn es eines nicht gibt, suche ich nach Tipps, was ich als Bausteine verwenden kann. YUICompressor hat mich nicht ganz dorthin gebracht und GoogleClosure scheint nur eine Web-API zu sein.
Prost, Peter
Ich habe bereits einen Filter, der das wird Verketten Sie die angeforderten Dateien und alle Abhängigkeiten nicht bereits geladen in eine einzige Antwort
Sooo .. Warum nicht einfach diejenigen vor dem Laden / Verketten minimieren?
(Und ja, Komprimierung im laufenden Betrieb ist furchtbar teuer und definitiv ist es nicht wert, für jede .js-Datei zu verwenden)
Schauen Sie sich The JavaScript Minifier von Douglas Crockford an. Die Quelle ist hier: JSMin.java
. Es ist kein Filter und enthält nur den zu minimierenden Code. Wir haben es zu einem Filter gemacht, in dem wir JavaScript auch im laufenden Betrieb kombinieren und minimieren. Es funktioniert gut, besonders wenn Sie Browser und einen CDN-Cache haben.
Update: Ich habe vergessen, dass wir sie auch auf dem Server zwischenspeichern. Sie werden nur neu generiert, wenn sich eines der Assets geändert hat, die für die kombinierte und minimierte Ausgabe erforderlich sind. Im Grunde, anstatt sie zur Build-Zeit zu "kompilieren", behandeln wir jede Kombination einmal zur Laufzeit.
Tags und Links javascript java compression filter minify