javascript - node - requirejs教學




了解何時以及如何使用Require.JS (2)

define()只應用於定義模塊。 對於上面的示例,應該動態加載一段代碼,使用require()更合適:

functionA.js

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

一些說明:

  • require([])是異步的,因此如果functionA的調用者期望該函數返回一個值,則可能會出現錯誤。 最好是functionA接受在functionA完成其工作時調用的回調。
  • 上面的代碼將為每次調用functionA調用require() ; 但是,在第一次調用之後,加載functionC.js沒有任何懲罰,它只加載一次。 第一次調用require() ,它將加載functionC.js ,但剩下的時間,RequireJS知道它已經加載了,所以它將調用function(functionC){}函數而不再請求functionC.js

我剛剛開始使用Require.JS,我對應該使用它的適當情況以及在這些情況下使用它的正確方法有點不清楚。

以下是我目前使用Require.JS設置的方法。 我有兩個函數, 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?






requirejs