試すべきいくつかのこと:
このモジュールのモジュール依存関係を指定する場所であるため、define関数には最初の引数として配列が必要です。モジュールが動作するために他のスクリプトやモジュールを必要としない場合、この配列は次のように空のままになります。
define([], function(){
//Your code here
});
RequireJSが機能する方法は、モジュール名としてモジュールパスを使用することであるため、これは少し紛らわしい部分です。これは、モジュールの移植性を高めるだけでなく、必要なモジュールとその配置場所を同じように指定するという動作を可能にするため、非常に強力です。
したがって、上記で定義されたモジュールが「mymodule / js / component.js」にある場合は、それをロードして、次のような別のスクリプトで非同期的に使用できます。
//some existing script that then needs a JS module that has not been loaded yet
require(['mymodule/js/component'], function(component){
//All loaded modules are provided as arguments in the
//order they are specified in the require array
var a = component();
});
したがって、例は次のようになります。
//This script located at mymodule/js/loadImage.js
if (typeof define === 'function' && define.amd) {
define([], function () {
return loadImage;
});
} else {
$.loadImage = loadImage;
}
//Script located in another file that needs the loadImage module
require(['mymodule/js/loadImage'], function(loadImage){
loadImage();
});
最後に、define呼び出しの最初の引数として名前を指定することで、必要に応じてモジュールに短い名前を付けることができます。RequireJSは短い名前からファイルがどこにあるかわからないため、最初にファイルが必要になったときにファイルへのパスを指定する必要があるため、これはお勧めしません。これが適切な場所は、必要なときにすべてのスクリプトをロードするのではなく、事前にすべてのスクリプトをロードする場合です(すべてがオンデマンドでロードされるため、これをお勧めします)。ただし、モジュールの「短い」名前を指定する方法は次のとおりです。
//This script located at mymodule/js/loadImage.js
if (typeof define === 'function' && define.amd) {
define("loadImage", [], function () {
return loadImage;
});
} else {
$.loadImage = loadImage;
}
loadImageモジュールがロードされていることがわかっている場合は、上記の手法で次のことができます。
//Even if loadImage has been already fetched, this is good practice since you can
//add more modules to be the dependency array if you need
require(['loadImage'], function(loadImage){
loadImage();
});
//or sometimes this can be convenient:
var loadImage = require("loadImage")
loadImage();
アップデート
loadImageモジュールが機能する必要があるモジュールを作成したい場合は、次のようにすることを忘れてください。
//By providing the module dependencies in the first argument, RequireJS will
//fetch it and load it if needed
define(['mymodule/js/loadImage'], function(loadImage){
loadImage();
})