Спецификации говорят, что они будут загружены по порядку, но загруженный означает, что загрузка не выполнена, поэтому, если файл завершает загрузку раньше, чем другой, он будет запущен первым, поэтому я бы не рекомендовал вам зависеть от порядка выполнения с использованием атрибутов defer или async.
я следую рекомендации Google PageSpeed, чтобы отложить более сложные сценарии. Допустим, это код в моем<head>
:
<script src="/js/jquery.js"></script>
<script src="/js/functions.js"></script>
functions.js
Сценарий зависит от JQuery, поэтому важно, чтобыjquery.js
загружается и выполняется доfunctions.js
.
откладывать
<script src="/js/jquery.js" defer></script>
<script src="/js/functions.js" defer></script>
Пока это работает иfunctions.js
выполняется правильно, когда я загружаю страницу, я вижу ее мерцание, как будто CSS еще не загружен. Обратите внимание, что приведенный выше код находится в<head>
, Если я удалюdefer
атрибут изjquery.js
Мерцание исчезает. Это приводит меня к моему вопросу:
смешанный
<script src="/js/jquery.js" async></script>
<script src="/js/functions.js" defer></script>
Использует лиasync
на сценарии зависимости иdefer
на зависимом скрипте убедиться, что они всегда будут выполняться в таком порядке? Кажется, это работает в моих тестах, но я не знаю достаточно о том, как работает парсер, чтобы быть уверенным.