我试图聚集一个如何使用Google Closure来缩小JS的基本示例。我似乎无法让这一切发挥作用。
我试图效仿这些例子:
https://developers.google.com/closure/compiler/docs/gettingstarted_api http://closure-compiler.appspot.com/home
在处理API和/或AJAX代码时,我尝试的第一件事就是使用高级休息客户端应用程序 - Chrome扩展程序正确设置变量和值。但是,每当我发送这些数据时,我都会得到一个空的响应(下图)。
尝试在我的PHP代码中插入相同的代码,无论我在$ postData变量中发送什么,我都会得到一个空(null)响应。
PHP代码:
$postData =
http_build_query(
[
'output_info' => 'compiled_code',
'output_format' => 'text',
'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
'js_code' => urlencode("function hello(name) { // Greets the user alert('Hello, ' + name); } hello('New user');")
]
);
$ret = $this->ci->curl->simple_post(
$url,
$postData,
$options
);
var_dump($ret);
die();
响应:
string' ' (长度= 1)
我99%确信我错过了使用Closure API的东西,比如钥匙或其他东西,但我不知道如何继续。
答案 0 :(得分:1)
经过多次,多次尝试,我发现如果我使用rawurlencode()而不是urlencode(),它就可以了。这是最后的功能。
// use google closure to get compiled JS
$encoded = rawurlencode($js);
$postData =
'output_info=compiled_code&' .
'output_format=text&' .
'compilation_level=WHITESPACE_ONLY&' .
'js_code=' . $encoded
;
$options = [];
$call = curl_init();
curl_setopt_array(
$call,
array(
CURLOPT_URL => 'http://closure-compiler.appspot.com/compile',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $postData,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_HEADER => 0,
CURLOPT_FOLLOWLOCATION => 0
)
);
$jscomp = curl_exec($call);
return $jscomp;