YUI 压缩器未按预期运行

发布于 2024-08-16 02:13:26 字数 3867 浏览 9 评论 0原文

我尝试使用 YUI 压缩器压缩我的 JavaScript 文件,但不知何故它没有达到预期的效果。

JavaScript 文件位于此处

压缩输出如下所示:

    !window.$j&&(function($){$.jswaf={};$j=$.jswaf;var resources={},modules={},depends={},events={},eventfired={},modulepath={},themepath={}; [...]

等等。

我期望的是“资源”、“模块”、“依赖”等变量将被简化为 1、2 或 3 个字母的小标识符。

这是应该发生的事情吗?或者我的源文件有问题?

顺便说一句:

  1. 压缩器吐出了这个输出(我使用了-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)

  2. 我需要单独安装 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:

  1. 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)

  2. Do I need to install Rhino separately for YUI compressor to work? Or is it packaged along with YUI compressor?

Thanks,
jrh

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

盛夏尉蓝 2024-08-23 02:13:26

在我看来,如果您为所有 Javascript 变量添加声明,那就更开心了。

Looks to me as if it would be happier if you added declarations for all of your Javascript variables.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文