1
モジュールを動的にインポートしようとしました。選択するモジュールは、いくつかの条件(この例ではランダムモードを使用した場合)に依存する必要があります。RequireJS動的ロードモジュールをインポートせずにすべてのモジュール
が必要-conf.js
requirejs.config({
paths: {
'test': 'test/'
}
});
テスト/ chart.js
define([], function() {
function Chart(id, data) {
if (!(this instanceof Chart)) {
throw new TypeError("Chart constructor cannot be called as a function.");
}
console.log("chart");
};
return (Chart);
});
テスト/ chart2.js
define([], function() {
function Chart2(id, data) {
if (!(this instanceof Chart2)) {
throw new TypeError("Chart constructor cannot be called as a function.");
}
console.log("chart2");
};
return (Chart2);
});
オプション1
このオプションは動作しますが、両方のスクリプトをインポートする必要があります。だから、それは最適ではありません。
require(['test/chart','test/chart2'], function() {
var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];
var chart = require('test/' + modules[id]);
console.log(chart);
});
出力: チャート()またはChart2()
オプション2
このオプションは、非同期です。モジュールをロードする前にオブジェクトを印刷します。
require([], function() {
var chart = null;
var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];
require(['test/' + modules[id]], function (Chart) {
chart = new Chart();
});
console.log(chart);
});
出力: ヌル
オプション3
このオプションは、ロード・エラーを生成します。
require([], function() {
var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];
var chart = require('test/' + modules[id]);
console.log(chart);
});
出力: エラー
動的にモジュールをロードするための適切な方法で私を助けてください。