2016-06-05 4 views
0

Ich versuche, eine Liste von Daten zu meinem Array wie folgt zuzuordnen:mit Unterstreichungs Karte Ursachen erfordern verwenden, erfordern notloaded Ausnahme

this.data = []; 
_.map(dataList, function(element){ 
    var logic = require('./'+element+'/'+element); 
    var tempalte = require('text!./' + element + '/' + element + '.html'); 
    return { Logic : logic, Template : tempalte }; 
}); 

ich folgende Fehlermeldung erhalte, wenn es versucht: „Modulname“. .. "wurde noch nicht für den Kontext geladen: _

was mache ich hier falsch? Gibt es keine Option Unterstreichungskarte mit require zu verwenden?

Dank

+0

Sollten Sie keinen Rückgabewert zuweisen? – Rajesh

+0

Wenn Sie die verknüpften Dokumente gelesen haben, wissen Sie, was das Problem ist. – andlrc

+0

andlrc - das ist kein sehr hilfreicher Kommentar, ich habe den verlinkten doc gelesen aber immer noch konnte es nicht funktionieren, wenn du irgendeine Idee hast warum und wie kann ich es zur Arbeit bringen bitte sag es. – user1322801

Antwort

1

require.js Analysen tatsächlich statisch Code beim Laden und sucht nach Modulen geladen werden. Dies passiert, weil require.js die AMD (asynchrouns modul definition) Spezifikation und nicht CommonJS implementiert. Diese Syntax ist nur als Helfer (oder syntaktischer Zucker) für uns als Entwickler möglich. Auf diese Weise werden beim Laden des übergeordneten Moduls tatsächlich alle zugehörigen Abhängigkeiten geladen, und nur dann "require.js" wird es ausgeführt, was Ihnen das Gefühl eines synchronen Ladens gibt (oder die Syntax eines solchen auflistet).

TL; DR: Mit dieser Syntax können Module nicht dynamisch geladen werden.

Meiner Meinung nach ist das Laden von Modulen auf diese Weise keine sehr gute Übung, da ich nicht sicher bin, ob Sie es mit r.js optimieren können.