javascript - 是否可以从目录中导入所有类并初始化它们?
问题描述
假设这就是我的目录树的样子:
/
Children/
ChildrenIndex.js
Base.js
ChildA.js
ChildB.js
ChildC.js
...
ChildN.js
Main.js
任何给定的ChildX.js
看起来像这样的地方,
import Base from './Base.js';
class ChildX extends Base {
constructor(params) {
this.params = params
}
}
export default ChildX
ChildrenIndex.js
看起来像这样,
export {default as ChildA} from './ChildA.js';
export {default as ChildB} from './ChildB.js';
export {default as ChildC} from './ChildC.js';
...
export {default as ChildN} from './ChildN.js';
是否有可能我可以导入Base.js
in的所有孩子Main.js
并获得一个充满实例的列表,每个孩子的初始化?这是做我想要的伪代码:
import { * } from './Children/ChildrenIndex.js'
class Main {
constructor() {
let childConstructors = getAllConstructorsIn('./Children/ChildrenIndex.js');
let children = [];
for (let constrt of childConstructors) {
children.push(new constrt(params));
}
}
}
我可以手动执行此操作import { ChildA, ChildB, ChildC, ... ,ChildN } from './Children/ChildrenIndex.js'
,然后像这样填写列表[new ChildA(params), new ChildB(params), new ChildC(params), ... , new ChildN(params)]
:而且,这很好用。但是,我希望有人能够Base.js
在子目录中放置一个实现,以便添加新功能,而不必担心在代码的其他部分编写导入语句和初始化。如果相关的话,我会在 React 应用程序模型中执行此操作。
解决方案
这应该适用于Main.js
:
import * as Children from "./Children/ChildrenIndex";
Children.ChildA // ChildA component
Children.ChildB // ChildB component
推荐阅读
- python - 使用 Pandas 数据框聚合后无法对值进行排序
- python-3.x - 根据 Python 中的名称将文件从特定子目录移动到另一个子目录
- javascript - 为什么ejs模板引擎找不到我的文章?
- c# - 无法使用 apis v3 在 Youtube 上上传视频
- typescript - 为什么静态成员不能在属性方法中访问,但在原型方法中可以?
- mysql - Symfony 约束以防止在重叠时间范围内重复
- flutter - Flutter 中的负边距以拉伸轮播
- java - android 10 java中未显示通知的问题
- mysql - 如何使用 mysql left join 对 Header 中的单个值和来自细节的 Total 值求和
- javascript - 反应添加活动类以单击元素