require.jsをいつ、どのように使用するかを理解します
-
22-10-2019 - |
質問
私は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コードまで)