2009-02-25 9 views
10

Die Frage sagt schon ziemlich alles.Wie schlimm ist es, Javascript außerhalb der Kopfzeile zu setzen?

Ich fange an, einige Funktionen zu meinem weekend project hinzuzufügen. Es ist eine kleine App für mich und ein paar Freunde, da wir Austauschstudenten sind, ist es ein bisschen nützlich für uns.

Aber die Sache ist die folgende, ich mache das in PHP und Strukturierung alles mit Includes, damit ich den Code getrennt bekommen kann. Einige dieser Code-Teile sind abhängig von Javaspitzen, also wie schlimm ist es, ein Javascript in der Mitte des Körpers zu platzieren? Oder sollte ich nur doppelte Includes machen, damit das Javascript in der Kopfzeile bleibt?

Antwort

2

Es ist vollkommen in Ordnung, Javascript in den Körper zu platzieren. Es gibt sogar so etwas wie "Inline" Javascript. Übertreib es einfach nicht. Wenn Sie Ihre Skripte in eine separate Datei packen können (was nicht immer möglich ist), wird Ihr Code besser wartbar.

1

Es gibt gute und schlechte Gründe dafür.

GOOD) Wenn das Skript für die Erstellung Ihres Seiten-DOMs nicht entscheidend ist, sollten Sie es so spät wie möglich durchführen, wie es Jim Puls vorschlägt, normalerweise ganz unten auf der Seite im BODY-Wurzelknoten. Das ist gut, weil es dem XHTML ermöglicht, sofort zu rendern, was einen psychologischen Effekt erzeugt, dass die Seite "schneller lädt". In Wirklichkeit wird es mit der gleichen Geschwindigkeit geladen, mit der Ausnahme, dass der Browser keine CPU-Zyklen ausführt, um JS herunterzuladen, zu interpretieren und auszuführen, während der Benutzer auf ein weißes Browserfenster starrt.

BAD) Skript-Tags werden normalerweise heruntergeladen und in der Reihenfolge interpretiert, in der sie eingeschlossen sind. Dies bedeutet, dass Sie sorgfältig die Reihenfolge verwalten müssen, in der sie enthalten sind. Da sie seriell (einzeln) geladen werden, zahlen Sie hohe Kosten für jede weitere Datei, die Sie referenzieren, da der Browser eine Verbindung aufbauen, den Cache überprüfen, herunterladen muss usw. Tricks wie IEs "DEFFER" sind kein Standard. Aus diesem Grund würde ich sehr empfehlen, dass Sie Ihr Javascript in einer einzigen Datei packen, wenn Sie von der Entwicklung zur Produktion gehen, so dass Benutzer nicht mehrere Verbindungen seriell herstellen müssen. Stellen Sie außerdem sicher, dass die gzip-Komprimierung aktiviert ist.

GOOD) Es gibt eine Möglichkeit, Skripte mit AJAX zu laden - Sie rufen Ihren Server auf, fragen nach dem JS und lösen ein Ereignis aus, wenn die Datei geladen wird. Sie können dann eval (oder eine sicherere Variante) aufrufen, die ihre Symbole in den Geltungsbereich bringt. Dies ermöglicht parallele Downloads von Skripten.

GOOD & BAD) In ​​IE müssen Sie vermeiden, den DOM-Baum zu manipulieren, bevor das DOM vollständig geladen wurde. Schauen Sie sich das 'dom: loaded' Event an.