admin管理员组

文章数量:1302565

In ES6 one can export a class in a module or just export functions as per usual. Is one or the other better?

My though is its if one wants a more functional look and feel go with exporting functions where as a more OOP approach would be to export a class.

In ES6 one can export a class in a module or just export functions as per usual. Is one or the other better?

My though is its if one wants a more functional look and feel go with exporting functions where as a more OOP approach would be to export a class.

Share Improve this question asked Nov 14, 2016 at 0:29 Jason LeachJason Leach 4,2299 gold badges44 silver badges58 bronze badges 2
  • As usual, the answer is "it depends". – Dave Newton Commented Nov 14, 2016 at 1:56
  • 1 Isn't this a question for Stack Software Engineering? – Tim Grant Commented Nov 14, 2016 at 1:58
Add a ment  | 

1 Answer 1

Reset to default 12

The point of a Class in ES6 is to be able to create objects (instances) by calling the constructor and for those objects to have properties and methods that operate on those properties.

So, if you're creating a module that intends to expose a way to create new objects that have methods and properties, then by all means expose a constructor or a factory function that can be called to create objects of the desired type.

But, if all you want to share from the module is some functions that can each be used by themselves, then there's really no reason to use the ES6 class because exporting a plain object with several functions as properties is perfectly acceptable for just sharing some functions that can be called independently.

So, the answer is that it depends upon what you're trying to share from the module.

You could, of course, also export a Class with a bunch of static methods, but that offers no particular advantage over just exporting a plain object with functions as properties so there's no particular reason to use an ES6 class for that (other than a syntax preference within the module).

本文标签: nodejsIn JavaScript is it better to use modules or ClassesStack Overflow