Почему эти минимизированные комментарии в JS не нарушают код?

У меня есть веб-страница, прежде чем отправить ее в браузер, я удаляю несколько пробелов, табуляции и каждую новую строку, используя PHP.

                    $output = preg_replace('/\n/', '', $output);
$output = preg_replace('/( |    ){2,}/', ' ', $output);

Теперь, пересматривая код, я заметил, что в коде JS я оставил //comments

Просмотр исходного кода я вижу это:

[...]lback, args) {     //step == -1 -> loop    if (step > n) {   clearTimeout(tim[...]

Зачем этот комментарий (//step == -1 -> loop) не нарушайте код ?!

Почему, если я открываю инспектора, я вижу элементы в «порядке», как будто были «новые строки»?

Я думаю, что это проблема «новой строки», должны быть какие-то другие символы, которые сообщают браузеру конец строки и начало другой, не так ли?

Если да, как я могу определенно переместить код в одну строку и как я могу обрабатывать однострочные комментарии JS?

Спасибо

0

Решение

Возможно, в вашем файле используются новые строки типа DOS (возврат каретки + перевод строки, \r\n). Заменив перевод строки (\n), возврат каретки (\r) остается в файле, который является символом новой строки, используемым операционными системами Apple.

Это означает, что вы видите как

[...]lback, args) {     //step == -1 -> loop    if (step > n) {   clearTimeout(tim[...]

на самом деле

[...]lback, args) {\r     //step == -1 -> loop\r    if (step > n) {\r   clear[...]

Если вы также хотите удалить комментарии (имеет смысл свести к минимуму, но могут нарушить, например, условные комментарии Internet Explorer), вы можете заменить их через

$output = preg_replace("/\\/\\/[^\r\n]*", "", $output); // single-line comments
$output = preg_replace("/\\/*[\s\S]*?*\\/", "", $output); // multi-line comments

Вы должны сделать это до вы заменяете переводы строк.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]