Следует ли размещать ссылку на файл JavaScript Modernizr в заголовке страницы? Я всегда стараюсь размещать все скрипты внизу страницы и хотел бы это сохранить. А если это нужно в голове, зачем?
следует ли помещать файл Modernizr в голову?
Ответы (4)
Если вы хотите, чтобы Modernizr загружался и запускался как можно скорее, чтобы предотвратить FOUC, поместите его в <head>
Из их руководства по установке:
Поместите теги сценария в
<head>
вашего HTML. Для лучшей производительности вы должны сделать так, чтобы они следовали за ссылками на вашу таблицу стилей. Причина, по которой мы рекомендуем разместить Modernizr в голове, двоякая: HTML5 Shiv (который включает элементы HTML5 в IE) должен выполняться перед<body>
, и если вы используете какой-либо из классов CSS, которые добавляет Modernizr, вам понадобится чтобы предотвратить FOUC.
Я бы сказал, что нет: каждый скрипт, который вы помещаете в <head>
, будет блокировать рендеринг и дальнейшее выполнение скрипта. Единственное, что делает Modernizr, что должно происходить в <head>
, - это интегрированный html5shiv, который взламывает поддержку тегов HTML5 в Internet Explorer 8 и более ранних версиях.
Я тестировал это вчера и обнаружил, что это довольно важно - на сайте, над которым я работаю, который уже довольно хорошо оптимизирован, добавление этого единственного скрипта в голову задерживало время загрузки на ~ 100 мс в IE9, что даже не выигрывает от заточки!
Поскольку около 90% моего трафика поступает из браузеров, которые изначально поддерживают HTML5, и у меня нет основного CSS, который требует, чтобы классы modernizr отображались правильно при первоначальном рендеринге, я использую этот подход, который помещает html5shiv в условный комментарий и загружает модернизр без встроенной регулировочной шайбы:
<html>
<head>
…
<!--[if lt IE 9]>
<script src="html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
…
<script src="modernizr.custom.min.js"></script>
</body>
</html>
Пол Айриш теперь предполагает, что для ›75% сайтов размещение Modernizr в head
бесполезно.
Переместите Modernizr вниз
У него больше возможностей для возникновения неожиданных ситуаций, однако для пользователя гораздо лучше вообще не иметь сценариев в голове.
Бьюсь об заклад, ›75% сайтов не нуждаются в этом в голове. Я бы предпочел изменить это значение по умолчанию и обучить 25%, чем смотреть, как мы замедляем работу всех этих сайтов.
https://github.com/h5bp/html5-boilerplate/issues/1605
Как насчет использования условных операторов IE немного по-другому? Что все думают об этом решении:
В тегах <head></head>
:
<!--[if lt IE 9 ]>
<script src="/path/to/modernizr.js"></script>
<![endif]-->
</head>
Перед концом тега </body>
:
<!--[if gt IE 8]><!-->
<script src="/path/to/modernizr.js"></script>
<!--<![endif]-->
</body>
Это приведет к загрузке Modernizr в заголовке для IE8 и ниже, и он будет загружаться раньше тела для любых других браузеров.
Открытое обсуждение плюсов и минусов приветствуется в комментариях.