Спецификации говорят, что они будут загружены по порядку, но загруженный означает, что загрузка не выполнена, поэтому, если файл завершает загрузку раньше, чем другой, он будет запущен первым, поэтому я бы не рекомендовал вам зависеть от порядка выполнения с использованием атрибутов 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 на зависимом скрипте убедиться, что они всегда будут выполняться в таком порядке? Кажется, это работает в моих тестах, но я не знаю достаточно о том, как работает парсер, чтобы быть уверенным.

Ответы на вопрос(3)

Ваш ответ на вопрос