Encoder: wo sollte man es hinschreiben, wo lieber nicht?

Hallo

Mal angenommen meine Seite besteht aus verschiedenen Blöcken, wie etwa

  • Kommentare anzeigen und neuen hinzufügen
  • Events anzeigen und hinzufügen
  • Foto ansehen und uploaden

In der Seite (PHP) rufe ich verschiedene Funktionen auf, die diese Blöcke ausgeben oder nicht, je nach Wunsch. Jeder Block hat sein JavaScript zum Formulare prüfen, Infos ein/ausklappen, AJAX, Eventhandler und so.
Da frag ich mich jetzt wo ich dieses Script am besten notiere.

Ich könnte im head eine Funktion (PHP) aufrufen, die das Script bei Bedarf dort hinzufügt, beispielsweise das Script zu den Fotos nur dann wenn später auch wirklich der Fotoabschnitt eingetragen wird.
Oder ich nehms mit in den Fotoabschnitt im body, dann habe ich nur eine einzige Stelle wo ich den Fotobereich einfüge, aber dann steht das Script halt "mittendrin". Möglicherweise auch innerhalb weiterer divs oder anderer Strukturelemente der Seite.
Gibts da eine zu bevorzugende Vorgehensweise?

  1. @@Encoder:

    nuqneH

    Gibts da eine zu bevorzugende Vorgehensweise?

    Ja, JavaScript als letztes im 'body'. [PERFORMANCE-BP2]

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
  2. Hallo,

    ins HTML hinein solltest du die Scripte auf keinen Fall kippen – das verführt zu sehr dazu, HTML und JavaScript zu vermengen und zu verdrahten. Lagere sie auf jeden Fall in externe Scripte aus und schreibe unobtrusive JavaScript. Füge also das Event-Handling via JavaScript hinzu, indem du das HTML über Selektoren ansprichst.

    Aber deine Frage scheint wohl eher zu sein, wie du die Module und die zugehörigen JavaScripte organisierst. Da ergibt es m.M.n. Sinn, für jedes Modul eine eigene JavaScript-Datei anzulegen. Die kannst du dann speziell in dieser View laden. Das schließt natürlich nicht aus, dass es gemeinsame Basis-Scripte und -Bibliotheken gibt, die von allen Unterscripten benötigt werden.

    Dadurch hast du viele kleine JavaScripte, die immer nur dann eingebunden werden, wenn sie benötigt werden. Das hat Vorteile, aber auch Nachteile. Aus Performance-Gründen kann es sinnvoll sein, all diese Scripte automatisch zusammenzufassen, zu minifien und zu komprimieren. Dieses zusammengefasste Script kann dann auf jeder Seite eingebunden werden. Wenn die Teilscripte gut geschrieben sind, springen sie nur auf den zugehörigen Seiten an. (Es gibt auch verschiedene Bibliotheken, die einem dieses »Routing« vereinfachen und automatisch die auf einer Seite benötigten Scripte per JavasSript nachladen.)

    Allgemein solltest du dich mit Pattern wie Model View Controller beschäftigen, das dir bei solchen Strukturentscheidungen wertvolle Ideen liefert.

    Mathias

    1. Danke für die Ansätze!