molily: Kontext eines nachgeladenen Scriptes

Beitrag lesen

Hallo,

Wenn ich dich richtig verstanden habe, bekomme ich die Scripte also nur über eval in einen anderen Kontext, wobei das synchrone Nachladen bei meiner Anwendung kein Problem ist.

Ja. Mit einem direkten eval-Aufruf bekommt man ein anderes Script lokale Variablen erzeugen lassen, wenn es denn brav 'var' verwendet. Außerhalb der jeweiligen Funktion, in der das eval steht, sind diese Variablen aber nicht ohne weiteres verwendbar.

wenn sich die nachgeladenen Module/Funktionen in das "Hauptmodul" integrieren sollen, müssen diese nicht den Namen das Hauptmoduls kennen?

Ja, es muss zumindest ein gemeinsames bekanntes Objekt geben.
Aber Modul A kann ja Modul B laden und darauf zugreifen, wenn beide gemäß dem Revealing Module Pattern ausschließlich die globalen Namen »A« und »B« besetzen.

Bei RequireJS sind es die Methoden require() und define(), die allen bekannt sind. Sie halten die Module intern (also privat) vor, sodass keine weiteren
globalen Variablen nötig sind. Die Module selbst sind in diesen Funktionen gekapselt, die define übergeben werden. Schematisch ist das eine IIFE als Closure (ich habe nicht geprüft, ob es wirklich so umgesetzt ist):

(function (global) {  
  var derModulSpeicher = {};  
  global.require = function closure () {...};  
  global.define = function closure () {...};  
})(this);

Mathias