2016-11-09 5 views
0

Wie kann ich mit RequireJS auf ein (benanntes) Modul zugreifen?Wie Zugriff auf (Name) Module in RequireJS?

Lassen Sie uns sagen, dass dies mein Modul ist (Sprüche/sayings-list.coffee):

define 'saySomething', [], -> 
    alert 'something' 

Meine Hauptdatei (main.coffee) sieht wie folgt aus:

require ['sayings/sayings-list'], (sayings) -> 
    sayings.saySomething() 

Jetzt möchte ich eine Variable hin und her senden! Etwas wie:

require ['sayings/sayings-list'], (sayings) -> 
    sayings.saySomething(text) 

Wie wäre dies spiegelt sich in meinem Modul?

Danke.

Antwort

1

Generell gilt: Sie sollten anonym define Anrufe verwenden, anstatt dem Namen define Anrufe und lassen Sie den Optimierer (r.js oder andere Optimierer, der die AMD-Spezifikation verstehen) Namen hinzufügen, wenn es um Ihre Module zu einem Bündel optimiert. Es gibt seltene Ausnahmen von dieser Regel, aber was Sie hier zeigen, ist keine Ausnahme.

Wenn Sie eine benannte Modul verwenden müssen, sollten Sie es wie folgt strukturiert:

define 'saySomething', [], -> 
    saySomething: (text) -> alert text 

also, dass sie eine Funktion zugänglich wie saySomething exportiert. Beachten Sie, dass der Modulname und der Name der exportierten Funktion unterschiedlich sein können.

Dann müssen Sie es laden über ihren Namen:

require ['saySomething'], (sayings) -> 
    sayings.saySomething(text) 

Und Sie setzen müssen, um Ihre Konfiguration einen Weg zu geben, die den Namen des Moduls in die Datei zuordnet, die sie enthält. Dies ist erforderlich, da Sie den Namen des Moduls durch den Namen von dem Dateinamen entkoppelt haben. Sie müssen RequireJS also sagen, wie Sie das Modul finden.

require.config 
    paths: 
    saySomething: "sayings/sayings-list" 
+0

Vielen Dank! Falls ich dem Modul keinen Namen gebe, wird der letzte Konfigurationsteil nicht benötigt? – Timo

+0

Das stimmt. Dieser spezifische Teil der Konfiguration wird nicht benötigt, wenn Sie keinen Namen als erstes Argument für 'define' angeben, da dann der Pfad zum Modul verwendet wird (abzüglich der' .js' Erweiterung), um den Modulnamen zu erstellen (was wäre 'Sprüche/Sprüche-Liste'). Also wenn du es benutzt, würdest du 'requires [' sayings/sayings-list '], (Sprüche) -> ' – Louis

+0

toll machen, endlich bin ich los !!! : D danke @Louis! – Timo

Verwandte Themen