簡體   English   中英

在Node.JS中使用配置文件的最佳方法

[英]Best way to use a configuration file in Node.JS

我有一個Node.JS應用程序的配置文件(以下簡化)

module.exports = function(){
  var settings = {
    port: '8088'
  }; 
  settings.mysql = {
    host : 'localhost',
    database : 'test'
  };
  // Override default settings
  switch(process.env.NODE_ENV){
    case 'production':
      settings.port = 8082;
    break;
    case 'staging':
      settings.port = 8083;
    break;     
  }
  return settings;
};

當我啟動Express.js應用程序時,我需要此文件進行一些基本設置:

var Config = require('./config'),  settings = new Config();
var port = process.env.PORT || settings.port;    // set our port

我還需要稍后在DAO(在我的模型中)內使用此文件中的MySQL設置。 那時我調用配置文件(它將再次運行它)

var Config = require('../config'), settings = new Config();
var mysql = require('mysql');
var pool = mysql.createPool(settings.mysql);

顯然,每次我“要求”文件運行時,這似乎都是惰性的/低效的。 我應該將返回的“設置”變量存儲在DAO可以看到的全局變量中,還是應該通過引用將其傳遞給我?

我曾經考慮過要使其成為中間件並添加它為REQUEST,但隨后我需要我的路線(控制器)將其全部傳遞給感覺不合適的DAO(模型)。

只需導出對象本身,而不是將其包裝在函數中-節點模塊在第一次加載后就被緩存,因此它不會再次運行邏輯。

var settings = {
  port: '8088'
}; 

settings.mysql = {
  host : 'localhost',
  database : 'test'
};

// Override default settings
switch(process.env.NODE_ENV){
  case 'production':
    settings.port = 8082;
  break;
  case 'staging':
    settings.port = 8083;
  break;     
}

module.exports = settings;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM