El am besten Platz zum Unterbringen <script>
Tag ist vor dem Schließen </body>
Tag, so dass das Herunterladen und Ausführen den Browser nicht daran hindert, den HTML-Code im Dokument zu parsen,
Auch das externe Laden von JavaScript-Dateien hat seine eigenen Vorteile, z. B. wird es von den Browsern zwischengespeichert und kann die Ladezeiten der Seite beschleunigen, es trennt den HTML- und JavaScript-Code und hilft, die Codebasis besser zu verwalten.
Moderne Browser unterstützen aber auch einige andere optimale Möglichkeiten, wie async
y defer
um externe JavaScript-Dateien zu laden.
Asynchron und aufschiebend
Normalerweise beginnt die Ausführung einer HTML-Seite zeilenweise. Wenn ein externes JavaScript <script>
Element angetroffen wird, wird das HTML-Parsing angehalten, bis ein JavaScript heruntergeladen und zur Ausführung bereit ist. Diese normale Seitenausführung kann mit der Option defer
y async
Attribut.
Defer
Wenn ein defer-Attribut verwendet wird, wird JavaScript parallel zum HTML-Parsing heruntergeladen, aber erst ausgeführt, wenn das vollständige HTML-Parsing abgeschlossen ist.
<script src="/local-js-path/myScript.js" defer></script>
Async
Wenn das async-Attribut verwendet wird, wird JavaScript heruntergeladen, sobald das Skript gefunden wird, und nach dem Download wird es asynchron (parallel) zusammen mit dem HTML-Parsing ausgeführt.
<script src="/local-js-path/myScript.js" async></script>
Wann welche Attribute zu verwenden sind
- Wenn Ihr Skript unabhängig von anderen Skripten und modular ist, verwenden Sie
async
.
- Wenn Sie Skript1 und Skript2 mit
async
werden beide ausgeführt parallel zum HTML-Parsing, sobald sie heruntergeladen und verfügbar sind. und verfügbar sind.
- Wenn Ihr Skript von einem anderen Skript abhängt, verwenden Sie
defer
für beide:
- Wenn Skript1 und Skript2 in dieser Reihenfolge geladen werden, mit
defer
dann wird Skript1 garantiert zuerst ausgeführt,
- Dann wird Skript 2 ausgeführt, nachdem Skript 1 vollständig ausgeführt wurde.
- Dies ist erforderlich, wenn Skript2 von Skript1 abhängt.
- Wenn Ihr Skript klein genug ist und von einem anderen Skript abhängig ist vom Typ
async
dann verwenden Sie Ihr Skript ohne Attribute und platzieren es über allen async
Skripte.
Referenz: Externe JavaScript JS-Datei - Vorteile, Nachteile, Syntax, Attribute
1 Stimmen
Falls du auch nur nach einer einfachen Lösung suchst und einen serverseitigen Generator wie Jekyll verwendest, empfehle ich dir, das Skript mit einzubinden. Das ist viel einfacher!
3 Stimmen
Wenn Sie von einer Suchmaschine kommen und danach suchen: Viele der Antworten sind nicht eindeutig genau die Stelle, an der das "Skript-Tag" am Ende stehen sollte . Wenn das "script"-Tag après </body>', führt die HTML-Validierung zu folgenden Ergebnissen _" Fehler: Skript mit falschem Start-Tag " (Option ankreuzen "Quelle" und klicken Sie "prüfen"_ um den HTML-Quelltext zu sehen). Es sollte sein antes de </body>'. (Das Ergebnis ist ähnlich, wenn das "script"-Tag ganz am Ende steht, nach dem </html> Tag.)
1 Stimmen
Dies wird auch behandelt in Ist es falsch, den <script>-Tag nach dem </body>-Tag zu platzieren? .
5 Stimmen
T.L.D.R. hat es in die
<head>
Tag mitdefer
Attribut, oder noch besser, machen Sie Ihr Skripttype='module'
. Wir schreiben jetzt das Jahr 2022.