14

Tôi có tệp javascript có đối tượng chung không được đổi tên (_gat từ trình theo dõi không đồng bộ của Google Analytics).Ngăn trình biên dịch đóng đổi đổi tên các biến nhất định

Đối tượng này không được đổi tên bởi Trình biên dịch đóng cửa của Google khi Google Analytics tìm kiếm biến có tên cụ thể này.

Tôi đã xem xét các ký hiệu của Tài liệu Javascript được đề cập: http://code.google.com/closure/compiler/docs/js-for-compiler.html - Tuy nhiên, tôi không thể tìm thấy bất kỳ điều gì liên quan đến "bảo vệ" của biến.

Sự cố tồn tại không có vấn đề gì nếu tôi sử dụng trình biên dịch đơn giản hoặc nâng cao.

Làm cách nào để đảm bảo rằng biến số _gat không được đổi tên?

Trả lời

16

Sử dụng ứng dụng web Closure Compiler , bạn có thể đặt js_externs. Tham khảo Advanced Compilation and Externs để biết thêm ví dụ.

// ==ClosureCompiler== 
// @compilation_level ADVANCED_OPTIMIZATIONS 
// @output_file_name default.js 
// @js_externs _gat 
// ==/ClosureCompiler== 
+0

nó vẫn thay đổi –

6

Sử dụng hàm goog.exportSymbol từ base.js. Tài liệu là ở đây: http://closure-library.googlecode.com/svn/docs/closure_goog_base.js.html

Cách sử dụng cũng giống như

goog.exportSymbol("_gat", _gat) 
+0

bạn có thể xây dựng một chút về điều đó xin vui lòng? Tôi tìm thêm thông tin ở đâu? – phidah

+0

(Xin lỗi vì câu trả lời đầu tiên của terse, đã được trả lời từ điện thoại của tôi và màn hình-bàn phím-fu của tôi yếu). –

3

Xem http://closuretools.blogspot.com/2011/01/property-by-any-other-name-part-1.html phần về "Tất cả không thể viện chứng"

đặt vars nhất định bên trong '' >>> 'bob' ngăn chặn chúng khỏi bị đổi tên bởi trình biên dịch

+1

Đây là một lựa chọn thú vị. Ngay cả khi thực hiện ADVANCED_OPTIMIZATIONS, Closure sẽ không đổi tên tham chiếu chuỗi thành các phương thức. Ví dụ: nó sẽ không đổi tên window.foo nếu được tham chiếu như: window ['foo'] –

Các vấn đề liên quan