По сути, я хочу добиться этой index.html
структуры:
<html>
<head>
<!-- titles, metas and other "static" stuff -->
<link rel="preload/prefetch" ...> <!-- injected by webpack (ok) -->
<!-- By default compiled styles are injected here, in head, I want them in body -->
</head>
<body>
<div>
My static loading animation
All possible styling is inlined
It doesn't depend on anything!
It also could be anything, even just a plain "Loading..." text.
You still WON'T see it until all style's in head are loaded.
</div>
<div id="app">Vue application goes here</div>
<link rel="stylesheet" href="..."> <!-- Styles injected by webpack (WANTED!) -->
<script src="..."></script> <!-- Scripts injected by webpack (by default, OK) -->
</body>
Причина, по которой я этого хочу, заключается в том, что мой HTML полностью способен отображать анимацию начальной загрузки для пользователя, и я хочу, чтобы она отображалась мгновенно, как только index.html
загружается и не зависит от каких-либо других ресурсов. На самом деле, я думаю, что этого хотят все, просто сказать ...
Но Vue по умолчанию настроен на включение скомпилированного styles
в тег <head>
, который блокирует рендерингстраницы, пока эти стили не будут загружены. Я не могу найти никаких документов о том, как я мог бы изменить его.
Обновление: картинки!
Итак, мне удалось вручную смоделировать два варианта:
- стили вводятся в
<head>
(по умолчанию) - стили внедряются в
<body>
(требуется)
Вот изображения визуального разница:
1) стили вводятся в <head>
(по умолчанию):
2) стили вводятся в <body>
(хотел):
Надпись «html рендеринг» на изображениях означает, что пользователь фактически видит загружающую анимацию,определяется полностью внутри html (маленький кусочек svg и стиль в моем случае, в общем случае может быть чем угодно) и не зависит от каких-либо внешних ресурсов для его рендеринга.