質問

私はrequire.jsで作業し始めたばかりで、それを使用する必要がある適切なケースと、それらの場合にそれを使用する正しい方法については少し不明です。

現在、require.jsを使用して物事をセットアップしている方法は次のとおりです。私には2つの機能があります、 functionA()functionB(). 。これらの両方の関数には、追加の関数が必要です。 functionC() 適切に動作する。

必要に応じて、functionc()、つまりfunctiona()またはfunctionb()が呼び出された場合にのみロードしたいです。だから私は次のファイルを持っています:

functionc.js

functionC(){
  //do stuff
}

functiona.js

functionA(){  
  define(['functionC'],function(){
    //functionC() is loaded because it is listed as a dependency, so we can proceed
    //do some functionA() stuff
  });
}

functionb.js

functionB(){  
  define(['functionC'],function(){
    //functionC() is loaded because it is listed as a dependency, so we can proceed
    //do some functionB() stuff
  });
}

それで、これは正しくセットアップされていますか?また、同じページでfunctiona()とfunctionb()の両方を呼び出すことになった場合、両方ともfunctionc.jsファイルをロードするため、追加の作業が行われていますか?もしそうなら、それは問題ですか?もしそうなら、最初にfunctionc.jsがまだロードされているかどうかを確認するために最初に確認し、それがなかった場合にのみロードする方法がありますか?最後に、これはrequire.jsの適切な使用ですか?

役に立ちましたか?

解決

define() モジュールの定義にのみ使用する必要があります。上記の例では、コードを動的にロードする必要がある場合、 require() より適切です:

functiona.js

functionA(){
  require(['functionC'],function(functionC){
    //use funcC in here to call functionC
  });
}

いくつかのメモ:

  • require([]) 非同期です。したがって、の場合は functionA その関数からの返品値が期待されているため、エラーが発生する可能性があります。それは最善です functionA いつ呼び出されるコールバックを受け入れます functionA その作業で行われます。
  • 上記のコードが呼び出されます require() 通話ごとに functionA;ただし、最初の呼び出しの後、ロードするためにペナルティがかかりません functionC.js, 、1回だけロードされます。初めて require() 呼び出され、ロードされます functionC.js, 、しかし、残りの時間、要求はそれがすでにロードされていることを知っているので、それは function(functionC){} 要求せずに機能します functionC.js また。

他のヒント

requirejsとjavascriptモジュール性の詳細をここでご覧いただけます。 JavaScriptのモジュール性が必要です(SpaghettiコードからRavioliコードまで)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top