初始化全局 Class 并使其在整个节点应用程序中可用
Initializing Global Class and Making it Available Throughout Node Application
因此,我在当前项目中有一个地方正在初始化 APN(Apple 推送通知)连接,但我需要对其进行初始化,因为我不需要多个连接实例。目前我有一个 class 创建连接并将我们需要的侦听器放在连接上以监视错误等。它看起来像这样:
export default class pushService {
constructor(options) {
... check that options is proper ...
this.apnConnection = apn.Provider(options);
... add listeners ...
}
sendMessage(message, recipents) {
this.apnConnection.send() messages
}
}
现在可能有多个位置需要使用它,但正如我所说,我更希望整个应用程序只有一个连接的 APN 连接实例。
那么,最好是在应用程序的主文件中初始化它并使其成为命名导出,还是应该以其他方式启动?如果可以避免的话,我不认为导入整个主应用程序文件是个好主意,但也许这样做没有问题?
此外,如果这太主观了,我很抱歉,但我认为我没有在这里看到这个问题,也没有在我的 Google 搜索中回答,而且看起来可能有一个或多个好的解决方案。
我找到的最佳答案基于此博客post:
ES6 Modules - Single Instance Pattern
最后我的数据库连接是这样的:
let instance = null;
export class dbConnection {
constructor() {
if(!instance)
instance = dbConnectionLibrary();
return instance;
}
}
我计划对我的推送通知服务做同样的事情,并可能扩展 dbConnection class 以将连接添加到连接数组中,因为我们有一个新要求需要在启动时连接多个不同的数据库.
因此,我在当前项目中有一个地方正在初始化 APN(Apple 推送通知)连接,但我需要对其进行初始化,因为我不需要多个连接实例。目前我有一个 class 创建连接并将我们需要的侦听器放在连接上以监视错误等。它看起来像这样:
export default class pushService {
constructor(options) {
... check that options is proper ...
this.apnConnection = apn.Provider(options);
... add listeners ...
}
sendMessage(message, recipents) {
this.apnConnection.send() messages
}
}
现在可能有多个位置需要使用它,但正如我所说,我更希望整个应用程序只有一个连接的 APN 连接实例。
那么,最好是在应用程序的主文件中初始化它并使其成为命名导出,还是应该以其他方式启动?如果可以避免的话,我不认为导入整个主应用程序文件是个好主意,但也许这样做没有问题?
此外,如果这太主观了,我很抱歉,但我认为我没有在这里看到这个问题,也没有在我的 Google 搜索中回答,而且看起来可能有一个或多个好的解决方案。
我找到的最佳答案基于此博客post:
ES6 Modules - Single Instance Pattern
最后我的数据库连接是这样的:
let instance = null;
export class dbConnection {
constructor() {
if(!instance)
instance = dbConnectionLibrary();
return instance;
}
}
我计划对我的推送通知服务做同样的事情,并可能扩展 dbConnection class 以将连接添加到连接数组中,因为我们有一个新要求需要在启动时连接多个不同的数据库.