Подтвердить что ты не робот

Оставляя последнюю точку с запятой блока CSS

Несколько вопросов, касающихся этого:

  • Это хорошая практика?
  • Будет ли это в больших масштабах приводить к лучшему времени загрузки?
  • Может ли это привести к разрыву браузеров?
  • То же самое верно для последней функции в Javascript (/jQuery)?

Что я имею в виду, так это:

#myElement {
  position: absolute;
  top: 0;
  left: 0
}
4b9b3361

Ответ 1

Это хорошая практика?

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

Представьте, что вы начинаете с:

.foo {
    background-color: #F00;
    color: #000             <-- missing semi-colon
}

И затем кто-то добавляет некоторые стили:

.foo {
    background-color: #F00;
    color: #000             <-- missing semi-colon
    width: 30px;
    z-index: 100;
}

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

Будет ли это в больших масштабах приводить к лучшему времени загрузки?

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

Может ли это привести к разрыву браузеров?

Нет, это безопасно, поскольку браузеры правильно выполняют эту часть спецификации. Спецификация CSS2 определяет объявление таким образом:

Объявление либо пустое, либо состоит из имени свойства, за которым следует двоеточие (:), за которым следует значение свойства.

Что еще более важно:

... несколько объявлений для одного и того же селектора могут быть организованы в разделенные группы с запятой (;).

Это означает, что ; используется для разделения нескольких объявлений, но не требуется их завершения.

То же самое верно для последней функции в Javascript?

JavaScript - это совершенно другой зверь с совершенно другой спецификацией. Этот конкретный вопрос был подробно рассмотрен во время.

Ответ 2

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

  • Возможно, поскольку файл будет меньше, но разница должна быть незначительной. Если вы беспокоитесь о времени загрузки, Gzipping ваши файлы, прежде чем размещать их на сервере, вам будет хорошо.

  • Большинство браузеров достаточно умны, чтобы знать, что вы имеете в виду, но вам все равно придется беспокоиться о том, чтобы прикрепить ваш файл CSS, не заботясь о последнем стиле.

Ответ 3

  • Это хорошая практика?

По-моему, нет. Если вы добавите правило ниже последнего правила, легко забыть добавить точку с запятой.

  • Будет ли это в больших масштабах приводить к лучшему времени загрузки?

Не могу представить, что это сильно повлияет на время загрузки.

  • Может ли это привести к разрыву браузеров?

Нет, точки с запятой необходимы только для разделения правил в блоках CSS. Точки с запятой - это разделители, а не терминаторы.

  • То же самое верно для последней функции в Javascript (/jQuery)?

Да, не добавляйте его в интерпретатор JavaScript, чтобы добавить точки с запятой.

Ответ 4

Это немного улучшит время загрузки. С достаточно большим CSS файлом (s) он может даже быть заметным (ну, может быть, вообще может быть минификация, я сомневаюсь, что просто удалить конечную точку с запятой будет когда-либо).

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

Ответ 5

Это повторяющийся вопрос. См. Здесь:

Точка с запятой в CSS

Что касается применения полуколонии в JavaScript, функции не должны заканчиваться точкой с запятой, если они не назначены декларативно, а именно. var a = function() {}; Однако браузеры выполняют автоматическую вставку с запятой, если вы непреднамеренно (или намеренно) оставьте их.

Ответ 6

Удаление объявления останавливается не будет "ломать" браузеры, но все равно должно остаться для автоматизированного minifiers (особенно, если вы обеспокоены время загрузки - только точки с запятой не будут сильно отличаться), но их следует избегать в источнике по причинам удобства обслуживания.

Если вы ищете лучшие практики, Правила форматирования CSS в Google css styleguide - это очень хорошее место для начала - не слепо применять их предложение, но чтобы увидеть их рассуждения позади него.

Используйте точку с запятой после каждого объявления. Завершить каждую декларацию точка с запятой для согласованности и причин расширяемости.

/* Not recommended */
.test {
  display: block;
  height: 100px
}
/* Recommended */
.test {
  display: block;
  height: 100px;
}

Javascript - это совсем другая история: короткий ответ всегда используется с запятой, никогда не полагаться на неявное вложение, но я никогда не видел ответа лучше и более тщательно, чем это предписано Google в еще одном стиле их:

Есть пара мест, где недостающие точки с запятой, в частности, опасно:

// 1.
MyClass.prototype.myMethod = function() {
  return 42;
}  // No semicolon here.

(function() {
  // Some initialization code wrapped in a function to create a scope for locals.
})();



var x = {
  'i': 1,
  'j': 2
}  // No semicolon here.

// 2.  Trying to do one thing on Internet Explorer and another on Firefox.
// I know you'd never write code like this, but throw me a bone.
[normalVersion, ffVersion][isIE]();



var THINGS_TO_EAT = [apples, oysters, sprayOnCheese]  // No semicolon here.

// 3. conditional execution a la bash
-1 == resultOfOperation() || die();

Итак, что происходит?

  • Ошибка JavaScript - сначала возвращается функция возврата 42 с помощью вторая функция в качестве параметра, то число 42 называется "что приводит к ошибке.
  • Вы, скорее всего, получите" нет такого свойства в undefined "во время выполнения, когда он пытается вызвать x[ffVersion][isIE]().
  • die вызывается, если resultOfOperation() не имеет значения NaN и THINGS_TO_EAT получает назначил результат die().

Почему?

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

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

Ответ 7

Это хорошая практика?

Большинство ответов здесь говорят "нет". Я абсолютно согласен - с традиционным форматированием CSS, пропущенную точку с запятой слишком легко упустить. Но этого не должно быть.

Несколько слов о JavaScript

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

thisIsAlright = {
    one: "one",
    two: "two",
    three: "three",
    four: "four"
}

thisIsWrong = {
    one: "one",
    two: "two",
    three: "three",
    four: "four",
}

// It normally takes a second or two to spot the mistake. Easy to overlook.

itsHardToGetThisWrong =
  { one: "one"
  , two: "two"
  , three: "three"
  , four: "four"
  }

Существует популярное соглашение под названием "стиль с запятой" , который элегантно общается с этой проблемой. В качестве бонуса, если вы используете VCN, например Git, вы получаете clean diffs, используя это соглашение. Многие люди (включая меня) рассматривают его не только как более надежные, но и как более читаемые.

Вернуться к CSS

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

#myElement
  { position: absolute
  ; top: 0
  ; left: 0
  }

Ответ 8

Это хорошая практика?

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

Будет ли это в больших масштабах приводить к лучшему времени загрузки?

Да, размер меньшего размера. Хотя, разница незначительна, и процессы минимизации автоматически сделают это.

Может ли это привести к разрыву браузеров??

Нет

То же самое верно для последней функции в Javascript (/jQuery)?

Нет, это было бы "недопустимым", чтобы исключить полуколонны в конце оператора функции.

Ответ 9

Основываясь на моем опыте, 1) Это не хорошая практика. 2) Даже в очень больших масштабах время загрузки будет незначительным. 3) Не известно ни о каком браузере, который мог бы от него отказаться. 4) То же самое верно для jQuery

Ответ 10

Для CSS я пробовал это в IE9, FF, GC, Safari и Opera, и это не помогло.

Что касается Javascript, я получил ошибку в FF и GC, поэтому я бы сказал, что не делайте этого на скриптах. Что касается времени загрузки, разница не будет заметна.