5

我是 JavaScript/Nodejs 的新手。如何在 Nodejs 应用程序中共享我的配置。例如:我有一个config/config.coffee

path = require("path")

module.exports = {
  development:
    db: 'mongodb://localhost/hello'
    root: rootPath = path.normalize(__dirname + '/..')
}

我包括config.coffee在我的app.coffee.

express = require("express")

# Load configurations
env = process.env.NODE_ENV || 'development'
config = require("./config/config")[env]

require('./config/boot')

app = express()

现在我想将config变量包含到我的config/boot.coffee. 我该怎么做?我不想重新包含config/config.coffeeconfig/boot.coffee. 这是我的config/boot.coffee文件:

env = process.env.NODE_ENV || 'development'
config = require("./config")[env]
fs = require("fs")
mongo = require("mongoose")

# Bootstrap db connections
mongo.connect config.db

# Bootstrap models
models_path = config.root+"/app/models"
fs.readdirSync(models_path).forEach( (file)->
  require(models_path + '/' + file) if ~file.indexOf('.coffee')
)

# Bootstrap services
services_path = config.root+"/app/services"
fs.readdirSync(services_path).forEach( (file)->
  require(models_path + '/' + file) if ~file.indexOf('_service.coffee')
)

抱歉英语不好:(

4

2 回答 2

2

我相信 NodeJS 会缓存你require的,所以再次调用require('config')不会导致任何性能下降。

http://nodejs.org/api/globals.html#globals_require

于 2013-10-28T15:56:01.353 回答
2

您可能想查看nconf,它可以帮助您对应用程序配置保持一种“瀑布”方法,它允许您非常透明地混合来自不同来源的配置。

您可以在我编写的这个项目 unbox 中看到 nconf 的运行情况,它基本上是我用于在 Node 上编写的应用程序的样板文件。您可以在此处查看配置是如何加载的。

您可以通过签入安全的加密文件并将加密密钥保存在安全的地方来使用grunt-pemcrypt 之类的东西来提高安全性。

12factor也有一个很好的方法来配置你可能想要研究的应用程序。

于 2013-10-28T16:07:00.013 回答