Javascript 在多个类之间共享实例化变量的最佳方法?

Javascript 在多个类之间共享实例化变量的最佳方法?,javascript,node.js,ecmascript-6,mean-stack,rethinkdb,Javascript,Node.js,Ecmascript 6,Mean Stack,Rethinkdb,我目前正在编写一个node.js项目,在该项目中,我在主ES6类中定义并实例化了一个REJECTDB变量 我的问题是,在所有后续项目类中共享数据库变量而不重新实例化同一变量或建立另一个db连接的最佳方法是什么?这类变量的“全局”变量 这是唯一的办法吗?不管怎么说,把它定义为一个全球性的 const db = require('rethinkdb'); db.connect({ host: config.db.host,

我目前正在编写一个node.js项目,在该项目中,我在主ES6类中定义并实例化了一个REJECTDB变量

我的问题是,在所有后续项目类中共享数据库变量而不重新实例化同一变量或建立另一个db连接的最佳方法是什么?这类变量的“全局”变量

这是唯一的办法吗?不管怎么说,把它定义为一个全球性的

const db = require('rethinkdb');
db.connect({
                        host: config.db.host,
                        port: config.db.port,
                        authKey: config.db.authkey,
                        ssl: {
                            ca: content
                        }
                    }, function(err, conn) {
                        if(err) {
                            fail(err)
                        } else {
                            success(conn)
                        }


                       });

new ClassName(db);
编辑:


<>我也可以考虑做一个DB类,其中DB变量是一个单独的?这是最好的方法吗?

您可以使用
模块。导出
,因此您的db变量必须位于该对象中

module.exports = {
    db: require("rethinkdb")
}
module.exports.db.connect(...);

现在我忘记了
module.exports
是否有一个内置函数,每当
require
需要该模块时,该函数都会运行,但这样应该可以正常工作。

您可以使用
module.exports
,因此您的db变量必须位于该对象中

module.exports = {
    db: require("rethinkdb")
}
module.exports.db.connect(...);

现在我忘记了
module.exports
是否有一个内置函数,每当
require
需要该模块时,该函数都会运行,但这样它应该可以正常工作。

使用模块存储变量当其目的是在模块之间共享连接时,此问答可能有帮助:使用模块存储变量当目的是在模块之间共享连接时,此问答可能有帮助:为什么不使用ES6模块?很容易翻译。在这里,将
module.exports={…}
替换为
export const db=require(“referencedb”)。我不确定,但要调用
module.exports.connect(…)
只需执行
db.connect(…),如果是ES6,当然很容易翻译,只是问题用ES6标记,所以我建议在答案中使用它:-)是的,说实话,我一开始没有注意到。但是我注意到他使用的node.js方法太多,比如
require(…),在ES6中应该是
import为什么不使用ES6模块?很容易翻译。在这里,将
module.exports={…}
替换为
export const db=require(“referencedb”)。我不确定,但要调用
module.exports.connect(…)
只需执行
db.connect(…),如果是ES6,当然很容易翻译,只是问题用ES6标记,所以我建议在答案中使用它:-)是的,说实话,我一开始没有注意到。但是我注意到他使用的node.js方法太多,比如
require(…),在ES6中应该是
import