2011-10-18 19 views
5

Recientemente me hice cargo de un proyecto porque desapareció el desarrollador web anterior de mis clientes. Los únicos archivos con los que tengo que trabajar son los que están almacenados en el servidor local. El único problema con el que me he encontrado es que todos los JS se han ejecutado a través de Closure Compiler (o algo similar), lo que hace que javascript sea realmente molesto de leer (al menos para las funciones más grandes). ¿Hay algo por ahí que me ayude a volver a conectar vars en JS entonces tengo algo más limpio que mirar? Lo he estado haciendo a mano y se está volviendo bastante tedioso.¿Hay alguna forma de revertir los efectos del compilador de cierre (o similares) en el código?

He aquí un ejemplo de lo que estoy tratando 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; 

Gracias de antemano!

Tre

+1

Si está compilado con MODO AVANZADO, no creo que puedas. La transformación de modo avanzado del compilador Closure es unidireccional. El mapeo no es uno o uno, por lo que no puede volver a la fuente original. El JavaScript compilado está muy optimizado y reescrito para ser extremadamente eficiente. Sin embargo, si el código es simplemente minimizado a través de SIMPLE MODE, entonces puede hacerlo con el reemplazo simple de nombres de variables. A juzgar por su código, probablemente sea SIMPLE MODE, porque de lo contrario la función "extender" debajo de "a" cambiará de nombre. –

+0

Y no "huele" como la salida del compilador de cierre. Puede estar lleno de algún otro minificador. –

Respuesta

2

No. Es munged. Hasta cierto punto, puede reemplazar tokens cuando se asignan literales; puede, por ejemplo, reemplazar todas las instancias de l con true y v con false en el código. Pero hay otras cosas que sí que serían mucho más complejas de revertir y no creo que nadie haya puesto mucho esfuerzo en ello.

+0

Ah, no me di cuenta de que había un término para esto. Gracias por el aviso. Pero, pensé que sí. He estado conectando vars en cosas que necesito, solo para no perderme. Realmente es bastante molesto – tr3online

+1

Trabajar con código ofuscado y munged es difícil. Revertirlo es doloroso. La sustitución de las variables con sus literales respectivos es probablemente lo más fácil de hacer y no debería tomar mucho tiempo (podría hacerse con un tokenizador JavaScript, o en un grado más desigual con expresiones regulares simples, pero no conozco ningún utilidades para hacerlo - nunca he visto mucho, sin embargo, puede haber). Luego también refactorizarlo para usar nombres de variables significativos. –

+0

¿Hay alguna herramienta que recomiende? Algo con soporte de refactorización real? – FloydThreepwood

0

probar uno de los embellecedores de Javascript en línea, como this one

+0

Según el ejemplo proporcionado, parece que ya se ejecutó a través de un embellecedor; Creo que están buscando una forma de cambiar el nombre de las variables fácilmente. – icktoofay

+0

Sí, no necesito embellecimiento. Me pregunto si hay una manera simple de volver a conectar vars sin tener que hacerlo a mano. Me pierdo un poco en el código cuando todas las cosas se refieren a 's.removeClass (" wait ")' 100 líneas abajo, etc. – tr3online

Cuestiones relacionadas