2016-11-09 4 views
0

RequireJSを使用して(名前付き)モジュールにアクセスするにはどうすればよいですか?RequireJSで(名前付き)モジュールにアクセスするには?

のは、これが私のモジュールであるとしましょう(ことわざ/ sayings-list.coffee):

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

私のメインファイル(main.coffee)は次のようになります。

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

今私は変数を前後に送信したい!ような何か:

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

これはどのようにが私のモジュールでを反映しただろうか?

ありがとうございました。

答えて

1

一般的なルール:それはバンドルにあなたのモジュールを最適化するときに名前を追加(AMDの仕様を理解しr.jsまたは他のオプティマイザ)オプティマイザを匿名defineの呼び出しではなく、名前のdefineコールを使用してみましょう必要があります。このルールにはまれな例外がありますが、ここに示した内容は例外ではありません。あなたが名前のモジュールを使用する必要がある場合

あなたはこのようにそれを構造化する必要があります。それはsaySomethingとしてアクセス関数をエクスポート

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

ように。モジュール名とエクスポートされる関数の名前が異なる可能性があることに注意してください。

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

をそして、あなたはそれを含むファイルへのモジュールの名前をマップパスを与えるためにあなたのコンフィギュレーションを設定する必要があります:

その後、あなたはその名前を使用して、それをロードする必要があります。これは、defineコールに名前を追加することによって、ファイル名からモジュール名を切り離したために必要です。したがって、RequireJSにモジュールの検索方法を伝える必要があります。

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

ありがとうございました!私がモジュールに名前を割り当てない場合、最後の構成部分は必要ありませんか? – Timo

+0

そうです。 'define 'の最初の引数として名前を指定しないと、モジュールへのパスが使用されるため(' .js'拡張子を使用しないため)、モジュール名を作るためにその特定の設定は必要ありません'sayings/sayings-list')。だからあなたがそれを使うときには 'require ['sayings/sayings-list']、(sayings) - >' – Louis

+0

とっても、やっと私は行くんだ! :D @ルイスありがとう! – Timo

関連する問題