Я читал об асинхронных сценариях в веб-приложениях и наткнулся на эту статью. В двух словах, в нем говорится, что сценарии javascript не выполняются до тех пор, пока не будут загружены и проанализированы все таблицы стилей css. Поэтому я попытался проверить это на себе на небольшом примере.
Как вы можете видеть в отчете о производительности, скрипт jquery отлично выполняется сам по себе, а затем загружается и анализируется css.
Может кто-нибудь объяснить, почему такое поведение?
Из-за этого CSS может блокировать синтаксический анализ в зависимости от порядка внешних таблиц стилей и скриптов в документе. Если в документе перед сценариями размещены внешние таблицы стилей, построение объектов DOM и CSSOM может мешать друг другу. Когда синтаксический анализатор достигает тега script, построение DOM не может продолжаться до тех пор, пока не завершится выполнение JavaScript, а JavaScript не может быть выполнен до тех пор, пока CSS не будет загружен, проанализирован и CSSOM станет доступным.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<title>React App</title>
</head>
<body>
<link rel="preload" onload="this.rel='stylesheet'" as="style" href='https://s3-eu-west-1.amazonaws.com/welcome.b2b.test/form/bundle.css'/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"/>
<script>
window.onload = function() {
console.log("window");
};
</script>
</body>
</html>