Closure 编译器服务已弃用,并将被移除。请考虑改为在本地运行编译器。
概览
如需从 Closure Compiler 服务请求经过编译的代码或其他信息,您必须向网址 https://closure-compiler.appspot.com/compile
发送 HTTP POST 请求。请求正文必须包含必需请求参数中列出的参数,还可以包含可选请求参数中列出的任何可选参数。
请尽可能遵循标志和选项中关于命令行选项的规范文档。此处没有记录在 Web 服务中提供的命令行选项。某些请求参数也无法在命令行中使用,或者具有不同的名称。
如果服务器未能处理您的请求,您会收到服务器错误消息。错误消息部分介绍了这些消息。
请求参数
必需的请求参数
js_code
或code_url
-
要编译的 JavaScript。您必须至少包含这些参数中的一个,可以同时添加这两个。
js_code
参数必须是包含 JavaScript 的字符串,例如alert('hello')
。code_url
参数必须包含 JavaScript 文件的网址。您可以添加多个code_url
参数来指定多个输入文件。 compilation_level
-
请参阅标志和选项中有关
compilation_level
的文档。 output_format
- Closure Compiler 服务输出的格式。输出格式可能有三种:
xml
-
xml
输出格式会将请求的信息封装在有效的 XML 中。XML 输出如下所示:
<compilationResult> <compiledCode>var a="hello";alert(a);</compiledCode> <statistics> <originalSize>98</originalSize> <compressedSize>35</compressedSize> <compileTime>0</compileTime> </statistics> </compilationResult>
compiledCode
部分包含 Closure 编译器服务生成的压缩 JavaScript。仅当请求中包含值为compiled_code
的output_info
参数时,此部分才会显示。同样,只有当您添加值为statistics
的output_info
参数时,statistics
部分才会显示。如果您添加了值为
warnings
的output_info
参数,并且编译器会生成警告,则输出将包含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>
如果您添加的
output_info
值为errors
,则 Closure Compiler 服务将包含errors
标记(如果您的代码包含语法错误或其他阻止编译的问题)。errors
标记如下所示:<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>
error
和warning
标记的file
、line
和col
属性会指明 Closure 编译器服务发生错误的位置。如果 Closure Compiler 服务遇到阻止输入处理的错误,则输出结果将如下所示:
<compilationResult> <serverErrors> <error code="1">Over quota</error> </serverErrors> </compilationResult>
json
-
json
输出格式会将请求的信息封装在 JavaScript 对象表示法 (JSON) 字符串中。当此字符串 JavaScript 返回 JavaScript 对象时进行求值。JSON 输出如下所示:
{ "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 } }
JSON 格式与 XML 格式类似:XML 输出中的每个标记都对应于 JSON 对象中同名的属性
text
-
text
输出格式会返回不带标记或 JSON 括号的原始文本。如果output_info
包含compiled_code
,则文本包含 JavaScript。如果output_info
包含warnings
,则文本包含警告消息。如果output_info
包含statistics
,则文本包含统计信息。
output_format
参数的默认值为text
。 output_info
-
指明您想要从编译器输出的种类。输出有四种类型:
compiled_code
- 输入 JavaScript 的压缩和优化版本。
warnings
- 指明 JavaScript 中可能存在错误的消息。
errors
- 指明 JavaScript 中的语法错误或其他错误的消息。
statistics
-
有关 Closure 编译器实现的压缩程度的信息。对于 xml 输出,Closure 编译器服务会返回以下格式的统计信息:
<compilationResult> ... <statistics> <firstStatisticName>24</firstStatisticName> <secondStatisticName>15</secondStatisticName> </statistics> </compilationResult>
可选请求参数
js_externs
-
该参数的值必须是声明函数名称或其他符号的 JavaScript 代码。使用
js_externs
可保留在要编译的代码之外定义的符号。仅当您使用ADVANCED_OPTIMIZATIONS
的compilation_level
时,js_externs
参数才会生效。如需了解详情,请参阅高级编译。 externs_url
-
此参数的值必须是声明函数名称或其他符号的包含 JavaScript 的文件的网址。此文件中声明的符号的保留方式与直接列在
js_externs
参数中的符号完全相同。仅当您使用ADVANCED_OPTIMIZATIONS
的compilation_level
时,externs_url
参数才会起作用。如需了解详情,请参阅高级编译。如果您有多个 Extern 文件,则可以多次指定此参数。
exclude_default_externs
-
默认情况下,Closure 编译器服务使用标准的 externs 文件,用于声明常见的外部定义的符号(如
document
)及其所有方法。如果您不想使用这些常见的外部,请在请求中添加值为true
的exclude_default_externs
参数。如需详细了解 extern,请参阅高级编译和 Extern。
output_file_name
-
如果存在,Closure Compiler 服务会将编译后的代码缓存一小时,并通过特殊网址提供。在此期间,您可以通过将浏览器指向此网址来测试编译的代码。网址的格式如下:
https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]
formatting
-
请参阅标志和选项中有关
formatting
的文档。您可以在同一请求中提供多个formatting
参数。 -
use_closure_library
-
如果您为
use_closure_library
参数赋予true
值,编译器便会在源代码中查找goog.require()
语句,并提供任何此类语句请求的 Closure 库代码。它还执行专为 Closure 库代码设计的优化。如需详细了解 Closure 库,请参阅 Closure 库文档。如需详细了解goog.require()
函数,请参阅在 Closure 库中查找您的方式。use_closure_library
参数默认为false
。 warning_level
-
请参阅标志和选项中有关
warning_level
的文档。 -
language
-
如需查看等效
language_in
选项的文档,请参阅标志和选项。 -
language_out
-
请参阅标志和选项中有关
language_out
的文档。 -
rewrite_polyfills
-
请参阅标志和选项中有关
rewrite_polyfills
的文档。 -
use_types_for_optimization
-
请参阅标志和选项中有关
use_types_for_optimization
的文档。
错误消息
如果服务器未能处理您的请求,您会收到下表中列出的其中一个服务器错误消息。请注意,这些服务器错误消息与编译器错误和警告不同。编译器错误和警告表示 Closure 编译器发现您的 JavaScript 代码存在问题。服务器错误消息指出:编译器因您的请求中存在错误而无法处理您的代码。
错误代码 | 错误消息 | 含义 |
---|---|---|
2 | 输出模式未知。 | output_format 参数的值不是 xml 、json 或 text 。 |
4 | 压缩级别未知。 | compilation_level 参数的值不是 WHITESPACE_ONLY 、SIMPLE_OPTIMIZATIONS 或 ADVANCED_OPTIMIZATIONS 。 |
8 | POST 数据过大。 |
您发送到 Closure Compiler 服务的数据超过 200,000 字节。Compiler Service 界面和您的 API 调用都使用 HTTP POST 请求与服务通信,并且此请求中发送的数据总量不能超过 200,000 字节。对于 API 调用,此限制适用于所有请求参数中的文本总量。对于 Closure Compiler 界面,此限制适用于源代码和编译器选项(如 @code_url )中的文本总量。如果您的请求过大,请将源代码移到单独的文件中并使用 @code_url 引用它们,或者在本地机器上使用 Closure Compiler 应用。
|
9 | 文件过大。 | 所有 code_url 文件、所有 externs_url 文件、所有 js_code 代码和所有 js_externs 代码的总代码超过 1024000 字节。 |
10 | 无法从网址检索内容。 | 当 Closure 编译器服务尝试检索 code_url 参数中指示的 JavaScript 文件或 externs_url 参数中指示的 extern 文件时,会发生错误。请检查网址是否正确,以及该文件的权限是否允许查看。 |
12 | 网址格式不正确。 | code_url 参数或 externs_url 参数的值不是格式正确的网址。 |
13 | 没有要生成的输出信息,但已请求编译。 | 尚未指定 output_info 参数。 |
14 | 未知 output_info 值 | output_info 参数的值不是 compiled_code 、warnings 或 statistics 。 |
16 | 警告级别未知 | warning_level 参数的值不是 QUIET 、DEFAULT 或 VERBOSE 。 |
17 | 未知的格式选项。 | formatting 参数的值不是 pretty_print 。 |
18 | HTTP 请求中的未知参数 | HTTP 请求包含的参数不是本文档中列出的参数之一。 |
19 | output_file_name 的值无效 | 输出文件名包含数字、字母、点号、下划线或短划线的字符,或者包含两个连续的点 (.. ) |
22 | 最近执行的编译过多。请稍后重试。 | 您通过计算机提交的编译内容过多。一小时后,您应该可以再次执行编译了。 |
23 | 编译器异常(含回溯) | 编译器崩溃。错误文本将包含帮助 Google 调试问题的信息。 |
24 | 输入资源类型不受支持 | 资源类型不是 http:,因此不会检索输入文件。 |