Dieser Post ist schon mehr als fünf Jahre alt! Eventuell sind Informationen mittlerweile nicht mehr ganz aktuell oder meine Meinung hat sich inzwischen geändert. Bitte genieße alles mit einem Körnchen Salz!
Willkommen bei archiv.knuspermagier.de dem Webentwickler-Blog für echte Probleme.
Seit einiger Zeit frage ich mich, immer wenn ich irgendwo, sei es bei QUOTE.fm oder watched.li, Javascript einsetze, was denn wohl der Best Practise ist, was das Einbinden von Javascript auf Seiten angeht.
Beispiel: Seite A benutzt einen abgefahrenen jQuery-Slider-Effekt, der mit $('.images').superSlider({tausend parameter});
initialisiert werden muss. Auf Seite B gibt es ein paar Buttons, denen ich mit $('.buttons').live('click', function(){});
irgendwelche Events zuordne.
scripts.js
, die auf jeder Seite eingebunden wird und sowohl den Initialisierungscode für den Slider enthält als auch die ganzen Click-Events für quasi alle Elemente der ganzen Seite, die sowas brauchen. Die Datei hat am Ende 5000 Zeilen und 2000 jQuery-Selectoren.welcomepage.js
mit dem Slider-Kram, eine buttons.js
mit den Click-Events für die Buttons, und je nach Seite binde ich die entsprechende JS-Datei ein.<script>
-Tags.(Bestandteil dieser Frage ist nicht, wie ich die scripts.js
vielleicht aufteile um besser entwickeln zu können und sie dann am Ende zusammenfasse und minimiere oder dass ich dafür sorge, dass alle Inline-<script>
-Tags erst am Ende der Seite ausgegeben werden.)
<body>
eine entsprechende Klasse gibt und in der scripts.js
dann schaut, ob die Klassen gesetzt sind und dann entsprechend die Sachen ausführt. Aber ist das... sauber? Außerdem wird's dann wieder komplizierter, wenn man Overlays/Kram hat der per Ajax-nachgeladen wird.scripts.js
, sodass man sich die auch nicht einspart.Was ist nun die beste Lösung? Ich finde eigentlich die Dritte ganz schön, aber irgendwie ist Inline-Javascript ja immer etwas verpönt. Vielleicht gibt es auch noch eine Lösung, auf die ich nur nicht komme. Was sagen die echten Webentwickler dazu?
Kommentare, Feedback und andere Anmerkungen? Schreib mir eine E-Mail 🤓