2013-08-27 52 views
11

我看到了多種方式來創建Node.js中的配置文件。一個在js文件中使用module.exports,一個只使用普通的json對象。Module.exports vs純json的配置文件

// config1.js 
module.exports = { 
    config_1: "value 1", 
    config_2: "value 2" 
} 

// config2.json 
{ 
    config_1: "value 1", 
    config_2: "value 2" 
} 

在配置文件中使用module.exports有什麼好處嗎?有什麼區別?

感謝

+1

唯一真正的區別是您不能在json文件中添加註釋。如果你想要帶註釋的json文件,你可能會對使用rc文件感興趣。 –

+0

感謝Jonathan,我注意到module.exports只會在* .js文件中有效,而json對象只會在* .json文件中有效。我可以在* .js文件中使用module.exports進行註釋。 –

+0

另一個重要的注意事項是,實際的.json文件具有更嚴格的語法,例如鍵必須用雙引號括起來,在項目數組末尾不能有逗號等。 –

回答

19

的javascript CommonJS的模塊

  • 評論
  • 條件句
  • 迴路和諸如填充默認
  • 代碼基於NODE_ENV改變配置或類似
  • 代碼查找外部SSL密鑰文件,API憑證等
  • 個容易有回退和違約

JSON文件

  • 容易解析和使用外部工具更新
  • 與幾乎所有的編程語言在那裏
  • 純數據可以加載兼容不被執行
  • 容易漂亮打印
  • JSON可以作爲基礎和所有代碼開始上述關於CommonJS的模塊描述EMS可以住一個config.js模塊讀取config.json,因爲它的出發點

所以我總是爲方便CommonJS的模塊開始,但要保留所有的邏輯在那裏簡單。如果你的config.js有錯誤並且需要測試,那可能太複雜了。吻。如果我知道其他事情將要在我的配置中發現,我將使用JSON文件。

+0

謝謝@peter。我會嘗試CommonJS模塊。 –

7

感謝@喬納森翁,看起來像config.js(不是JSON文件)按預期工作,我可以把一些意見。

module.exports = { 

    // Development Environment 

    development: { 
    database: { 
     host: '127.0.0.1', 
     login: 'dev', 
     password: 'dev' 
    } 
    }, 

    // Production Environment 

    production: { 
    database: { 
     host: '127.0.0.1', 
     login: 'prod', 
     password: 'prod' 
    } 
    } 
}; 
+0

嘿,謝謝把這個樣品放在這裏:) – VilleKoo

0

js文件有@Peter Lyons提到的各自的特權。但是,如果我不必訪問API密鑰的外部資源等,我寧願JSON配置文件。

簡單的原因是我不必爲了修改配置文件而碰我的代碼。我可以簡單地創建一個API來編輯這些json文件來添加,更新或刪除任何配置鍵值對。即使使用API​​爲單獨的環境添加全新的配置文件。

並使用config模塊來使用這些配置