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

Нужен ли Modernizr, если вы не используете обнаружение функции?

Я продолжаю прыгать в проекты, где Modernizr находится в голове, но он не используется (по крайней мере, для обнаружения функции). Теперь я люблю Modernizr, я часто использую его для обнаружения функций и резервных копий проектов, которые этого требуют; Тем не менее, последние три проекта, которые я вошел в него, сидят в голове без каких-либо названий классов обнаружения функций. Эти проекты используют vanilla javascript и/или вообще не требуют полиномов jQuery. 1 Это сказано... если вы не используете обнаружение функции и действительно не нужно загружать библиотеку jQuery 2 но Modernizr действительно делает что-то помимо создания HTTP-запроса добавления и ресурса для загрузки?

Я недостаточно силен с jQuery/javascript, чтобы понять, влияет ли это на что-то еще под капотом.


Edit

1 и 2 — Modernizr - это javascript и не требует библиотеки jQuery (что заставляет меня задаться вопросом, зачем загружается и библиотека jQuery, по крайней мере в этих случаях).

Modernizr.min только с #-shiv-cssclasses-load составляет 7.57 KB, тогда как html5shiv.min - всего 3 КБ.

4b9b3361

Ответ 1

Вообще говоря, Modernizr делает три вещи.

  • Он добавляет классы, указывающие на поддержку функций, позволяя применять различные стили к элементам в зависимости от того, какие функции они поддерживают.
  • Он позволяет запускать обнаружение функций, чтобы решить, следует ли запускать script/запустить a polyfill или нет.
  • Он вводит html5shiv, что позволяет старым браузерам понимать элементы HTML5.

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

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

Ответ 2

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

Основная цель Modernizr - использовать обнаружение через классы. поэтому вы можете сделать что-то вроде этого:

Пример, где вы хотите изменить поведение в зависимости от того, поддерживается ли поддержка клиента:

.flash #flashdiv
{
  display:block;
}   

.no-flash #flashdiv
{
  display:none;
}

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

Кроме того, вы можете использовать Modernizr для обнаружения функций HTML5 и обеспечения резервных копий (polyfills).

Например:

<script>
  if (Modernizr.canvas) {
    alert("This browser supports HTML5 canvas!"); //you can load js here. or use yepnope)
  }
</script>