SquishIt заменяет короткий

Я использую 9.8.0 последний стабильный фреймворк SquishIt.

Проблема с JavaScript минимизировать. Когда он минимизирует длинные переменные, такие как function(imReallyLong), чтобы function(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 не может этого знать.

Можно ли предотвратить изменение параметра переменной или что-то в этом роде? Или более крутые рамки?

Спасибо.

1 ответ

Решение

Это минимизирующее поведение, а не слабое.

Я думаю, что вы могли бы обойти это с помощью MS Minifier, используя что-то вроде этого ( Ajax Minifier (AjaxMin) - EvalTreatment для JavaScript?):

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

Существует опция ignoreEval для минимизатора YUI, которая выглядит так, как будто она позволяет сжатым функциям, вызывающим eval ( https://github.com/BillyChan501/YUI-Compressor-.NET/blob/master/Projects/Yahoo.Yui.Compressor/Model%20Tests/JavaScriptCompressorTest.cs#L218-L256). Таким образом, ваш пример может "просто работать", используя стандартные параметры YUI для минимизации?

.WithMinifier<YuiMinifier>()
Другие вопросы по тегам