- Trình biên dịch đóng cửa là gì? Tại sao tôi nên sử dụng tính năng này?
- Trình biên dịch đóng cửa khác với các trình nén JavaScript khác ngoài kia như thế nào?
- Trình biên dịch đóng cửa có thể biên dịch JavaScript được nhúng trong HTML không?
- Tôi có thể sử dụng Trình biên dịch đóng cùng với các trình thu nhỏ JavaScript khác không?
- Làm cách nào để gỡ lỗi cho JavaScript mà Trình biên dịch đóng phát sinh?
- Trình biên dịch có tạo ra bất kỳ sự đánh đổi nào 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 hóa cho tốc độ không?
- Có quy định hạn chế nào về kích thước của các tệp có thể biên dịch được không?
- Trình biên dịch đóng cửa có sẵn cho tất cả các nền tảng không?
- Trình biên dịch có thể xử lý bất kỳ JavaScript hợp pháp nào không?
- Trình biên dịch đóng khoá hoạt động như thế nào với Thư viện tuỳ chỉnh?
-
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ậy? - Tại sao có nguồn cấp dữ liệu dòng ngẫu nhiên trong các tập lệnh được biên dịch?
- 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 để giữ Trình biên dịch đóng cửa không tước văn bản này?
- Trình biên dịch đóng cửa là gì? Tại sao tôi nên sử dụng quảng cáo này?
- Trình biên dịch đóng là công cụ giúp bạn tải JavaScript xuống và chạy nhanh hơn. Bạn có thể dùng Trình biên dịch đóng để giảm kích thước của các tệp JavaScript và tăng hiệu quả của các tệp đó.
- Trình biên dịch đóng cửa khác với các trình nén JavaScript khác ngoài kia như thế nào?
-
Nói chung, Trình biên dịch đóng phải đáp ứng hoặc vượt quá độ nén của các công cụ giảm kích thước mã khác và cải thiện thời gian tải xuống cho ứng dụng web. Ngoài ra, Trình biên dịch đóng có thể giúp bạn tìm các lỗi cú pháp trong quá trình phát triển (thay vì trong quá trình thử nghiệm) và xác định các mẫu mã có thể gặp lỗi.
Ở Chế độ đơn giản, Closure Compiler có thể hoạt động tốt hơn các công cụ khác, vì công cụ này sử dụng quá trình phân tích giống như trình biên dịch để tìm thêm các cách giúp giảm thiểu kích thước mã. Ví dụ: Trình biên dịch đóng có thể sử dụng các hàm cùng dòng chỉ sử dụng trong một vài lần xuất hiện, sử dụng lại tên biến và biểu thức hằng số tính toán trước.
Ở Chế độ nâng cao, Trình biên dịch đóng cũng có thể sử dụng các chú thích loại đã thêm để tìm lỗi khó phát hiện.
- Không. Trình biên dịch đóng chỉ hoạt động trên các tệp chỉ chứa JavaScript.
- Tôi có thể sử dụng Trình biên dịch đóng cùng với các trình thu nhỏ JavaScript khác không?
-
Có. Closure Compiler đọc trong mọi JavaScript hợp lệ và tạo ra JavaScript hợp lệ, vì vậy bạn có thể áp dụng Closure Compiler cho một tệp JavaScript trước hoặc sau khi chạy tệp thông qua một trình khai báo khác.
Hãy nhớ rằng Closure Compiler và các trình thu nhỏ khác có thể kỳ vọng về mã đến. Ví dụ: trình rút gọn để xoá nhận xét có thể xoá giấy phép hoặc thông tin chú thích của công cụ khác.
- Làm cách nào để gỡ lỗi JavaScript mà Trình biên dịch đóng thực hiện?
-
Nếu mã đã biên dịch của bạn đang gửi 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 ánh xạ
giữa mã đã biên dịch và mã nguồn ban đầu để
các công cụ cho nhà phát triển của trình duyệt có thể hiển thị cho bạn mã nguồn ban đầu thay vì mã đã biên dịch.
Để trình biên dịch đóng cửa tạo một bản đồ nguồn, hãy chuyển cờ
--create_source_map
vào dòng lệnh. Ví dụ:$ java -jar compiler.jar --js example.js --create_source_map ./example-map --js_output_file example-compiled.js
Để 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. - Trình biên dịch có tạo ra bất kỳ sự đánh đổi nào giữa tốc độ thực thi và kích thước mã tải xuống của ứng dụng không?
- Có. Việc tối ưu hoá trình biên dịch cũng tạo ra sự đánh đổi. Một số tính năng tối ưu hoá kích thước sẽ gây ra mức hao tổn tốc độ nhỏ. Tuy nhiên, các nhà phát triển của Closure Compiler đã cẩn thận để không đưa vào môi trường thời gian chạy bổ sung đáng kể. Một số tính năng tối ưu hoá của trình biên dị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 hóa cho tốc độ không?
- Trong hầu hết các trường hợp, mã nhỏ hơn là mã 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 tính năng tối ưu hoá nhằm giảm tình trạng thừa mã cũng làm tăng thời gian chạy mã.
- Có hạn chế nào về kích thước tệp có thể biên dịch được 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 biên dịch độc lập thì không.
- Có phải tất cả các nền tảng đều có thể sử dụng Trình biên dịch đóng cửa không?
- Trình biên dịch được viết bằng Java nên có thể chạy ở bất cứ đâu trong Java.
- Trình biên dịch có thể xử lý bất kỳ JavaScript hợp pháp nào không?
-
Hầu hết là như vậy. Một số cấu trúc JavaScript, bao gồm
eval()
vàwith()
, có thể vô hiệu hoá các giả định dựa trên các phép biến đổi của trình biên dịch. - Tôi cần biết bao nhiêu thông tin về việc phát triển web để sử dụng Trình biên dịch đóng cửa?
- Trình biên dịch đóng là một công cụ dùng để phát triển JavaScript, vì vậy, bạn cần biết cách lập trình trong JavaScript để sử dụng trình biên dịch. Tuy nhiên, bất cứ ai dùng JavaScript đều có thể sử dụng Trình biên dịch đóng.
- Trình biên dịch đóng hoạt động như thế nào với Thư viện tuỳ chỉnh?
- Trình biên dịch đóng cung cấp tính năng 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ụ Closure Compiler có thể tự động bao gồm các tệp trong Closure Library Find your Way about Closure (Tìm cách đóng cửa) mô tả cú pháp để khai báo các phần của Closure mà bạn cần. Vui lòng xem tài liệu tham khảo 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 khép kín bằng ứng dụng Closure Compiler, trước tiên, bạn phải tải Thư viện tuỳ chỉnh xuống. Theo mặc định, tính năng hỗ trợ cho Thư viện đóng đã được bật trong ứng dụng biên dịch.
-
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
. Bạn nên làm vậy -
Việc sử dụng chế độ Nâng cao thường yêu cầu bạn phải chuẩn bị một số bước và
thay đổi mã. Biên dịch nâng cao và các phương thức Externex giải thích cách đảm bảo mã của bạn hoạt động với
ADVANCED_OPTIMIZATIONS
. - Tại sao có các nguồn cấp dữ liệu dòng ngẫu nhiên trong các tập lệnh được biên dịch?
- Trình biên dịch đóng cũng cố ý thêm dấu ngắt dòng sau mỗi 500 ký tự. Tường lửa và proxy đôi khi bị 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 mỗi 500 ký tự sẽ ngăn chặn vấn đề này xảy ra. 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ã 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 tệp được nén.
- 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 Trình biên dịch đóng cửa loại bỏ văn bản này?
-
Trình biên dịch đóng 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 kết quả của trình biên dịch. Xem bài viết Chú thích JavaScript cho Trình biên dịch đóng để biết thêm thông tin.