Tài liệu tham khảo API về dịch vụ biên dịch khép kín

Dịch vụ biên dịch đóng không được dùng nữa và sẽ bị xoá. Thay vào đó, vui lòng cân nhắc chạy trình biên dịch cục bộ.

Tổng quan

Để yêu cầu mã đã biên dịch hoặc thông tin khác từ dịch vụ Trình biên dịch đóng, bạn phải gửi yêu cầu POST HTTP tới URL https://closure-compiler.appspot.com/compile. Phần nội dung của yêu cầu phải chứa các tham số được liệt kê trong phần Các tham số yêu cầu bắt buộc, đồng thời cũng có thể chứa bất kỳ tham số không bắt buộc nào được liệt kê trong Các tham số yêu cầu không bắt buộc.

Khi có thể, trang này sẽ sử dụng tài liệu chuẩn cho các tuỳ chọn dòng lệnh tại Cờ và tuỳ chọn. Các tùy chọn dòng lệnh không có trong dịch vụ web sẽ không được ghi lại tại đây. Một số tham số yêu cầu cũng không có trên dòng lệnh hoặc có tên khác.

Nếu máy chủ không xử lý được yêu cầu của bạn, thì bạn sẽ nhận được một thông báo lỗi của máy chủ. Các thông báo này được mô tả trong phần Thông báo lỗi.

Thông số yêu cầu

Các thông số yêu cầu bắt buộc

js_code hoặc code_url

JavaScript cần biên dịch. Bạn phải bao gồm ít nhất một trong các thông số này và bạn có thể bao gồm cả hai.

Tham số js_code phải là một chuỗi chứa JavaScript, chẳng hạn như alert('hello').

Tham số code_url phải chứa URL của tệp JavaScript. Bạn có thể đưa vào nhiều tham số code_url để chỉ định nhiều tệp đầu vào.

compilation_level

Xem tài liệu về compilation_level tại phần Cờ và tuỳ chọn.

output_format
Định dạng cho đầu ra của dịch vụ compile Compiler. Có 3 định dạng đầu ra:
xml

Định dạng đầu ra xml bao bọc thông tin được yêu cầu trong XML hợp lệ.

Kết quả XML có dạng như sau:

        <compilationResult>
          <compiledCode>var a="hello";alert(a);</compiledCode>
          <statistics>
            <originalSize>98</originalSize>
            <compressedSize>35</compressedSize>
            <compileTime>0</compileTime>
          </statistics>
        </compilationResult>
      

Phần compiledCode chứa JavaScript nén mà dịch vụ Trình biên dịch đóng đã tạo ra. Phần này chỉ xuất hiện nếu bạn thêm tham số output_info có giá trị compiled_code trong yêu cầu. Tương tự, mục statistics chỉ xuất hiện nếu bạn thêm một tham số output_info có giá trị statistics.

Nếu bạn thêm một tham số output_info có giá trị warnings và trình biên dịch tạo ra cảnh báo, thì kết quả sẽ bao gồm thẻ warnings:

        <compilationResult>
         ...
         <warnings>
           <warning type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3"  line="delete 1;">warning 1</warning>
           <warning type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="delete 1;">warning 2 </warning>
         </warnings>
          ...
        </compilationResult>
      

Nếu bạn cung cấp một output_info với giá trị errors, dịch vụ Closure Compiler sẽ bao gồm một thẻ errors nếu mã của bạn chứa lỗi cú pháp hoặc vấn đề khác ngăn cản việc biên dịch. Thẻ errors có dạng như sau:

        <compilationResult>
          ...
          <errors>
            <error type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3"  line="var x=-'hello';">error 1 </error>
            <error type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="var x=-'hello'">error 2 </error>
          </errors>
          ...
        </compilationResult>
      

Các thuộc tính file, linecol của các thẻ errorwarning cho biết vị trí dịch vụ Closure Compiler gặp lỗi.

Nếu dịch vụ Closure Compiler gặp lỗi sẽ ngăn việc xử lý dữ liệu đầu vào của bạn, thì kết quả sẽ có dạng như sau:

        <compilationResult>
          <serverErrors>
            <error code="1">Over quota</error>
          </serverErrors>
        </compilationResult>
      
json

Định dạng đầu ra json gói thông tin được yêu cầu trong một chuỗi JavaScript Object Notation (JSON). Đánh giá chuỗi này khi JavaScript trả về một Đối tượng JavaScript.

Kết quả JSON có dạng như sau:

{
"compiledCode":/* raw code here */,
{"errors": [
  {"charno":4321,
   "error":"ERROR: You failed.",
   "lineno":1234,
   "file":"default.js",
   "type":"ERROR_TYPE",
   "line":"var x=-'hello';"}],
"warnings": [
  {"charno":4321,
   "lineno":1234,
   "file":"default.js",
   "type":"ERROR_TYPE",
   "warning":"Warning: You did something wrong!",
   "line":"delete 1;"}]
"serverErrors":[
  {"code":123,"error":"Over quota"}
  ],
"statistics":{
  "originalSize":10,
  "compressedSize":3000
  "compileTime":10
  }
}
      

Định dạng JSON tương tự như định dạng XML: mọi thẻ trong đầu ra XML đều tương ứng với một thuộc tính có cùng tên trong đối tượng JSON

text
Định dạng đầu ra text trả về văn bản thô không có thẻ hoặc dấu ngoặc JSON. Nếu output_info bao gồm compiled_code, văn bản sẽ chứa JavaScript. Nếu output_info bao gồm warnings, văn bản sẽ chứa thông điệp cảnh báo. Nếu output_info bao gồm statistics, văn bản sẽ chứa số liệu thống kê.

Tham số output_format mặc định là giá trị text.

output_info

Cho biết loại đầu ra bạn muốn từ trình biên dịch. Có 4 loại đầu ra:

compiled_code
Phiên bản nén và tối ưu hoá của JavaScript đầu vào.
warnings
Thông báo cho biết các lỗi có thể xảy ra trong JavaScript của bạn.
errors
Thông báo cho biết lỗi cú pháp hoặc các lỗi khác trong JavaScript.
statistics

Thông tin về mức độ nén mà Trình biên dịch đóng đạt được. Đối với đầu ra xml, dịch vụ Trình biên dịch đóng sẽ trả về số liệu thống kê theo định dạng sau:

        <compilationResult>
          ...
          <statistics>
            <firstStatisticName>24</firstStatisticName>
            <secondStatisticName>15</secondStatisticName>
          </statistics>
        </compilationResult>
      

Thông số yêu cầu không bắt buộc

js_externs

Giá trị của tham số này phải là mã JavaScript khai báo tên hàm hoặc các ký hiệu khác. Sử dụng js_externs để giữ lại các biểu tượng được xác định bên ngoài mã bạn đang biên dịch. Tham số js_externs chỉ có hiệu lực nếu bạn đang sử dụng compilation_level của ADVANCED_OPTIMIZATIONS. Xem phần Biên dịch nâng cao để biết thêm thông tin.

externs_url

Giá trị của tham số này phải là URL của một tệp chứa JavaScript khai báo tên hàm hoặc các ký hiệu khác. Các ký hiệu khai báo trong tệp này được giữ nguyên theo cách tương tự như các ký hiệu liệt kê trực tiếp trong tham số js_externs. Tham số externs_url chỉ có hiệu lực nếu bạn đang sử dụng compilation_level của ADVANCED_OPTIMIZATIONS. Xem phần Biên dịch nâng cao để biết thêm thông tin.

Bạn có thể chỉ định tham số này nhiều lần nếu có nhiều tệp bên ngoài.

exclude_default_externs

Theo mặc định, dịch vụ Closure Compiler (Trình biên dịch đóng) sử dụng một tệp bên ngoài tiêu chuẩn để khai báo các ký hiệu phổ biến bên ngoài như document và mọi phương thức. Nếu bạn KHÔNG muốn sử dụng các ngoại lệ phổ biến này, hãy đưa vào yêu cầu tham số exclude_default_externs với giá trị true.

Xem phần Biên dịch nâng cao và tệp bên ngoài để biết thêm thông tin về bên ngoài.

output_file_name

Nếu có, dịch vụ Closure Compiler sẽ lưu mã đã biên dịch vào bộ nhớ đệm trong một giờ và cung cấp mã đó thông qua một URL đặc biệt. Trong giờ này, bạn có thể kiểm tra mã đã biên dịch bằng cách trỏ trình duyệt đến URL này. URL có dạng như sau:

https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]

formatting

Xem tài liệu về formatting tại phần Cờ và tuỳ chọn. Bạn có thể cung cấp nhiều thông số formatting trong cùng một yêu cầu.

use_closure_library

Nếu bạn cung cấp giá trị true cho tham số use_closure_library, thì trình biên dịch sẽ tìm kiếm các câu lệnh goog.require() trong mã nguồn và cung cấp mã Thư viện đóng đã được yêu cầu bởi bất kỳ câu lệnh nào như vậy. Công cụ này cũng thực hiện các biện pháp tối ưu hoá dành riêng cho mã của Thư viện đóng. Xem tài liệu về Thư viện đóng để biết thêm thông tin về Thư viện đóng. Xem bài viết Tìm kiếm trong Thư viện đóng để biết thêm thông tin về hàm goog.require().

Tham số use_closure_library mặc định là false.

warning_level

Xem tài liệu về warning_level tại phần Cờ và tuỳ chọn.

language

Xem tài liệu về tùy chọn language_in tương đương tại phần Cờ và tùy chọn.

language_out

Xem tài liệu về language_out tại phần Cờ và tuỳ chọn.

rewrite_polyfills

Xem tài liệu về rewrite_polyfills tại phần Cờ và tuỳ chọn.

use_types_for_optimization

Xem tài liệu về use_types_for_optimization tại phần Cờ và tuỳ chọn.

Thông báo lỗi

Nếu máy chủ không xử lý được yêu cầu của bạn, thì bạn sẽ nhận được một trong các thông báo lỗi máy chủ liệt kê trong bảng dưới đây. Lưu ý rằng các thông báo lỗi máy chủ này khác với lỗi trình biên dịch và cảnh báo. Các lỗi và cảnh báo của trình biên dịch cho biết Trình biên dịch đóng đã tìm thấy vấn đề trong mã JavaScript. Thông báo lỗi máy chủ cho biết trình biên dịch hoàn toàn không thể xử lý mã của bạn do lỗi trong yêu cầu của bạn.

Mã lỗiThông báo lỗiÝ nghĩa
2Chế độ đầu ra không xác định.Giá trị của thông số output_format là một giá trị khác với xml, json hoặc text.
4Cấp độ nén không xác định.Giá trị của thông số compilation_level là một giá trị khác với WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS hoặc ADVANCED_OPTIMIZATIONS.
8Dữ liệu POST quá lớn. Kích thước dữ liệu mà bạn gửi đến dịch vụ Closure Compiler vượt quá 200.000 byte. Cả giao diện người dùng Dịch vụ biên dịch và lệnh gọi API đều sử dụng yêu cầu POST HTTP để giao tiếp với dịch vụ, và tổng lượng dữ liệu gửi trong yêu cầu này không được vượt quá 200.000 byte. Đối với các lệnh gọi API, giới hạn này áp dụng cho tổng số văn bản trong tất cả tham số của yêu cầu. Đối với giao diện người dùng Trình biên dịch đóng, giới hạn này áp dụng cho tổng số văn bản trong cả mã nguồn và các tùy chọn trình biên dịch như @code_url. Nếu yêu cầu của bạn quá lớn, hãy chuyển mã nguồn vào các tệp riêng biệt và tham chiếu đến các tệp đó bằng @code_url hoặc sử dụng ứng dụng Closure Compiler trên máy cục bộ.
9Tệp quá lớn.Tổng số mã của tất cả các tệp code_url, tất cả các tệp externs_url, tất cả mã js_code và tất cả mã js_externs đều vượt quá 1024000 byte.
10Không thể truy xuất nội dung từ URL.Đã xảy ra lỗi khi dịch vụ Closure Compiler cố gắng truy xuất tệp JavaScript được chỉ định trong tham số code_url hoặc tệp bên ngoài được chỉ định trong tham số externs_url. Kiểm tra để đảm bảo URL là chính xác và các quyền đối với tệp này cho phép mọi người xem.
12URL không được tạo đúng cách.Giá trị của tham số code_url hoặc tham số externs_url không phải là một URL có định dạng phù hợp.
13Không có thông tin đầu ra nào để tạo, nhưng yêu cầu biên dịch. Bạn chưa chỉ định thông số output_info nào.
14Giá trị output_info không xác địnhGiá trị của một thông số output_info không phải là compiled_code, warnings hoặc statistics.
16Cấp độ cảnh báo không xác địnhGiá trị của thông số warning_level là một giá trị khác với QUIET, DEFAULT hoặc VERBOSE.
17Tùy chọn định dạng không xác định.Giá trị của thông số formatting là giá trị khác với pretty_print.
18Tham số không xác định trong yêu cầu HTTPYêu cầu HTTP chứa một thông số khác với một trong các thông số được liệt kê trong tài liệu này.
19Giá trị không hợp lệ cho output_file_name Tên tệp đầu ra chứa một ký tự là số, chữ cái, dấu chấm, dấu gạch dưới hoặc dấu gạch ngang hoặc chứa hai dấu chấm liên tiếp (..)
22Quá nhiều nội dung biên dịch được thực hiện gần đây. Hãy thử lại sau. Bạn đã gửi quá nhiều nội dung biên dịch từ máy của mình. Sau một giờ, bạn sẽ có thể biên dịch lại.
23Ngoại lệ của trình biên dịch (có dấu vết ngược) Trình biên dịch bị lỗi. Văn bản của lỗi sẽ chứa thông tin giúp Google gỡ lỗi sự cố.
24Loại tài nguyên đầu vào không được hỗ trợ Loại tài nguyên không phải http:, do đó tệp đầu vào sẽ không được truy xuất.