Javascript 是否需要变量值中的AMD样式的类?

Javascript 是否需要变量值中的AMD样式的类?,javascript,dojo,Javascript,Dojo,我有100个类,根据用户选择,我需要使用Dojo类。简而言之,我需要一个基于用户选择的字符串值的Dojo类 例如,如果用户选择一个truck图标,我得到truck,我有一个名为truck的类 同步加载程序样式可以像 var userSelection = "Truck"; var myVeh = require("Vehicles/"+userSelection); var veh = new myVeh('Truck 4', 15000); veh.honk(); Dojo良好实践建议使

我有100个类,根据用户选择,我需要使用Dojo类。简而言之,我需要一个基于用户选择的字符串值的Dojo类

例如,如果用户选择一个truck图标,我得到truck,我有一个名为truck的类

同步加载程序样式可以像

var userSelection = "Truck";
var myVeh = require("Vehicles/"+userSelection); 
var veh = new myVeh('Truck 4', 15000); 
veh.honk();
Dojo良好实践建议使用AMD loader,以确保在使用它之前加载类

require([
        "Vehicles/Truck",
        "dojo/domReady!"
      ], function(
        Truck
      ) { ...... });
我想坚持AMD风格的加载,但是

如何要求在回调中使用变量值中的AMD样式的类?

如果我使用第一个非AMD方法加载会怎么样?什么是优点和缺点?*

我试过了 和。他们都建议使用window和[]方法,但都不适合我

我使用的是Dojo 1.10.4(在下面的示例模块Truck.js中),您可以使用
require
要求您的Dojo类,在加载模块后,将执行一个回调,并将其作为参数传递给您的Dojo类

下面的示例演示了
需要
和回调函数

require('Vehicles/Truck', function(Truck){
    var myTruck= new Truck('Truck 4', 15000);
});
您可以使用以下命令更动态地指定要加载的模块:

var userSelection = 'Truck';
require('Vehicles/' + userSelection, function(Truck){
    var myTruck= new Truck('Truck 4', 15000);
});
02)假设您的
Truck.js
是一个AMD模块,那么您的两种方法(正如您在问题中提到的)实际上都在使用
AMD
加载

您可以在此处阅读有关
require
的更多信息:

谢谢您的澄清。