使用反射,动态加载需求模块

杜伯特

因此,我有一个小的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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用动态路径加载Powershell模块?

来自分类Dev

使用Sugar语法动态加载requirejs模块

来自分类Dev

尝试使用Dynlink动态加载模块

来自分类Dev

尝试使用Dynlink动态加载模块

来自分类Dev

如何使用动态路径加载Powershell模块?

来自分类Dev

动态加载和需求分页之间的区别

来自分类Dev

使用承诺状态恢复的React Redux动态模块加载模块

来自分类Dev

动态加载“ whl”模块

来自分类Dev

RequireJS:模块嵌套需求中的动态依赖关系

来自分类Dev

使用__import__进行动态模块加载

来自分类Dev

RequireJS-动态加载模块

来自分类Dev

导入动态加载模块的功能

来自分类Dev

在angularJs中动态加载模块

来自分类Dev

在类和JavaScript模块中使用反射

来自分类Dev

如何使用反射来动态调用类型?

来自分类Dev

在LINQ中使用反射动态过滤列表

来自分类Dev

使用反射加载外部装配体

来自分类Dev

NodeJS需求模块与路径

来自分类Dev

如何在python中动态加载模块

来自分类Dev

Angular2-从模块动态加载组件

来自分类Dev

动态可加载模块中的程序功能

来自分类Dev

登录棱镜后动态加载模块

来自分类Dev

Nginx C++ 动态模块加载失败

来自分类Dev

从动态加载的模块实例化类

来自分类Dev

React 中的动态需求

来自分类Dev

如何使用Julia 1.5在运行时动态加载模块(或脚本)

来自分类Dev

Recaptcha不会使用Recaptcha.dll在DNN模块中动态加载

来自分类Dev

如何在 angular 中使用动态加载的模块组件中的现有组件

来自分类Dev

无法使用动态导入的模块