Проверьте JavaScript на отсутствие ";" до сжатия - PullRequest
5 голосов
/ 28 января 2011

Я делаю некоторые оптимизации и решил сжать мои файлы JavaScript с помощью YUI Compressor .Проблема в том, что некоторые строки кода отсутствуют ";"в конце концов, поскольку javascript позволяет это, и разработчики не обращают на это особого внимания.

Будет ли проблема при сжатии кода?Если это так, есть ли способ проверить JavaScript на наличие пропущенных строк ";"?

Ответы [ 4 ]

9 голосов
/ 28 января 2011

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

3 голосов
/ 28 января 2011

Согласно этому SO-ответу , YUI Compressor может справиться с этим.

2 голосов
/ 17 января 2013

Я провел простой тест на трех компрессорах JavaScript: Yuicompressor, Yuglify и Google Closure Compiler.На моем компьютере с Ubuntu 12.10 я загрузил двоичные файлы каждого компрессора, а затем протестировал этот файл на каждом из них:

function dbz(){
    var goku = 1
    var vegeta = 2
    var freeza = 3
    console.log(goku + vegeta + freeza)
}
dbz()

И вот результаты:

Yuicompressor(2.4.7):

function dbz(){var b=1;var c=2;var a=3;console.log(b+c+a)}dbz();

Yuglify (0.1.2):

function dbz(){var e=1,t=2,n=3;console.log(e+t+n)}dbz();

Closure-Compiler (версия 20121212 ревизия 2388):

function dbz(){console.log(6)}dbz();

Хотя это очень простой пример, все отлично работало со строками с пропущенными точками с запятой.Все они обнаружили строки без точек с запятой в конце, добавили их и впоследствии удалили разрыв строки.

1 голос
/ 28 января 2011

Вы всегда можете использовать регулярные выражения, чтобы найти новые строки, которые не имеют; перед ними, и естественно делать исключения для таких вещей, как пустые строки,)} и т. д.

Но, честно говоря, если он на самом деле не делает такого рода вещи автоматически, кажется, что он действительно сломан \ просто плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...