我在他们的目录中有许多配置可以响应不同的任务。但是在某些情况下,我需要从另一个文件获取配置。示例:
文件1:
module.exports = Object.freeze({
uid: 'uid',
name: 'name',
admin: 'admin',
balance: 'balance',
state: 'state',
bet: 'bet',
size: 'size',
chance: 'chance',
language: 'language'
})
文件2:
module.exports = Object.freeze({
url: 'mongodb://localhost:27017/',
table: 'casino-db',
row: 'users',
user: require('/api/user/config')
})
可以吗?我听说动态调用require()
是不好的,因为它以另一种方式而不是从文件开头进行调用。
有人使用该配置结构吗?
答案 0 :(得分:0)
后续的require调用被缓存在require.cache对象下。 您正在执行的操作还可以,因为您仅导出了一个对象。因此,在经过许多要求后,就不必重新计算了。
如果您担心的话,可以这样做:
const user = require('/api/user/config')
module.exports = Object.freeze({
url: 'mongodb://localhost:27017/',
table: 'casino-db',
row: 'users',
user
})
答案 1 :(得分:0)
动态调用require()
并没有错。根据文档,所有要求均已缓存。
答案 2 :(得分:0)
file1是否依赖于file2?
如果没有,为什么你不能...
// file 1
module.exports = Object.freeze({
uid: 'uid',
name: 'name',
admin: 'admin',
balance: 'balance',
state: 'state',
bet: 'bet',
size: 'size',
chance: 'chance',
language: 'language'
})
// file2
module.exports = Object.freeze({
url: 'mongodb://localhost:27017/',
table: 'casino-db',
row: 'users'
})
// some index.js
module.exports = {
file1: require('./file1'),
file2: require('./file2')
}
答案 3 :(得分:-2)
只需使用dotenv。它将变得更加容易:))