2013-10-28 3 views
4

JavaScript/Nodejs를 처음 사용했습니다. Nodejs 애플리케이션에서 구성을 공유하려면 어떻게해야합니까? 예를 들면 : 나는 config/config.coffeeNodejs 응용 프로그램에서 구성 변수를 공유하는 방법

path = require("path") 

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

내가 내 app.coffee에서 config.coffee 포함되어 있습니다.

express = require("express") 

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

require('./config/boot') 

app = express() 

지금 내 config/boot.coffeeconfig 변수를 포함합니다. 내가 어떻게 해? config/boot.coffeeconfig/config.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') 
) 

죄송합니다 :(

답변

2

nconf을 확인하면 응용 프로그램 구성에 "폭포수"접근 방식을 유지하는 데 도움이됩니다.이 방법을 사용하면 c 서로 다른 출처의 정보를 매우 투명하게 전달합니다.

내가 작성한이 프로젝트에서 nconf가 작동하는 것을 확인할 수 있습니다. unbox은 Node에 쓰는 응용 프로그램에 기본적으로 상용구입니다. 구성로드 방법을 확인할 수 있습니다 here.

안전하고 암호화 된 파일을 체크인하고 안전하게 암호화 키를 저장하여 보안을 강화하려면 grunt-pemcrypt과 같은 것을 사용할 수 있습니다.

12factor에도 살펴볼 수있는 응용 프로그램 구성에 대한 좋은 접근 방법이 있습니다.

+1

멋지 네요, 당신의 블로그에 북마크 :) – Zeck

2

내가 NodeJS 그렇게 성능 저하가 발생하지 않습니다 다시 require('config')를 호출하여 require 년대를 캐시 생각은

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

+1

답장을 보내 주셔서 감사합니다. 그러나 나는 더 많은 DRY 코드를 원합니다. – Zeck

+1

@ Zeck 다음과 같은 conf.js 파일을 만들 수 있습니다 :'var env = process.env.NODE_ENV || '개발'; module.exports = require ("./ config") [env];'그렇다면 어디에서든지 그것을 사용하십시오 ('conf'). – lxe

+0

좋은 생각 감사합니다 :) – Zeck

관련 문제