需要 类 来自变量值的 AMD 样式?

Require Classes in AMD Style From a Variable Value?

我有 100 多个 classes,根据用户的选择,我必须从中要求 Dojo class。简而言之,我必须根据用户选择的字符串值要求 Dojo class。

例如,如果用户选择 truck 图标,我会得到 truck 并且我有一个 class 名为 卡车.

同步加载器样式可以像

一样加载它
var userSelection = "Truck";
var myVeh = require("Vehicles/"+userSelection); 
var veh = new myVeh('Truck 4', 15000); 
veh.honk();

Dojo 最佳做法建议使用 AMD 加载程序,以确保在使用前 classes 已加载。

require([
        "Vehicles/Truck",
        "dojo/domReady!"
      ], function(
        Truck
      ) { ...... });

我想坚持使用 AMD 风格加载,但是

我如何要求 class AMD 风格的变量值用于回调?

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

我试过了 Use dynamic variable names in JavaScript and Dynamic variables names in javascript。他们都建议 window 和 [] 方法,但 none 对我有用。

我正在使用 Dojo 1.10.4

01) 您可以使用 require 要求您的 dojo classes(在下面的示例模块 Truck.js 中),在模块加载后执行回调作为参数传递给您道场 class.

下面是演示 require 和回调函数的示例。

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 的更多信息: https://dojotoolkit.org/reference-guide/1.10/dojo/require.html