Javascript RequireJS动态加载模块,不导入所有模块

Javascript RequireJS动态加载模块,不导入所有模块,javascript,requirejs,requirejs-optimizer,Javascript,Requirejs,Requirejs Optimizer,我尝试动态导入模块。要选择的模块应取决于某些条件(在本例中,我使用了随机模式) require-conf.js test/chart.js test/chart2.js 选择1 此选项有效,但必须同时导入两个脚本。所以,这不是最优的 require(['test/chart','test/chart2'], function () { var id = Math.floor(Math.random() * 2); var modules = ['chart','chart2'];

我尝试动态导入模块。要选择的模块应取决于某些条件(在本例中,我使用了随机模式)

require-conf.js test/chart.js test/chart2.js 选择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);
});
输出: 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);
});
输出: 错误


请帮助我以正确的方式动态加载模块。

RequireJS
是异步的,除非模块以前加载过,因此,这是您唯一的选择

var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];

require(['test/' + modules[id]], function (Chart) {
    var chart = new Chart();

    console.log(chart); // add your logic here
});
如果您想将逻辑置于
require
回调之外,请使用
函数

var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];

require(['test/' + modules[id]], function (Chart) {
    var chart = new Chart();

    myLogic(chart); // call function and pass "chart"
});


function myLogic(chart) {
    console.log(chart); // add your logic here
}
请注意,我添加了一个名为
myLogic
的函数,它接收
chart
作为参数


希望对您有所帮助。

RequireJS
是异步的,除非模块以前加载过,所以这是您唯一的选择

var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];

require(['test/' + modules[id]], function (Chart) {
    var chart = new Chart();

    console.log(chart); // add your logic here
});
如果您想将逻辑置于
require
回调之外,请使用
函数

var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];

require(['test/' + modules[id]], function (Chart) {
    var chart = new Chart();

    myLogic(chart); // call function and pass "chart"
});


function myLogic(chart) {
    console.log(chart); // add your logic here
}
请注意,我添加了一个名为
myLogic
的函数,它接收
chart
作为参数

希望能有帮助

var id = Math.floor(Math.random() * 2);
var modules = ['chart','chart2'];

require(['test/' + modules[id]], function (Chart) {
    var chart = new Chart();

    myLogic(chart); // call function and pass "chart"
});


function myLogic(chart) {
    console.log(chart); // add your logic here
}