簡體   English   中英

是否可以從目錄中導入所有類並初始化它們?

[英]Is it possible to import all classes from a directory and initialise them?

說這是我的目錄樹的樣子:

/
  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';

是否有可能我可以在Main.js導入Base.js所有子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的實現放在 children 目錄中以添加新功能,而不必擔心然后在代碼的其他部分編寫導入語句和初始化。 如果相關,我正在 React 應用程序的模型中執行此操作。

這應該在Main.js工作:

import * as Children from "./Children/ChildrenIndex";

Children.ChildA // ChildA component
Children.ChildB // ChildB component

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM