web-dev-qa-db-ja.com

Meteorを使用して個別のファイルから関数を呼び出す

Meteorでアプリケーションを作成したいと思います。私が理解していることから、サブディレクトリにある最初にロードされ、次にアルファベット順にロードされます。私のファイル構造はこんな感じです...

/server
/lib
/client
    /lib
        game.js -> already starts declaring the function "makeBoard(){}"
    /template.js -> where the function "makeBoard()" is called.

したがって、エラー関数「makeBoard()」は存在しないように見えます。これは、呼び出したい場所と同じファイルで宣言した場合にのみ機能します。ファイル「game.js」を「template.js」と同じディレクトリに移動しても発生します。 Meteorのさまざまなファイルにあるリソースを正しく参照するにはどうすればよいですか?

32
rogeriojlle

makeBoard = function() { ... }で関数を定義します。

function foo() { ... }で定義された関数は、var bar = ...で定義された変数と同様に、ファイルに対してローカルです。

46
avital

Avitalが示唆するように、グローバルに定義された変数を使用することは機能しますが、推奨されるコード設計の選択ではありません( ここにリストされているJSの間違い1を参照 )。

代わりに、libディレクトリに次のファイルを作成できます。

_Meteor.myFunctions = {
...
    makeBoard : function() { ... },
...
}
_

次に、他のjsファイルでMeteor.myFunctions.makeBoard()を呼び出すことができます。 Meteorはlib内のjsファイルが他のディレクトリよりも先にロードされることを保証しているため、これはlibディレクトリで実行する必要があります。したがって、関数はすでにロードされています。

52
Shwaydogg