Rolf B: Frage zum Wiki-Artikel „template“ fertig geladen

Beitrag lesen

problematische Seite

Hallo Henry,

Beispiel, ich packe in einen Template-Tag diverse externe Scripts hinein,

Es tut mir fast weh, aber ich möchte das auf self-typische Weise beantworten: Löse dieses Problem so, dass Du es gar nicht entstehen lässt.

Wirklich. Ich würde das lassen. Entweder ist das Template ein Singleton, der kein- oder einmal aktiv wird, und über eine ID gefunden werden kann. Sowas kann eigenes Script mitbringen und das Script weiß dann auch, wo auf der Seite es das Template suchen muss. Wenn das Script mit anderen Scripten auf der Seite interagieren muss, ist dies der falsche Ansatz. Ein load Event auf dieses Script-Element zu registrieren würde bedeuten, dass Du das DOM, das aus dem Template entsteht, beim Einbinden erstmal nach script-Elementen durchsuchen musst. Von diesem Ansatz würde ich abraten.

Im Normalfall ist ein Template aber mehrfach verwendbar, und wenn es dann Script lädt, lädt auch das Script mehrfach. Ohne zu wissen, wo nun das neue Stück DOM steht, das aus dem Template entstanden ist.

Templates sind aus meiner Sicht etwas, das zum Gesamtkonzept einer Seite gehört. Ich gestalte eine Seite, und ich erzeuge mit JS neue Teile im DOM. Diese hole ich aus einem Template. Wenn diese Teile zum Funktionieren Script benötigen, dann sollte dieses Script unabhängig vom Template geladen werden. Und dann ist es in der Gesamtarchitektur der Seite auch bekannt. Vorzugsweise als Modul - ECMAScript oder AMD.

Wenn das Script auf Teile des Templates aufmerksam gemacht werden muss, sollte es eine Registrierfunktion anbieten, mit der man das neue DOM-Fragment mit dem Script verknüpft. Oft ist das aber nicht nötig, über Event Bubbling kann man schon eine Menge tun.

Die Frage ist auch, ob ein Template dann der richtige Weg ist oder ob man nicht über ein custom element nachdenken sollte.

Rolf

--
sumpsi - posui - obstruxi