Javascript RequireJS动态加载模块,不导入所有模块
我尝试动态导入模块。要选择的模块应取决于某些条件(在本例中,我使用了随机模式) require-conf.js test/chart.js test/chart2.js 选择1 此选项有效,但必须同时导入两个脚本。所以,这不是最优的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(['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
}