require() 在运行时,但它只运行一次。可以吗?
require() in a runtime but it runs only once. Is it ok?
我在他们的目录中有许多配置,它们响应不同的任务。但在某些情况下,我需要从另一个文件中获取配置。示例:
文件 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()
的动态调用很糟糕,因为它以另一种方式工作,而不是从文件开始调用它。
有人使用那个配置结构吗?
随后的 require 调用被缓存在 require.cache 对象下。
您正在做的事情没问题,因为您只导出了一个对象。所以它不会在多次要求后重新计算。
如果你担心,你可以这样做:
const user = require('/api/user/config')
module.exports = Object.freeze({
url: 'mongodb://localhost:27017/',
table: 'casino-db',
row: 'users',
user
})
只需使用dotenv。这会更容易:))
动态调用require()
没有错。根据文档,所有要求都被缓存。
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')
}
我在他们的目录中有许多配置,它们响应不同的任务。但在某些情况下,我需要从另一个文件中获取配置。示例:
文件 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()
的动态调用很糟糕,因为它以另一种方式工作,而不是从文件开始调用它。
有人使用那个配置结构吗?
随后的 require 调用被缓存在 require.cache 对象下。 您正在做的事情没问题,因为您只导出了一个对象。所以它不会在多次要求后重新计算。
如果你担心,你可以这样做:
const user = require('/api/user/config')
module.exports = Object.freeze({
url: 'mongodb://localhost:27017/',
table: 'casino-db',
row: 'users',
user
})
只需使用dotenv。这会更容易:))
动态调用require()
没有错。根据文档,所有要求都被缓存。
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')
}