JavaScript Funktionen nachladen. Ideenvvorschläge gesucht

K

koli.bri

Hallo.

ich stehe vor dem Problem, dass ich für ein Projekt eine Menge verschiedener JavaScript-Funktionen brauche (ich rechne mit über 100), die auch alle nacheinander aufgerufen werden.
(Info: Es handelt sich um einen JavaScript-"Interpreter" für eine "Scriptsprache" in Eigenentwicklung für ein Online-Spiel-System. Es werden "Codeblöcke" ala
Code:
SAY Hallo Welt
IF Schalter1 = 1
MOVE Char1 1 UP
ENDIF
SAVE
[...]
Interpretiert, und für jeden Befehl wird eine JavaScript Funktion benötigt, die den Befehl interpretiert. in der können auch durchaus httpRequests stehen (falls das wichtig ist)

Da man so gut wie jede Spieleinstellung mit diesem EventCode verändern können soll, braucht man auch eine Menge interpretierende Funktionen.

Jetzt stellt sich mir aber auch die Aufgabe, das ganze so bandbreitenschonend wie möglich zu gestalten.
Daher fällt es Flach, alle funktionen in eine Datei zu packen und die immer mit zu laden.
Da Safari sich dagegen sträubt, JavaScript-Dateien dynamisch nachzuladen, habe ich folgende Idee:
Mitttels eines HttpRequests lade ich den Quellcode für die entsprechende Funktion aus einer Datenbank aus (ich hab also vorher ein riesiges "switch/case") und macht die funktionen mittels eines "eval(geladener_Quellcode)" verfügbar.

Wäre das eine gängige Vorgehensweise?
wie sieht das mit der Geschwindigkeit der Scripts aus, da ja dann für jede Zeile eine Datenbankabfrage gestartet wird.
Wie würdest ihr das machen?

mfg
Lukas

PS.: Bei der Lösung würde ich freillich oft genutzte Funktionen NICHT auslagern, sondern direkt in der JavaScript-Datei lassen. :)
PPS.: Ja, ich bin mir bewusst, dass dann auch eine Überprüfung rein muss, ob die Funktion schon mal geladen worden ist :)
 
Mein erster Gedanke wäre ebenfalls ein eval() auf ein Array-Element. Das gigantische switch()-Konstrukt könnte man sich sparen, indem man assoziative Arrays in JavaScript mit dem generischen Objekttyp simuliert. Das würde auch die Frage beantworten, ob die Funktion schon geladen würde.

Der Codeschnippsel, den Du da gepostet hast, will aber auch interpretiert werden; lasst Ihr JavaScript da parsen, einen Syntaxbaum und eine Symboltabelle erzeugen?

Könnt Ihr Euch nicht die Scriptsprache sparen und den interpretierten Teil direkt in JavaScript schreiben?
 
Zuletzt bearbeitet:
Danke für die Anregung.

Das switch-Konstrukt, was ja im Grunde nur zu den entsprechenden httpReqquests weiterleiten würde, hab ich mir aber auf folgendem Wege gespart:
In der Datenbank stehen die Befehlsnamen als eigene Spalten in der Tabelle, so dass ich den Query anhand des Befehlsnamens aufbauen kannn ("SELECT code FROM befehle WHERE befehlname=name_aus_script").

Den Kram direkt als JavaScript zu schreiben halte ich nicht für sinnnvoll.
Mein spiel-Programm soll es auch anderen ermöglichen, Spiele zu gestalten, und ich möchte nur ungern allen Benutzern direkten zugriff auf JavaScript geben, nur damit die Ereignisse definieren können :)

Der Interpreter funktioniert auch bisher ganz gut, es fehlt halt nur ffü jeden möglichen Befehl die entsprechende Funktion in JavaScript.

Stellt uch das bitte nicht als hochentwickelte Sache an.
Es ähnelt ein wenig dem Automator von OSX. Man kann Befehle nacheinander ablaufen lassen, und einzelne IF-Abfragen machen (sogar verschachtelte *prahl* ) aber keine Schleifen oder dergleichen :)

mfg
Lukas
 
Zurück
Oben Unten