【问题标题】:Preserve custom blocks with YUI Compressor使用 YUI Compressor 保留自定义块
【发布时间】:2011-11-13 17:10:38
【问题描述】:

我正在使用YUI Compressor 来缩小 Javascript 文件。然而,这些 Javascript 文件包含一些我需要 YUI Compressor 忽略的自定义内容(嵌入的 JSP 标签)。我正在寻找类似于htmlcompressor 中的“自定义保存规则”的内容。

有谁知道 YUI Compressor 是否可以做到这一点?如果没有,任何人都可以提出替代方案吗?

【问题讨论】:

    标签: javascript minify yui-compressor


    【解决方案1】:

    如果您使用 JSP 生成 javascript,则压缩 JSP 脚本的输出,而不是之前。

    如果你不能,你应该把静态的javascript分开,单独提供动态的javascript。

    【讨论】:

    • 好的建议,谢谢。然而,第一种方法是不可行的。第二种方法当然可行,但需要进行重大改写。
    • 如果您认为需要动态生成和压缩大型 javascript 文件,我认为您可能做错了事。如果您正在寻找解决方法,只需在 JSP 标记处放置一些占位符并在压缩后替换它。您必须确保无论您的占位符是什么,也最终会出现在最终输出中......所以它可能是某种字符串。
    • 我实际上并没有动态生成 javascript,但是我的用例有点复杂,不值得深入研究。不过,占位符的想法很有趣。
    • 嗯,你肯定是动态生成部分 JS,否则你不需要 JSP 对吧?
    【解决方案2】:

    YUI compressor docs,您也许可以使用“提示”来做到这一点:

    + It is possible to prevent a local variable, nested function or function
    argument from being obfuscated by using "hints". A hint is a string that
    is located at the very beginning of a function body like so:
    
    function fn (arg1, arg2, arg3) {
        "arg2:nomunge, localVar:nomunge, nestedFn:nomunge";
    
        ...
        var localVar;
        ...
    
        function nestedFn () {
            ....
        }
    
        ...
    }
    

    在您的情况下,您可以添加一个嵌套函数并为该函数使用“nomunge”提示。

    【讨论】:

    • 好主意,还没想过这个。不幸的是,它不起作用。实际问题是 YUI Compressor 尝试解析 Javascript 文件并失败,因为代码在语法上不正确(由于嵌入的 JSP 标记)。我需要的是一种告诉 YUI 在解析时“忽略”JSP 标记的方法......
    • 你不能把那些麻烦的部分提取到另一个JS而不压缩它吗?这将是我能想到的最简单的解决方案,而不会过多地改变您的流程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多