Условная компиляция JScript + сжатие JavaScript = препроцессор? - PullRequest
0 голосов
/ 28 июня 2011

Позволяет ли какой-либо из компрессоров JS выполнять #ifdef -процесс типа обработки с условной компиляцией JScript ?

Если @set to определяет «переменную», не может ли JS-компрессор удалить код, который логика условной компиляции определяет при некомпилированном?

Я немного не уверен в синтаксисе JScript, но, возможно, что-то вроде этого

/*@cc_on
    @set (@version = 1)
    @if (@version == 1)
        alert('Version 1');
    @else
        alert('Not version 1');
    @end
@*/

может сжаться в

alert('Version 1');

1 Ответ

0 голосов
/ 28 июня 2011

Компилятор замыкания может сохранять комментарии с помощью аннотации @ preserve , но ни компилятор замыкания, ни какой-либо другой компрессор на основе дерева разбора не справляются с работой в целом.

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

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

Одним из решений может быть компиляция всех ваших исходных файлов, за исключением того, который имеет директивы условной компиляции и который просто экспортирует переменные, которые используются другими исходными файлами.

...