Domanda

Qual è il miglior compressore JavaScript disponibile?Sto cercando uno strumento che:

  • è facile da usare
  • ha un tasso di compressione elevato
  • Produrre risultati finali affidabili (non rovinare il codice)
È stato utile?

Soluzione

Ho rilasciato di recente UglifyJS, un compressore JavaScript scritto in JavaScript (funziona su NodeJS Node.js piattaforma, ma può essere facilmente modificato per funzionare su qualsiasi motore JavaScript, poiché non ne ha bisogno Node.js interni).È molto più veloce di entrambi Compressore YUI E Chiusura di Google, si comprime meglio di YUI su tutti gli script su cui l'ho testato ed è più sicuro di Closure (sa gestire "eval" o "with").

Oltre alla rimozione degli spazi bianchi, UglifyJS esegue anche le seguenti operazioni:

  • cambia i nomi delle variabili locali (solitamente in singoli caratteri)
  • unisce dichiarazioni var consecutive
  • evita di inserire parentesi, parentesi e punto e virgola non necessari
  • ottimizza gli IF (rimuove "else" quando rileva che non è necessario, trasforma gli IF in &&, || o ?/:operatori quando possibile, ecc.).
  • trasforma foo["bar"] in foo.bar dove possibile
  • rimuove le virgolette dalle chiavi negli oggetti letterali, ove possibile
  • risolve espressioni semplici quando questo porta a un codice più piccolo (1+3*4 ==> 13)

PS:Oh, può anche "abbellire".;-)

Altri suggerimenti

Riprendendo la questione qualche anno dopo, UglifyJS, sembra essere l'opzione migliore al momento.

Come indicato di seguito, funziona sulla piattaforma NodeJS, ma può essere facilmente modificato per funzionare su qualsiasi motore JavaScript.

--- Vecchia risposta qui sotto ---

Google ha rilasciato Compilatore di chiusura che sembra generare i file più piccoli finora visti Qui E Qui

Prima ancora le varie opzioni erano i seguenti

Fondamentalmente Imballatore fa un lavoro migliore alla compressione iniziale, ma se hai intenzione di comprimere i file prima di inviarli in rete (cosa che dovresti fare) Compressore YUI ottiene la dimensione finale più piccola.

I test sono stati eseguiti sul codice jQuery tra l'altro.

  • Libreria jQuery originale 62.885 byte, 19.758 byte dopo gzip
  • jQuery minimizzato con JSMin 36.391 byte, 11.541 byte dopo gzip
  • jQuery minimizzato con Packer 21.557 byte, 11.119 byte dopo gzip
  • jQuery minimizzato con il compressore YUI 31.822 byte, 10.818 byte dopo gzip

@Daniele Giacomo menziona nel commento compressore che mostra Packer in testa alla classifica con la migliore compressione, quindi immagino ymmv

Compressore YUI è la strada da percorrere.Ha un ottimo tasso di compressione, è ben testato ed è utilizzato da molti dei migliori siti e, beh, personalmente consigliato da me.

L'ho usato per i miei progetti senza un singolo errore o intoppo JavaScript.E ha una bella documentazione.

Non ho mai usato le sue capacità di compressione CSS, ma esistono anche loro. La compressione CSS funziona altrettanto bene.

Nota:Sebbene Dean Edwards /imballatore/ raggiunge un tasso di compressione migliore rispetto a YUI Compressor, ho riscontrato alcuni errori JavaScript durante l'utilizzo.

Io uso ShrinkSafe dal progetto Dojo - è eccezionale perché utilizza effettivamente un interprete JavaScript (Rinoceronte) per occuparsi della ricerca dei simboli nel codice e della comprensione del loro scopo, ecc.il che aiuta a garantire che il codice funzioni quando esce dall'altra parte, al contrario di molti strumenti di compressione che utilizzano regex per fare lo stesso (che non è altrettanto affidabile).

In realtà ho un'attività MSBuild in a Progetto di distribuzione Web nella mia attuale soluzione Visual Studio che esegue uno script che a sua volta esegue tutti i file JS della soluzione tramite ShrinkSafe prima della distribuzione e funziona abbastanza bene.

MODIFICARE: A proposito, il "migliore" è oggetto di dibattito, poiché i criteri per il "migliore" varieranno a seconda delle esigenze del progetto.Personalmente, penso che ShrinkSafe sia un buon equilibrio;per alcune persone che pensano che la taglia più piccola == migliore, sarà insufficiente.

MODIFICARE: Vale la pena notare che anche il compressore YUI utilizza Rhino.

Tentativo JSMin, ha C#, Java, C e altri port e sono anche prontamente disponibili.

Se usi Packer, vai oltre l'opzione "riduci variabili" e compressi il codice risultante.L'opzione base62 è valida solo se il tuo server non può inviare file compressi con gzip.Packer con 'shrink vars' ottiene una migliore compressione della YUI, ma può introdurre bug se hai saltato un punto e virgola da qualche parte.

base62 è fondamentalmente un gzip dei poveri, motivo per cui il codice gzipping base62 fornisce file più grandi rispetto al codice gzip restringibile.

JSMin è un altro.

Nel cercare proiettile d'argento, ho trovato questa domanda.Per Ruby on Rails http://github.com/sstephenson/sprockets

Ecco il codice sorgente di un HttpHandler che lo fa, forse ti aiuterà

Qui è uno script di compressione YUI (Byuic) che trova tutti i js e i css lungo un percorso e li comprime /(facoltativo) li offusca.Bello da integrare in un processo di creazione.

bananascript.com mi dava i migliori risultati.

KJScompress

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

KJScompress/CSSKOMPRET è l'insieme di due applicazioni (KJSCOMPRET a CSSComCress) per rimuovere spazi bianchi non significativi e commenti da file contenenti JavaScript e CSS.Entrambi sono applicazioni di riga di comando per il sistema operativo GNU/Linux.

Js Crush è un buon compressore da utilizzare dopo aver minimizzato.

Io uso jscompressor.com come app Chrome.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top