YUI 压缩器未按预期运行
我尝试使用 YUI 压缩器压缩我的 JavaScript 文件,但不知何故它没有达到预期的效果。
JavaScript 文件位于此处。
压缩输出如下所示:
!window.$j&&(function($){$.jswaf={};$j=$.jswaf;var resources={},modules={},depends={},events={},eventfired={},modulepath={},themepath={}; [...]
等等。
我期望的是“资源”、“模块”、“依赖”等变量将被简化为 1、2 或 3 个字母的小标识符。
这是应该发生的事情吗?或者我的源文件有问题?
顺便说一句:
压缩器吐出了这个输出(我使用了-v选项):
<块引用>[警告]尝试使用单个“var” 每个范围的声明。 ={},主题路径={}; ---> var <--- _nullf=function(){};var WAIT_TIME_RECHECK_FETCHED
[警告]尝试使用单个“var” 每个范围的声明。变量 _nullf=函数(){}; ---> var <--- WAIT_TIME_RECHECK_FETCHED=300;var WAIT_TIME_LOAD_CALLBACK=20;var
[警告]尝试使用单个“var” 每个范围的声明。 ){};var WAIT_TIME_RECHECK_FETCHED=300; ---> 变量 <--- WAIT_TIME_LOAD_CALLBACK=20;var WAIT_TIME_UNLOAD_CALLBACK=20;var
[警告]尝试使用单个“var” 每个范围的声明。 WAIT_TIME_RECHECK_FETCHED=300;var 等待时间加载回调=20; --->变量 <--- WAIT_TIME_UNLOAD_CALLBACK=20;var WAIT_TIME_EVENT_FIRE=20;var
[警告]尝试使用单个“var” 每个范围的声明。 WAIT_TIME_LOAD_CALLBACK=20;var WAIT_TIME_UNLOAD_CALLBACK=20; --->变量 <--- WAIT_TIME_EVENT_FIRE=20;var WAIT_TIME_ADD_REPO_CALLBACK=20;$j
[警告]尝试使用单个“var” 每个范围的声明。 WAIT_TIME_UNLOAD_CALLBACK=20;var 等待时间事件事件火=20; --->变量 <--- WAIT_TIME_ADD_REPO_CALLBACK=20;$j.resources=资源;
[警告]尝试使用单个“var” 每个范围的声明。 ;}var modpath=路径+"modules/module-list.js"; ---> var <--- thpath=path+"themes/theme-list.js";functionfinish(val
[警告]尝试使用单个“var” 每个范围的声明。 +module+"/";}}for( ---> var <--- thlist 中的主题){theme=thlist[主题
[警告]尝试使用单个“var” 每个范围的声明。 false){returnfalse;}for( ---> var <--- obj.prod 中的资源){if(资源
[警告]尝试使用单个“var” 每个范围的声明。 (变量要求在 module.req){ --->;变量 <--- 发现=假;var dependents=依赖[资源
[警告]尝试使用单个“var” 每个范围的声明。 .req){var 发现=假; --->变量 <--- dependents=depends[资源[req].id
[警告]尝试使用单个“var” 每个范围的声明。 [请求].id];for( ---> var <--- moduleIdIndex in dependents){if(moduleIdIndex==module
[警告]尝试使用单个“var” 每个范围的声明。 ,arg3){var id=""; ---> var <---conf={};varcallback=_nullf;
[警告]尝试使用单个“var” 每个范围的声明。 ="";varconf={}; ---> var <---callback=_nullf;if(typeofarg1=="字符串"
[警告]尝试使用单个“var” 每个范围的声明。 返回;}路径=路径+“module.js”; ---> 变量 <--- 完成=假;functionfetchDoneCallback(){完成
[警告]尝试使用单个“var” 每个范围的声明。 {返回;}var 回调=空; --->变量 <--- 递归=null;if(typeofarg1=="函数"
[警告]尝试使用单个“var” 每个范围的声明。 [dep];}}}为( ---> var <--- 模块中的 prod[modId].prod){
[警告]尝试使用单个“var” 每个范围的声明。 (true);return;}else{ --->变量 <--- dependents=depends[moduleId];for(var
[警告]尝试使用单个“var” 每个范围的声明。 dependents=depends[moduleId];for( ---> var <--- 索引 依赖者){$.jswaf.unloadModule
[警告] 使用“eval”不是 受到推崇的。此外,使用“eval” 降低压缩级别! ,函数(数据){var conf= --->评估 <---(数据);var css=conf.css
[警告]尝试使用单个“var” 每个范围的声明。 {var 会议=评估(数据); --->变量 <--- css=conf.css;for(i 在
[警告]发现未声明的符号: $j){$.jswaf={}; ---> $j <--- =$.jswaf;var 资源={}
[警告]发现未声明的符号: 工业 evtListeners=getListeners(evt);for( ---> ind <--- in evtListeners){setTimeout(evtListeners[ind]
[警告]发现未声明的符号: 我等待_TIME_EVENT_FIRE);}}否则{for( ---> i <--- =eventfired[evt];i>0;
[警告]发现未声明的符号: mod ;删除依赖[modId];for( ---> mod <--- 取决于){var deps=依赖[mod
[警告]发现未声明的符号: dep deps=depends[mod];for( ---> dep <--- 以 deps 为单位){if(dep==modId)
我需要单独安装 Rhino 才能让 YUI 压缩器工作吗?还是与 YUI 压缩器一起打包?
谢谢, 杰瑞赫
I tried compressing a JavaScript file of mine using YUI compressor, but somehow it did not do what was expected.
The JavaScript file is here.
The compressed output looked like this:
!window.$j&&(function($){$.jswaf={};$j=$.jswaf;var resources={},modules={},depends={},events={},eventfired={},modulepath={},themepath={}; [...]
and so on.
What I expected was that variables like "resources", "modules", "depends" etc would be reduced to small 1, 2 or 3 letter identifiers.
Is this what is supposed to happen? Or is something wrong with my source file?
BTW:
The compressor puked this output (I used -v option):
[WARNING] Try to use a single 'var'
statement per scope.
={},themepath={}; ---> var <--- _nullf=function(){};var WAIT_TIME_RECHECK_FETCHED[WARNING] Try to use a single 'var'
statement per scope. var
_nullf=function(){}; ---> var <--- WAIT_TIME_RECHECK_FETCHED=300;var
WAIT_TIME_LOAD_CALLBACK=20;var[WARNING] Try to use a single 'var'
statement per scope. ){};var
WAIT_TIME_RECHECK_FETCHED=300; --->
var <---
WAIT_TIME_LOAD_CALLBACK=20;var
WAIT_TIME_UNLOAD_CALLBACK=20;var[WARNING] Try to use a single 'var'
statement per scope.
WAIT_TIME_RECHECK_FETCHED=300;var
WAIT_TIME_LOAD_CALLBACK=20; ---> var
<--- WAIT_TIME_UNLOAD_CALLBACK=20;var
WAIT_TIME_EVENT_FIRE=20;var[WARNING] Try to use a single 'var'
statement per scope.
WAIT_TIME_LOAD_CALLBACK=20;var
WAIT_TIME_UNLOAD_CALLBACK=20; ---> var
<--- WAIT_TIME_EVENT_FIRE=20;var
WAIT_TIME_ADD_REPO_CALLBACK=20;$j[WARNING] Try to use a single 'var'
statement per scope.
WAIT_TIME_UNLOAD_CALLBACK=20;var
WAIT_TIME_EVENT_FIRE=20; ---> var
<---
WAIT_TIME_ADD_REPO_CALLBACK=20;$j.resources=resources;[WARNING] Try to use a single 'var'
statement per scope. ;}var
modpath=path+"modules/module-list.js";
---> var <--- thpath=path+"themes/theme-list.js";functionfinish(val[WARNING] Try to use a single 'var'
statement per scope.
+module+"/";}}for( ---> var <--- theme in thlist){theme=thlist[theme[WARNING] Try to use a single 'var'
statement per scope.
false){returnfalse;}for( ---> var
<--- res in obj.prod){if(resources[WARNING] Try to use a single 'var'
statement per scope. (var req in
module.req){ ---> var <---
found=false;var
dependents=depends[resources[WARNING] Try to use a single 'var'
statement per scope. .req){var
found=false; ---> var <---
dependents=depends[resources[req].id[WARNING] Try to use a single 'var'
statement per scope. [req].id];for(
---> var <--- moduleIdIndex in dependents){if(moduleIdIndex==module[WARNING] Try to use a single 'var'
statement per scope. ,arg3){var id="";
---> var <--- conf={};var callback=_nullf;[WARNING] Try to use a single 'var'
statement per scope.
="";var conf={}; ---> var <--- callback=_nullf;if(typeofarg1=="string"[WARNING] Try to use a single 'var'
statement per scope.
return;}path=path+"module.js"; --->
var <---
done=false;functionfetchDoneCallback(){done[WARNING] Try to use a single 'var'
statement per scope. {return;}var
callback=null; ---> var <---
recursive=null;if(typeofarg1=="function"[WARNING] Try to use a single 'var'
statement per scope. [dep];}}}for(
---> var <--- prod in modules[modId].prod){[WARNING] Try to use a single 'var'
statement per scope.
(true);return;}else{ ---> var <---
dependents=depends[moduleId];for(var[WARNING] Try to use a single 'var'
statement per scope.
dependents=depends[moduleId];for( --->
var <--- index in
dependents){$.jswaf.unloadModule[WARNING] Using 'eval' is not
recommended. Moreover, using 'eval'
reduces the level of compression!
,function(data){var conf= ---> eval
<--- (data);var css=conf.css[WARNING] Try to use a single 'var'
statement per scope. {var
conf=eval(data); ---> var <---
css=conf.css;for(i in[WARNING] Found an undeclared symbol:
$j ){$.jswaf={}; ---> $j <---
=$.jswaf;var resources={}[WARNING] Found an undeclared symbol:
ind
evtListeners=getListeners(evt);for(
---> ind <--- in evtListeners){setTimeout(evtListeners[ind][WARNING] Found an undeclared symbol:
i WAIT_TIME_EVENT_FIRE);}}else{for(
---> i <--- =eventfired[evt];i>0;[WARNING] Found an undeclared symbol:
mod ;delete depends[modId];for( --->
mod <--- in depends){var
deps=depends[mod[WARNING] Found an undeclared symbol:
dep deps=depends[mod];for( ---> dep
<--- in deps){if(dep==modId)Do I need to install Rhino separately for YUI compressor to work? Or is it packaged along with YUI compressor?
Thanks,
jrh
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我看来,如果您为所有 Javascript 变量添加声明,那就更开心了。
Looks to me as if it would be happier if you added declarations for all of your Javascript variables.