Оптимизация Javascript: Какой инструмент может конденсировать последовательные конкатенации строк? - PullRequest
2 голосов
/ 15 ноября 2011

Это упрощенный пример, но я работаю над переводчиком кода, который выводит javascript.Из-за того, как выполняется анализ, я должен выводить перевод по частям.Т.е. я получаю файл javascript, который выглядит примерно так, но выглядит намного дольше:

function coolfunc() {
    var result = "";
    greet = function(user,town) {
        var output = '';
        output += 'Welcome ' + user + '!';
        output += 'How is the weather in ' + town + '?';
        return output;
    }
    goobye = function(user,town) {
        var output = '';
        output += 'Farewell ' + user + '!';
        output += 'Enjoy the weather in ' + town + '!';
        return output;
    }
    result += "Some output 1";
    result += "Some output 2";
    result += greet("Larry","Cool town");
    result += goobye("Larry","Cool town");
    return result;
}

Есть ли какой-нибудь постпроцессор, который я мог бы использовать для сжатия вышеупомянутого в нечто вроде следующего:

function coolfunc() {
    greet = function(user,town) {
        var output = 'Welcome ' + user + '!'+'How is the weather in ' + town + '?';
        return output;
    }
    goobye = function(user,town) {
        var output = 'Farewell ' + user + '!'+'Enjoy the weather in ' + town + '!';
        return output;
    }
    var result = "Some output 1"+"Some output 2"+greet("Larry","Cool town")+goobye("Larry","Cool town");
    return result;
}

Если бы он мог объединить смежные статические конкатенации строк, то это было бы подливкой.

Я подумал, что это сделает компилятор yuicompressor или замыкание, но, насколько я могу судить, это не так.*


Редактировать:

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

1 Ответ

0 голосов
/ 16 ноября 2011

Если кто-то сталкивался с этим, похоже, что компилятор замыкания может справиться с этим с ревизии 1576 (http://code.google.com/p/closure-compiler/source/detail?r=1576)

...