应该在NodeJS中使用类或模块

时间:2018-06-23 17:26:05

标签: javascript node.js class inheritance module

我是NodeJS的新手。我正在研究NodeJS上的继承,发现使用Class(在ES6上)具有继承。我对使用类和模块来决定在我的情况下应该使用哪一个有一些疑问:

  1. 据我所知,“ Module”是在我运行一次之后被缓存的,这意味着我不需要每次都进行初始化,对于“类”,我每次使用时都需要对其进行初始化。那么它会造成内存泄漏还是性能不佳?
  2. 就我而言,我想为某些常用功能实现继承,然后可以在孩子中重用它们。如果使用“ Class”:如果客户端同时发送多个请求,是否会影响服务器的性能,例如响应速度变慢或其他原因?
  3. 如果使用“ CLASS”,是否可以为全局函数触发ONCE(任何其他继承类都不会触发该函数。)
  4. 创建Class实例并处理功能后,会释放它吗?

谢谢。

1 个答案:

答案 0 :(得分:6)

  

应在NodeJS中使用类或模块

这是一个错误的选择。您可能会同时使用。您当然想使用模块(实际上,很难不使用它)。您可能会或可能不想使用class(在this question的答案中有更多信息),如果不想,则可能会或可能不想使用伪古典继承。或者您可能更喜欢直接使用原型继承。这是一种风格选择。

  

1。据我所知,“模块”在我运行一次之后就被缓存了。

是的,模块已缓存。您可以使用模块的内联代码进行初始化。然后,模块导出其他模块可以使用的功能和/或构造函数(宽松地称为“类”)等。

  

2。 ...如果同时从客户端发送多个请求,是否会影响服务器的性能,例如响应速度较慢或其他原因?

创建对象(包括通过构造函数创建对象)非常快捷。担心功能和可维护性。在出现问题时担心性能。

  

3。如果使用“ CLASS”,是否可以为全局函数触发ONCE(任何其他继承类都不会触发该函数。)

您可以创建一个类的单个实例,然后将其从模块中导出以进行重用,而无需重新创建,是的。

  

4。创建Class实例并处理功能后,会释放它吗?

如果没有什么保留对对象的引用,则该对象可以进行垃圾回收,是的。自然,如果某些东西保留了对该对象的引用(例如,如果您从模块中导出该对象),则该对象不符合垃圾回收的条件。