2011-10-18 13 views
5

Recentemente ho rilevato un progetto perché i miei precedenti Web Dev sono scomparsi. Gli unici file con cui devo lavorare sono ciò che è memorizzato sul server locale. L'unico problema che ho riscontrato è che tutto il JS è stato eseguito tramite Closure Compiler (o qualcosa del genere) che rende il javascript davvero fastidioso da leggere (almeno per le funzioni più grandi). C'è qualcosa là fuori che mi aiuterebbe a rimpiazzare i vars in JS, quindi ho qualcosa di più pulito da guardare? L'ho fatto a mano e sta diventando piuttosto noioso.C'è un modo per invertire gli effetti Closure Compiler (o simili) sul codice?

Ecco un esempio di quello che ho a che fare con:

var n = {}, 
     e = a.extend(n, x), 
     y = "pageLoaded", 
     u = "pageLoading", 
     c = "modLoaded", 
     w = "xhrComplete", 
     l = true, 
     v = false, 
     s = a("body"), 
     g = Modernizr.historymanagement, 
     f = "", 
     t = "", 
     r = "", 
     k = null, 
     b = window.History; 

Grazie prima del tempo!

Tre

+1

Se è compilato con ADVANCED MODE, non credo che sia possibile. La trasformazione in modalità avanzata del compilatore di chiusura è a senso unico. La mappatura non è one-one o on, quindi non puoi tornare alla fonte originale. Il JavaScript compilato è fortemente ottimizzato e riscritto per essere estremamente efficiente. Tuttavia, se il codice viene semplicemente minimizzato tramite MODALITÀ SEMPLICE, è possibile eseguire una semplice sostituzione dei nomi delle variabili. A giudicare dal tuo codice, probabilmente è MODALITÀ SEMPLICE, perché altrimenti la funzione "estendi" sotto "a" verrà rinominata. –

+0

E non "odora" come l'output del Closure Compiler. Può essere imballato con qualche altro minificatore. –

risposta

2

No. E 'munged. Ad un certo livello è possibile sostituire i token quando vengono assegnati valori letterali: è possibile, ad esempio, sostituire tutte le istanze di l con true e v con false nel codice. Ma ci sono altre cose che farebbe molto più difficile da invertire e non credo che nessuno ci abbia messo molto impegno.

+0

Ah, non mi ero reso conto che esistesse un termine per questo. Grazie per il testa a testa. Ma ho pensato tanto. Sto collegando vars a roba che mi servono, solo così non mi perdo. È davvero piuttosto fastidioso. – tr3online

+1

Il lavoro con il codice offuscato e mungito è difficile. L'inversione è doloroso. La sostituzione delle variabili con i rispettivi valori letterali è probabilmente la cosa più semplice da fare e non dovrebbe richiedere molto tempo (potrebbe essere fatto con un tokeniser JavaScript, o con un grado più irregolare con semplici espressioni regolari, ma non sono a conoscenza di alcun utilities per farlo - non ho mai guardato molto, però, ci possono essere). Quindi, inoltre, ridefinisce ulteriormente l'uso di nomi di variabili significative. –

+0

Esistono strumenti che consiglieresti? Qualcosa con un vero supporto per il refactoring? – FloydThreepwood

0

provare uno dei abbellitori Javascript online, come this one

+0

Dall'esempio fornito, sembra che sia già stato eseguito tramite un beautifier; Penso che stiano cercando un modo per rinominare facilmente le variabili. – icktoofay

+0

Sì, non ho bisogno di abbellimenti. Mi sto solo chiedendo se per me c'è un modo semplice per sostituire i vars senza doverlo fare a mano. Mi sento un po 'perso nel codice quando tutte le cose si riferiscono a 's.removeClass (" wait ")' 100 righe in basso, ecc. – tr3online

Problemi correlati