2010-06-10 13 views
23

Tôi nhận thấy rằng mỗi khi tôi sử dụng Google's Closure Compiler Service, nó để lại một vài khoảng trống không cần thiết trong mã được biên dịch được trình bày ở phía bên tay phải của trang. Những điều này tương ứng với ngắt dòng trong phiên bản được lưu trữ của mã được biên dịch.Tại sao Trình biên dịch đóng cửa của Google lại để lại một số khoảng trống không cần thiết hoặc ngắt dòng?

Ví dụ (chú ý ngắt dòng, mỗi trong số đó dường như không cần thiết):

http://troy.onespot.com/static/stack_overflow/closure_spaces.js

Đến nay, tôi đã chỉ được tháo gỡ chúng chỉ bằng tay, nhưng tôi tò mò tại sao họ đang có . Có giới hạn độ dài dòng của phiên bản được lưu trữ của mã để làm cho nó dễ đọc hơn không? Trình biên dịch có đủ thông minh để bỏ hoặc chèn những cố ý đó để tối đa hóa các nỗ lực nén GZIP không?

Tôi biết rằng chúng có ảnh hưởng tầm thường đến kích thước tệp, nhưng với rất nhiều nỗ lực đi vào việc giảm thiểu mọi byte cuối cùng trong tập lệnh nguồn, nó phản trực giác lý do tại sao chúng ở đó.

+0

Tôi không thể truy cập [default.js] (http://closure-compiler.appspot.com/code/jsc39ddc01a5a74a754148a33d2d8f1444/default.js), liên kết sẽ trả về trang có 'Độ dài nội dung' 0. Bạn có thể dán (một phần) mã trong câu hỏi của mình không? –

+0

Xin lỗi về điều đó - Tôi cho rằng Google đã lưu trữ mã được biên dịch vô thời hạn, nhưng dường như chúng không có. Tôi đã cập nhật liên kết trong câu hỏi ở trên. – Bungle

+0

Điều điên rồ nhất là Google PageSpeed ​​Insights phàn nàn về một vài byte (<1KB) và khi tôi tải xuống các tệp được tối ưu hóa, js có đường dài 180K, nhưng không có cách nào để hướng dẫn trình biên dịch Đóng cửa (API hoặc Ứng dụng JAVA) để ngắt các dòng ở bất kỳ độ dài nào (ví dụ: 180K) –

Trả lời

38

Trích dẫn các Closure Compiler FAQ:

Tại sao có nguồn cấp dữ liệu dòng ngẫu nhiên trong các kịch bản biên soạn?

Trình biên dịch đóng cửa cố ý thêm ngắt dòng mỗi 500 ký tự hoặc hơn. Tường lửa và proxy đôi khi làm hỏng hoặc bỏ qua các tệp JavaScript lớn với các dòng rất dài. Thêm ngắt dòng mỗi 500 ký tự ngăn sự cố này. Việc xóa các ngắt dòng không ảnh hưởng đến ngữ nghĩa của tập lệnh. Tác động đến kích thước mã nhỏ và Trình biên dịch tối ưu hóa vị trí ngắt dòng để hình phạt kích thước mã thậm chí còn nhỏ hơn khi các tệp được nén.

Bạn biết đó là thông minh! :)

+1

Tuyệt vời, giải quyết nó! Tôi đã không thấy Câu hỏi thường gặp - cảm ơn vì liên kết và tôi đánh giá cao câu trả lời. – Bungle

+0

Điều điên rồ nhất là Google PageSpeed ​​Insights phàn nàn về một vài byte (<1KB) và khi tôi tải xuống các tệp được tối ưu hóa, js có đường dài 180K, nhưng không có cách nào để hướng dẫn trình biên dịch Đóng cửa (API hoặc Ứng dụng JAVA) để ngắt các dòng ở bất kỳ độ dài nào (ví dụ: 180K) –

+1

@JoseNobile Gần đây, tôi gặp phải vấn đề này với ứng dụng Java. Tôi đã làm việc xung quanh nó bt loại bỏ ngắt dòng bằng tay được giới thiệu bởi trình biên dịch đóng cửa. – Stephan