Hallo Felix
grundsätzlich sollte im Dokument nichts stehen, das ohne JavaScript keinen Sinn hat.
Wenn dem so wäre, würde es das template
-Element nicht geben.
Wenn es nur um ein paar Elemente geht, dann spielt es zumindest hinsichtlich der Performance keine Rolle, welche Variante man wählt. Ich würde dann vermutlich so wie du entscheiden und die Elemente im Script erzeugen. Genauso gut könnte man die noch nicht benötigten Elemente aber auch mit dem hidden
-Attribut ausblenden bis sie gebraucht werden.
Wenn es um deutlich mehr Markup für eine Komponente geht, dann kann es durchaus sinnvoll sein, dieses beim Laden der Seite parsen zu lassen, auch wenn es Benutzer gibt, bei denen das benötigte Skript am Ende nicht ausgeführt werden kann. – Für die Mehrzahl der Benutzer steht die Komponente schneller zur Verfügung.
Im Zweifel muss man halt abwägen und testen, welche Variante für die Benutzer am besten ist. Gibt es dabei keine Präferenz, dann kommt es darauf an, wie man seinen Code strukturieren will, was wiederum von vielen Faktoren abhängt. Da gibt es nicht die eine richtige Antwort.
Viele Grüße