SquishIt 替换为 short

SquishIt replacing with short

我正在使用 SquishIt.

的 9.8.0 最新稳定框架

javascript 缩小有问题。当它缩小像 function(imReallyLong) to [=28= 这样的长变量时]函数(n)

这对于 minify 没问题,但前提是你不使用 eval()!

我的方法是:

Fire: function (jDto) {
    var sectionName = Enum.Parse(Enum.SectionID, jDto.SectionID);
    eval('Section.Init.' + sectionName + '(jDto)');
},

缩小后:

Fire: function (n) {
    var t = Enum.Parse(Enum.SectionID, n.SectionID);
    eval("Section.Init."+t+"(jDto)")
},

问题jDto变量。它被硬编码为字符串,SquishIt 无法识别它。

是否可以防止更改变量选项或类似的东西?还是更酷的框架?

谢谢。

这是缩小器行为,而不是挤压行为。

我认为您可以使用 MS Minifier 解决这个问题,方法如下 (Ajax Minifier (AjaxMin) - EvalTreatment for JavaScript?):

.WithMinifier(new MsMinifier(new CodeSettings { EvalTreatment = EvalTreatment.MakeAllSafe }))

YUI 压缩器有一个 ignoreEval 选项,看起来它允许调用 eval 的函数被压缩 (https://github.com/BillyChan501/YUI-Compressor-.NET/blob/master/Projects/Yahoo.Yui.Compressor/Model%20Tests/JavaScriptCompressorTest.cs#L218-L256)。所以你的例子可能 "just work" 使用默认的 YUI 选项进行缩小?

.WithMinifier<YuiMinifier>()