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>()