legitime Lösung oder nicht?
Gina
- javascript
Hallo alle zusammen,
sorry dass ich so eine blöde Überschrift gewählt habe, mir ist nix Vernünftigeres eingefallen.
Die Frage stellt sich mir, weil ich etwas versucht habe, das mir aus der Programmierung mit C sehr geläufig ist - eine Art "include". Der entsprechende Code Schnipsel in HTML sieht folgendermassen aus:
<script src="/scripts/myScripts.js" type="text/javascript"></script>
<script src="./Images.js" type="text/javascript"></script>
in dem Images.js ist ein Daten-Array ausgelagert, das je Verzeichnis innerhalb des Webspace unterschiedlich aussieht, von der Struktur her jedoch überall gleich ist. Ich wollts einfach nicht - aus Gründen der Normierung - direkt im HTML Dokument stehen haben. Vorweg: es funktioniert!
Aber: ist das legitim, oder riskier ich damit eines Tages, auf den Bauch zu fallen? In der SELFHTML Dok konnte ich dazu nichts finden.
Danke u. Gruss
Gina
Hi,
Aber: ist das legitim, oder riskier ich damit eines Tages, auf den Bauch zu fallen?
es ist definitiv legitim und im Sinne eines modularen Aufbaus. Beachte jedoch, dass Du mit steigender Anzahl eingebundener Ressourcen auf Performance-Probleme der anderen Art stoßen wirst: Die Requests werden größtenteils seriell abgearbeitet und behindern dadurch den Seitenaufbau.
Cheatah
Hi,
Aber: ist das legitim, oder riskier ich damit eines Tages, auf den Bauch zu fallen?
es ist definitiv legitim und im Sinne eines modularen Aufbaus. Beachte jedoch, dass Du mit steigender Anzahl eingebundener Ressourcen auf Performance-Probleme der anderen Art stoßen wirst: Die Requests werden größtenteils seriell abgearbeitet und behindern dadurch den Seitenaufbau.
Cheatah
Danke Cheatah,
die Antwort beruhigt mich. Noch mehr Ressourcen möchte ich eigentlich nicht einlagern, und vom Datenvolumen halten sich diese Includes im Rahmen (< 1KB)
Liebe Grüsse
Gina
Hi,
die Antwort beruhigt mich. Noch mehr Ressourcen möchte ich eigentlich nicht einlagern, und vom Datenvolumen halten sich diese Includes im Rahmen (< 1KB)
Daten kann man komprimiert übertragen. Die sind nicht (mehr) so das Problem. Aber das jedesmal ein Request gesendet werden muß, auf deren Abarbeitung der Browser wartet, das ist schon ärgerlicher. Will heißen: 1*10 KB sind Peanuts, 10*1 KB sind ärgerlich.
Tips wären da z.B., externe JS möglichst am Ende der Seite laden zu lassen, oder den Server den jeweiligen JS-Code passend zusammenstellen zu lassen und an einem Stück anzubieten ...
Gruß, Cybaer
Hi,
Daten kann man komprimiert übertragen. Die sind nicht (mehr) so das Problem. Aber das jedesmal ein Request gesendet werden muß, auf deren Abarbeitung der Browser wartet, das ist schon ärgerlicher. Will heißen: 1*10 KB sind Peanuts, 10*1 KB sind ärgerlich.
Tips wären da z.B., externe JS möglichst am Ende der Seite laden zu lassen, oder den Server den jeweiligen JS-Code passend zusammenstellen zu lassen und an einem Stück anzubieten ...
Gruß, Cybaer
Hallo Cybaer
Deine Einwände sind komplett richtig, aber mein Ansatz ist ein anderer. Beim Eintritt in eine Diaschau wird ein - ich möchte es Rahmendokument nennen - geladen. Das ist auch der Moment, wo die zentrale Skriptdatei myscripts.js geladen wird. Anschliessend an myscripts wird das 'Include-File' geladen, wie gesagt, vernachlässigbar klein. Ich weiss, ein open() dauert relativ lange, aber es ist ja nur dieses eine Mal. Nachdem dies alles passiert ist, werden in dem Dokument nur noch die Bilder und Über- bzw. Unterschriftstexte ausgetauscht. So eine Diaschau kann 100 Fotos umfassen, da ist das einmalige Laden der Include-Datei mit dem Array eigentlich keine Sache. Trotzdem Euch allen Danke für die Denkanstösse.
Ich spreche bei dem Dokument für das dynamische Nachladen und Anzeigen der Fotos von einem Rahmendokument. Das hat mich anfangs auch auf die Idee gebracht, das Ganze mit Framesets zu lösen. Was mich schnell wieder davon abgebracht hat, ist, dass Frames in HTML4.01 Strict nicht zugelassen sind. Und nach meinen ganzen bisherigen Erfahrungen wird die Strict Variante von den heute gebräuchlichen Browsern noch am zuverlässigsten umgesetzt. Also, ganz gedankenlos gehe ich nicht an ein solches Projekt heran ;-)
Und ansonsten, was Javascript betrifft, da bin ich noch vergleichsweise Neuling. Aber fast 20 Jahre berufliche Erfahrung in Programmierung und Datenmodellierung etc. haben mich defensives Programmieren gelehrt, d.h. der Grundsatz "weil nicht sein kann, was nicht sein darf ..." existiert für mich eh schon lang nicht mehr. Auf der Anwenderseite ist immer alles möglich.
Aber, wie schon weiter oben geschrieben, danke für alle Denkanstösse, Verbesserungsvorschläge und Tips. Die nehme ich immer gerne entgegen, auch weil sie selbst für einen 'alten Programmierhasen' immer wieder wichtig sind.
Liebe Grüsse
Gina
Hi,
in dem Images.js ist ein Daten-Array ausgelagert, das je Verzeichnis innerhalb des Webspace unterschiedlich aussieht, von der Struktur her jedoch überall gleich ist. Ich wollts einfach nicht - aus Gründen der Normierung - direkt im HTML Dokument stehen haben. Vorweg: es funktioniert!
Wie sieht die Seite aus, wenn Javascript deaktiviert ist? Funktioniert's dann immer noch?
cu,
Andreas
Hi,
...
Wie sieht die Seite aus, wenn Javascript deaktiviert ist? Funktioniert's dann immer noch?
cu,
Andreas
Hallo Andreas,
es handelt sich dabei um eine Diashow, die in dem Fall, wo JS deaktiviert ist, sowieso nicht funktioniert. Dann kommt sowieso ein noscript Block.
Gruss
Gina
Hi,
Wie sieht die Seite aus, wenn Javascript deaktiviert ist? Funktioniert's dann immer noch?
es handelt sich dabei um eine Diashow, die in dem Fall, wo JS deaktiviert ist, sowieso nicht funktioniert. Dann kommt sowieso ein noscript Block.
Wieso?
Eine Diashow basiert auf einer Liste von Bildern, und eine Liste, die Bilder enthält, ist auch im HTML-Code sehr gut aufgehoben.
Wenn kein JS verfügbar, dann kann der Nutzer sich die Liste von Bildern auch so gut anschauen.
Wenn JS verfügbar ist, dann forme die Liste so um, wie es für die Diashow passt - also ggf. im DOM neue Element erzeugen, vorhandene umhängen, und/oder per CSS andere Formatierungen zur Anwendung bringen, als im kein-JS-Fall.
MfG ChrisB
Cheatah hat es mir sehr detailliert beantwortet. Danke dafür