2011-10-18 7 views
5

Tôi vừa mới tiếp quản một dự án vì khách hàng tiềm năng web trước của tôi đã biến mất. Các tệp duy nhất mà tôi phải làm việc là những tệp được lưu trữ trên máy chủ cục bộ. Vấn đề duy nhất tôi gặp phải là tất cả các JS đã được chạy thông qua Closure Compiler (hoặc một cái gì đó tương tự) mà làm cho javascript thực sự gây phiền nhiễu để đọc (ít nhất là cho các chức năng lớn hơn). Có bất cứ điều gì ngoài đó sẽ giúp tôi replug vars trong JS vì vậy tôi có một cái gì đó sạch hơn để xem xét? Tôi đã làm nó bằng tay và nó nhận được khá tẻ nhạt.Có cách nào để đảo ngược hiệu ứng Closure Compiler (hoặc tương tự) trên mã không?

Dưới đây là một ví dụ về những gì tôi đang đối phó với:

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; 

Cảm ơn trước thời hạn!

Tre

+1

Nếu nó được biên soạn với chế độ nâng cao, tôi không nghĩ rằng bạn có thể. Chuyển đổi chế độ nâng cao của trình biên dịch đóng cửa là một chiều. Ánh xạ không phải là một hoặc lên, vì vậy bạn không thể quay trở lại nguồn gốc. JavaScript được biên dịch được tối ưu hóa và viết lại rất hiệu quả. Tuy nhiên, nếu mã chỉ đơn giản là minified qua SIMPLE MODE, thì bạn có thể làm với việc thay thế đơn giản các tên biến. Đánh giá từ mã của bạn, nó có thể là chế độ SIMPLE, bởi vì nếu không thì chức năng "mở rộng" trong "a" sẽ được đổi tên. –

+0

Và nó không "ngửi" như đầu ra từ Trình biên dịch đóng cửa. Nó có thể được đóng gói với một số minifier khác. –

Trả lời

2

số Nó munged. Ở một mức độ nhất định, bạn có thể thay thế mã thông báo khi chỉ định các chữ cái - ví dụ: bạn có thể thay thế tất cả các phiên bản l bằng truev bằng false trong mã. Nhưng có những thứ khác mà nó sẽ phức tạp hơn nhiều để đảo ngược và tôi không tin rằng ai đó đã nỗ lực nhiều vào nó.

+0

Ah, tôi đã không nhận ra có một thuật ngữ cho việc này. Cảm ơn cho những người đứng đầu lên. Nhưng, tôi đã tìm được nhiều. Tôi đã cắm vars vào những thứ tôi cần, chỉ vì vậy tôi không bị lạc. Nó thực sự là khá khó chịu. – tr3online

+1

Làm việc với mã obfuscated và munged là khó khăn. Đảo ngược nó là đau đớn. Thay thế các biến với các chữ cái tương ứng của chúng có lẽ là điều dễ nhất để làm và không nên mất nhiều thời gian (có thể được thực hiện với trình thông báo JavaScript hoặc mức độ khó khăn hơn với các biểu thức thông thường đơn giản, nhưng tôi không biết tiện ích để làm điều đó - tôi chưa bao giờ nhìn nhiều, mặc dù, có thể có). Sau đó, cũng refactor nó hơn nữa để sử dụng tên biến có ý nghĩa. –

+0

Có công cụ nào bạn muốn giới thiệu không? Một cái gì đó với hỗ trợ tái cấu trúc thực sự? – FloydThreepwood

0

Hãy thử một trong những beautifiers Javascript trực tuyến, như this one

+0

Từ ví dụ được cung cấp, có vẻ như nó đã được chạy qua một trình làm đẹp; Tôi nghĩ rằng họ đang tìm kiếm một cách để đổi tên các biến dễ dàng. – icktoofay

+0

Vâng tôi không cần làm đẹp. Tôi chỉ tự hỏi nếu có một cách đơn giản để tôi có thể thay thế các bình mà không cần phải làm điều đó bằng tay. Tôi nhận được một chút bị mất trong mã khi tất cả những điều đang đề cập đến 's.removeClass (" chờ đợi ")' 100 dòng xuống, vv – tr3online