因此,我有一个小的requirejs应用程序,需要在运行时创建动态类列表的实例。基本上是反思。我已经读了很多书,但是我发现了很多我没有使用过的对Typescript的引用。
主要思想是,在requirejs准备就绪之前,将使用所需的类列表加载数组。该数组在其主要入口点之后提供给requirejs,我希望为每个入口创建一个实例。
我已经阅读了Ben Nadal的博客,网址为http://www.bennadel.com/blog/2320-extending-classes-in-a-modular-javascript-application-architecture-using-requirejs.htm,我喜欢他的模式并认为这对于我计划动态创建的某些模块会很好用。
我以为我可以做这样的事情:
_.each(loader, function(dep) {
require([dep.name]);
});
随着loader
被全局加载数组列表。但是,这不会创建依赖项的实例,在这种情况下,这就是我想要的,就像这样:-
new Carousel('Delboy');
new Carousel('Rodney');
new Carousel('Grandad');
在此示例中,这将创建3个新轮播的实例,每个轮播的名称均通过构造函数传递。我想我的理解中缺少一些东西,帮助将不胜感激。
每个已解决的AMD依赖关系都是一个AMD模块,这意味着它是单例对象或函数。在您引用的Ben Nadel的帖子中,“定义”和“实例”之间是有区别的。定义是单例,您可以通过定义(函数)创建多个实例。用Ben的术语,RequireJS仅会给您定义,并且由您来创建实例。
因此,以下应适用于您要执行的操作:
define('Carousel', [], function (name) {
this.name = name;
});
var loader = {};
var carousels = ['Delboy','Rodney','Grandad'];
carousels.forEach(function (carouselName) {
require(['Carousel'], function (Carousel) {
loader[carouselName] = new Carousel(carouselName);
});
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句