Sunday, 19 March 2017

ES6 dynamic imports and instanciation of classes

I'm trying to figure out how to perform dynamic import of classes in ES6 one the server side (node.js with Babel). I would like to have some functionalities similar to what reflection offers in Java. The idea is to import all the classes in a specific folder and instanciate them dynamically.

So for example I could have multiple classes declared in a folder like the one below :

export default class MyClass {

   constructor(somevar) {
       this._somevar = somevar
   }

   //...
   //some more instance level functions here
}

and then somewhere else in my app's code I could have a function that finds out all the classes in a specific folder and tries to instanciate them :

//somewhere else in my app
instanciationFunction(){

   //find all the classes in a specific folder
   var classFiles = glob.sync(p + '/path_to_classes/**/*.js', {
       nodir: true
   });

   _.each(classFiles, async function (file) {
       console.log(file);

       var TheClass = import(file);
       var instance = new TheClass();

       //and then do whatever I want with that new instance

   });
}

I've tried doing it with require but I get errors. Apparently the constructor cant be found.

Any idea would be greatly appreciated.

Thanks



via azpublic

No comments:

Post a Comment