Минификатор Ajax (AjaxMin) — обработка для JavaScript?

#javascript #c# #ajax #asp.net-ajax

Вопрос:

Поэтому я просто уменьшал, используя AjaxMin.dll в моем проекте при каждой сборке/развертывании для всех файлов js/css с настройками по умолчанию. Это оказалось плохой идеей. В одном из сторонних файлов javascript, которые у нас есть, есть хороший оператор eval со ссылками на некоторые переменные или параметры. Когда он уменьшается, исходные переменные переименовываются и не переименовываются в операторе eval. Это вызвало большую старую ошибку в производстве (FML).

Я решил, что мне нужно выбрать более безопасные настройки для процесса минимизации.

Документация по AjaxMin очень ммм неясна. http://www.asp.net/ajaxlibrary/AjaxMinWithAndEval.ashx

Или, может быть, я просто этого не понимаю. Я использую код (с DLL), а не командную строку.

У CodeSettings EvalTreatment класса есть опция класса, но я не уверен, какой вариант лучше выбрать…

Из Microsoft (источник DLL):

 using System;

namespace Microsoft.Ajax.Utilities
{
    public enum EvalTreatment
    {
        Ignore = 0,
        MakeImmediateSafe = 1,
        MakeAllSafe = 2,
    }
}
 

Я думаю MakeImmediateSafe (1) или MakeAllSafe (2)? Что вы, ребята, думаете?

Заранее спасибо!

Комментарии:

1. У меня была аналогичная проблема, когда я использовал Ajax.Net (старая версия), и я уменьшал его общий javascript, который содержал строку: eval("r=" .... и я изменил его r=eval("r=" ... , что исправило его для меня.

Ответ №1:

Если вы хотите быть абсолютно уверены, что уменьшенные результаты всегда будут работать, используйте опцию MakeAllSafe. Это гарантирует, что никакие переменные ни в области оператора eval, ни в каких-либо родительских областях не будут переименованы.

Комментарии:

1. Да, я закончил тем, что сделал это. Сделал CssComment. Все так же хорошо для режима комментариев на CSS. Вы создали поистине потрясающую библиотеку классов. Спасибо!.