首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dojo:循环中有'require‘是不好的吗?

Dojo:循环中有'require‘是不好的吗?
EN

Stack Overflow用户
提问于 2015-10-14 14:04:49
回答 1查看 77关注 0票数 0

假设我们有三个小部件: Foo、Bar和Baz。现在,我们有一个长度为10的数组,其中包含“Foo”、“Bar”和“Baz”字。我们希望根据数组中的string-元素实例化相应的Widget:

代码语言:javascript
复制
array.forEach(arrayOfStrings, function(arrayElement) {
  require(['some_path/' + arrayElement], function(cls) {
    new cls();
});

require循环中使用forEach()是一种不好的实践吗?是否有任何改进此代码的好方法(可能是存储已经使用的元素)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-14 20:07:24

正如Bergi所建议的,require in循环并不一定是一种糟糕的实践,require也会缓存您的AMD模块。

替代办法:

01)您可以使用更声明性的方法,例如使用循环来创建HTML标记并将结果附加到DOM,例如:

代码语言:javascript
复制
<input type="text" name="field1" data-dojo-type="app/foo" />

并使用dojo/parser来实现Auto Require模块foo 关于汽车的更多信息,请到这里

02)使用一个简单的工厂。您可以去掉循环中的require,并在工厂中委托它的使用。一些伪代码:

代码语言:javascript
复制
array.forEach(arrayOfStrings, function(arrayElement) {
  UserFactory.createFoo(); // use the factory instead
});
//... factory object here
UserFactory.createFoo = function() {
    require(['some_path/foo'], function(cls) {
       new cls();
    });
};

一个更“动态”的版本(只是一些伪代码)

代码语言:javascript
复制
array.forEach(arrayOfStrings, function(type) {
  UserFactory.createWidget(type); // use the factory instead
});
//... factory object here
UserFactory.createWidget= function(type) {
    require(['some_path/' + type], function(cls) {
       new cls();
    });
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33127551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档