- Closure Compiler là gì? Tại sao tôi nên sử dụng tính năng này?
- Closure Compiler có gì khác biệt so với các trình nén JavaScript khác hiện có?
- Trình biên dịch Closure có thể biên dịch JavaScript được nhúng trong HTML không?
- Tôi có thể sử dụng Closure Compiler cùng với các trình rút gọn JavaScript khác không?
- Làm cách nào để gỡ lỗi JavaScript mà Trình biên dịch Closure tạo ra?
- Trình biên dịch có đánh đổi giữa tốc độ thực thi và kích thước mã tải xuống của ứng dụng không?
- Trình biên dịch có tối ưu hoá về tốc độ không?
- Có hạn chế nào về kích thước của các tệp có thể được biên dịch không?
- Trình biên dịch đóng có dùng được cho tất cả các nền tảng không?
- Trình biên dịch có thể xử lý mọi JavaScript hợp lệ không?
- Trình biên dịch Closure hoạt động như thế nào với Thư viện Closure?
-
Mã của tôi ngừng hoạt động hoặc Trình biên dịch tạo ra lỗi khi tôi biên dịch bằng
ADVANCED_OPTIMIZATIONS
. Tại sao? - Vì sao có các dòng ngắt ngẫu nhiên trong tập lệnh đã biên dịch?
- Tôi có văn bản thông báo bản quyền hoặc giấy phép nguồn mở phải xuất hiện trong mã nguồn của mình. Làm cách nào để ngăn Closure Compiler loại bỏ văn bản này?
- Closure Compiler là gì? Tại sao tôi nên sử dụng tính năng này?
- Trình biên dịch Closure là một công cụ giúp tải xuống và chạy JavaScript nhanh hơn. Bạn có thể sử dụng Closure Compiler để giảm kích thước tệp JavaScript và giúp các tệp này hoạt động hiệu quả hơn.
- Closure Compiler có gì khác biệt so với các trình nén JavaScript khác hiện có?
-
Nhìn chung, Closure Compiler sẽ đáp ứng hoặc vượt quá mức nén của các công cụ giảm thiểu mã khác và cải thiện thời gian tải xuống cho ứng dụng web của bạn. Ngoài ra, Closure Compiler có thể giúp bạn tìm lỗi cú pháp trong quá trình phát triển (thay vì trong quá trình kiểm thử) và xác định các mẫu mã có thể có lỗi.
Ở chế độ Đơn giản, Closure Compiler có thể hoạt động hiệu quả hơn các công cụ khác vì công cụ này sử dụng phương thức phân tích giống như trình biên dịch để tìm thêm các cách giảm thiểu kích thước mã. Ví dụ: Trình biên dịch Closure có thể nội tuyến các hàm chỉ được dùng trong một vài trường hợp, sử dụng lại tên biến và tính toán trước các biểu thức hằng số.
Ở chế độ Nâng cao, Closure Compiler cũng có thể sử dụng chú thích kiểu mà bạn đã thêm để tìm các lỗi khó phát hiện.
- Không. Closure Compiler chỉ hoạt động trên những tệp chỉ chứa JavaScript.
- Tôi có thể sử dụng Closure Compiler cùng với các trình rút gọn JavaScript khác không?
-
Có. Trình biên dịch Closure đọc mọi JavaScript hợp lệ và tạo ra JavaScript hợp lệ, vì vậy, bạn có thể áp dụng Trình biên dịch Closure cho một tệp JavaScript trước hoặc sau khi chạy tệp đó thông qua một trình rút gọn khác.
Hãy nhớ rằng Closure Compiler và các trình thu nhỏ khác có thể có những kỳ vọng về mã đến. Một trình rút gọn loại bỏ các nhận xét có thể xoá giấy phép hoặc thông tin chú thích mà một công cụ khác cần, chẳng hạn như.
- Làm cách nào để gỡ lỗi JavaScript mà Trình biên dịch Closure tạo ra?
-
Nếu mã đã biên dịch của bạn gặp lỗi hoặc có hành vi không mong muốn, bạn có thể sử dụng Source Maps để gỡ lỗi. Bản đồ nguồn cung cấp mối liên kết giữa mã đã biên dịch và mã nguồn ban đầu để công cụ dành cho nhà phát triển của trình duyệt có thể cho bạn thấy mã nguồn ban đầu thay vì mã đã biên dịch.
Để Trình biên dịch Closure tạo một bản đồ nguồn, hãy truyền cờ
--create_source_map
trên dòng lệnh. Ví dụ: Sau đó, nếu đang sử dụng một trình duyệt hỗ trợ Source Maps (chẳng hạn như Chrome hoặc Firefox), bạn có thể đặt điểm ngắt giống như đối với mã chưa biên dịch và công cụ dành cho nhà phát triển của trình duyệt sẽ cho thấy dòng mã tương ứng trong nguồn ban đầu. Để biết thêm thông tin về các công cụ cho nhà phát triển của Chrome, bao gồm cả thông tin về bản đồ nguồn, hãy xem phần Gỡ lỗi JavaScript.$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
- Trình biên dịch có đánh đổi giữa tốc độ thực thi và kích thước mã tải xuống của ứng dụng của tôi không?
- Có. Mọi trình biên dịch tối ưu hoá đều có những điểm đánh đổi. Một số hoạt động tối ưu hoá kích thước sẽ làm tăng tốc độ một chút. Tuy nhiên, các nhà phát triển Closure Compiler đã cẩn thận để không đưa thêm thời gian chạy đáng kể. Một số hoạt động tối ưu hoá của trình biên dịch thậm chí còn làm giảm thời gian chạy (xem câu hỏi tiếp theo).
- Trình biên dịch có tối ưu hoá về tốc độ không?
- Trong hầu hết các trường hợp, mã nhỏ hơn sẽ nhanh hơn vì thời gian tải xuống thường là yếu tố tốc độ quan trọng nhất trong các ứng dụng web. Các hoạt động tối ưu hoá giúp giảm sự dư thừa cũng đẩy nhanh thời gian chạy của mã.
- Có hạn chế nào về kích thước của các tệp có thể được biên dịch không?
- Dịch vụ web biên dịch có kích thước tệp tối đa, nhưng ứng dụng trình biên dịch độc lập thì không.
- Trình biên dịch Closure có dùng được cho tất cả các nền tảng không?
- Trình biên dịch được viết bằng Java, nên có thể chạy ở bất cứ nơi nào Java chạy.
- Trình biên dịch có thể xử lý mọi JavaScript hợp lệ không?
-
Hầu hết. Một số cấu trúc JavaScript, bao gồm
eval()
vàwith()
, có thể làm mất hiệu lực các giả định mà các phép biến đổi của trình biên dịch dựa trên đó. - Tôi cần biết bao nhiêu về phát triển web để sử dụng Trình biên dịch Closure?
- Closure Compiler là một công cụ để phát triển JavaScript, vì vậy, bạn cần biết cách lập trình bằng JavaScript để sử dụng trình biên dịch này. Nhưng bất kỳ ai sử dụng JavaScript đều có thể hưởng lợi từ việc sử dụng Trình biên dịch Closure.
- Closure Compiler hoạt động như thế nào với Closure Library?
- Trình biên dịch Closure cung cấp các chế độ kiểm tra và tối ưu hoá đặc biệt cho mã sử dụng Thư viện Closure. Ngoài ra, dịch vụ Trình biên dịch Closure có thể tự động bao gồm các tệp Thư viện Closure. Tìm hiểu về Closure mô tả cú pháp để khai báo các phần của Closure mà bạn cần. Hãy xem tài liệu tham khảo về API để biết thông tin về cách sử dụng Thư viện Closure với API. Để sử dụng Thư viện Closure với ứng dụng Trình biên dịch Closure, trước tiên, bạn phải tải Thư viện Closure xuống. Theo mặc định, ứng dụng trình biên dịch sẽ hỗ trợ Thư viện Closure.
-
Mã của tôi ngừng hoạt động hoặc Trình biên dịch tạo ra lỗi khi tôi biên dịch bằng
ADVANCED_OPTIMIZATIONS
. Tại sao? -
Việc sử dụng Chế độ nâng cao thường yêu cầu bạn chuẩn bị và thay đổi mã. Advanced Compilation and Externs (Biên dịch nâng cao và Extern) giải thích cách đảm bảo mã của bạn hoạt động với
ADVANCED_OPTIMIZATIONS
. - Tại sao lại có các ký tự xuống dòng ngẫu nhiên trong tập lệnh đã biên dịch?
- Closure Compiler cố tình thêm dấu ngắt dòng sau mỗi 500 ký tự. Đôi khi, tường lửa và proxy sẽ làm hỏng hoặc bỏ qua các tệp JavaScript lớn có dòng rất dài. Việc thêm dấu ngắt dòng sau mỗi 500 ký tự sẽ ngăn chặn vấn đề này. Việc xoá dấu 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ã là nhỏ và Trình biên dịch tối ưu hoá vị trí ngắt dòng để mức phạt kích thước mã thậm chí còn nhỏ hơn khi các tệp được nén bằng gzip.
- Tôi có thông báo bản quyền hoặc văn bản giấy phép nguồn mở phải xuất hiện trong mã nguồn của mình. Làm cách nào để ngăn Closure Compiler loại bỏ văn bản này?
-
Trình biên dịch Closure hỗ trợ thẻ JSDoc
@license
. Thêm thẻ@license
vào bất kỳ nhận xét JSDoc nào để giữ lại nhận xét trong đầu ra của trình biên dịch. Hãy xem bài viết Chú thích JavaScript cho Trình biên dịch Closure để biết thêm thông tin.