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
Closure Compiler API API cung cấp quyền truy cập có lập trình để biên dịch JavaScript đóng trình biên dịch thông qua API dựa trên web. Mặc dù Giao diện người dùng trình biên dịch đóng giúp bạn dễ dàng sử dụng dịch vụ biên dịch thông qua một biểu mẫu đơn giản trên một trang web, nhưng việc sao chép kết quả từ trang web này không phải là cách hiệu quả nhất để làm việc. Với API dịch vụ đóng trình biên dịch, bạn có thể linh hoạt xây dựng các công cụ và tạo quy trình công việc riêng.
Hướng dẫn này sẽ chỉ cho bạn quy trình gửi JavaScript đến dịch vụ Closure Compiler và nhận lại đầu ra của Closure Compiler. Ví dụ này sử dụng cấp độ biên dịch đóng cửa cơ bản nhất, chỉ xoá các nhận xét và khoảng trắng khỏi JavaScript.
Hướng dẫn này giả định rằng bạn đã quen thuộc với JavaScript và HTTP. Mặc dù mã này sử dụng tập lệnh Python để gửi JavaScript đến dịch vụ compile Compiler, nhưng bạn không cần biết Python để làm theo ví dụ này.
Cách giao tiếp với API
- Xác định các Thông số yêu cầu
Bạn tương tác với dịch vụ Closure Compiler bằng cách gửi các yêu cầu POST HTTP tới máy chủ Closure Compiler. Với mỗi yêu cầu, bạn phải gửi ít nhất các thông số sau:
js_code
hoặccode_url
-
Giá trị của thông số này cho biết JavaScript mà bạn muố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.js
có sẵn qua HTTP.Bạn cũng có thể thêm các tham số nguồn được đặt tên vào biểu mẫu
js_code:path/to/filename.js
. Mỗi tệp sẽ được tạo trong một hệ thống tệp ảo, cho phép các mô-đun chuẩn hoá thông qua câu lệnhimport
vàexport
được hỗ trợ trongECMASCRIPT6
. compilation_level
-
Giá trị của thông số này cho biết mức độ nén và tối ưu hoá để áp dụng cho JavaScript của bạn. Có 3 cấp độ biên dịch:
WHITESPACE_ONLY
,SIMPLE_OPTIMIZATIONS
vàADVANCED_OPTIMIZATIONS
. Ví dụ này sử dụng tính năng biên dịchWHITESPACE_ONLY
, chỉ loại bỏ các nhận xét và khoảng trắng.Tham số
compilation_level
mặc định là giá trịSIMPLE_OPTIMIZATIONS
. output_info
-
Giá trị của thông số này cho biết loại thông tin bạn muốn từ trình biên dịch. Có 4 loại đầu ra:
compiled_code
,warnings
,errors
vàstatistics
. Ví dụ này sử dụng giá trịcompiled_code
để cho biết dịch vụ Trình biên dịch đóng cũng xuất phiên bản JavaScript đã nén mà nó nhận được trong yêu cầu. output_format
-
Định dạng cho đầu ra của dịch vụ Closure Compiler. Có 3 định dạng đầu ra:
text
,json
hoặcxml
. Ví dụ này sử dụng giá trịtext
, giá trị này sẽ xuất văn bản thô.Tham số
output_format
mặc định là giá trịtext
.
Để biết thêm thông tin về các tham số bắt buộc này và các tham số không bắt buộc bổ sung, hãy xem Tài liệu tham khảo API.
Ví dụ trong hướng dẫn giới thiệu này chỉ gửi một dòng JavaScript thô tới dịch vụ Closure Compiler, vì vậy, hàm này sử dụng
js_code
thay vìcode_url
. Phương thức này sử dụngcompilation_level
củaWHITESPACE_ONLY
, yêu cầu đầu ra văn bản thô vớioutput_format
làtext
và yêu cầu loạioutput_info
làcompiled_code
. -
Tạo một yêu cầu bài đăng cho Dịch vụ biên dịch đóng
Để nhận kết quả từ dịch vụ Closure Compiler, hãy gửi các tham số bạn chọn ở Bước 1 trong yêu cầu POST tới URL của dịch vụ Closure Compiler. Bạn có thể thực hiện việc này bằng một biểu mẫu HTML đơn giản, chẳng hạn như biểu mẫu trong Hello World of the Closure Compiler Service API.
Tuy nhiên, để sử dụng một biểu mẫu như vậy trong quá trình phát triển, bạn sẽ phải sao chép kết quả đầu ra từ trình duyệt và dán vào tệp .js. Thay vào đó, nếu viết một chương trình nhỏ để gửi yêu cầu đến dịch vụ Closure Compiler, bạn có thể ghi đầu ra của Closure Compiler trực tiếp vào một tệp. Ví dụ: tập lệnh python sau đây sẽ gửi yêu cầu đến dịch vụ Closure Compiler và viết phản hồi:
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. headers = { "Content-type": "application/x-www-form-urlencoded" } conn = httplib.HTTPSConnection('closure-compiler.appspot.com') conn.request('POST', '/compile', params, headers) response = conn.getresponse() data = response.read() print data conn.close()
Lưu ý: Để tái tạo ví dụ này, người dùng Windows có thể cần cài đặt Python. Xem Câu hỏi thường gặp về Python Windows để biết hướng dẫn về cách cài đặt và sử dụng Python trong Windows.
Tập lệnh này tối ưu hóa JavaScript được chuyển vào dưới dạng đối số dòng lệnh. Dán mã trên vào tệp có tên là
compile.py
, thay đổi quyền của tệp để tệp có thể thực thi và thực thi lệnh sau:$ python compile.py 'alert("hello");// This comment should be stripped'
Lệnh này in ra mã nén từ phản hồi Closure Compiler:
alert("hello");
Vì ví dụ này sử dụng chức năng biên dịch cơ bản, nên trình biên dịch không làm gì ngoài việc loại bỏ nhận xét.
Sau đây là một vài điều cần lưu ý về tập lệnh này:
-
Các tham số được chuyển đến phương thức yêu cầu của HTTPSConnection dưới dạng chuỗi được mã hoá URL. Sau khi gọi đến
urllib.urlencode
, biến tham số chứa chuỗi sau:js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
Nếu bạn viết tập lệnh của riêng mình, tập lệnh sẽ đăng nội dung được mã hoá URL như thế này. - Yêu cầu phải luôn có tiêu đề
Content-type
làapplication/x-www-form-urlencoded
-
Các tham số được chuyển đến phương thức yêu cầu của HTTPSConnection dưới dạng chuỗi được mã hoá URL. Sau khi gọi đến
Các bước tiếp theo
Để tìm hiểu cách sử dụng dịch vụ để nén tốt hơn trong các trường hợp phát triển thực tế hơn, hãy tiếp tục với phần Nén tệp bằng API.