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