在項目中,我們常將一些常量信息做成配置項,如,數據庫的鏈接配置,業務錯誤代碼配資等等。
我們通過兩種方式可以解決該問題。
-
系統環境變量的方式
-
配置文件的方式
下邊,將以這兩方面進行展開。
1. 系統環境變量
Node.js 中通過process.env來訪問當前的環境變量信息
$vim test.js
console.log(process.env.HELLO_MSG);
?
// 系統設置環境變量
$ export HELLO_MSG="Hello, world" && node 1.js
2. 通過配置文件
-
js配置文件
// config.js
var config = {
// debug 為 true 時,用于本地調試
debug: true,
?
name: 'Nodeclub', // 社區名字
description: 'CNode:Node.js專業中文社區', // 社區的描述
keywords: 'nodejs, node, express, connect, socket.io',
// 其他配置項...
};
module.exports = config;
?
// 在使用的模塊文件中引入
var config = require('./config')
?
console.log(config.debug)
-
json文件
{
"debug": true,
"name": "Nodeclub",
"description": "CNode:Node.js專業中文社區",
"keywords": "nodejs, node, express, connect, socket.io"
}
?
// 通過require()函數
var config = require('./config.json');
?
// 讀取文件并使用JSON.parse()解析
var fs = require('fs');
var config = JSON.parse(fs.readFileSync('./config.json').toString());
可以使用strip-json-comments模塊來去掉配置文件中的備注,再將其當作標準的JSON來解析
var fs = require('fs');
var stripJsonComments = require('strip-json-comments');
?
function loadJSONFile (file) {
var json = fs.readFileSync(file).toString();
return JSON.parse(stripJsonComments(json));
}
?
var config = loadJSONFile('./config.json');
console.log(config);
-
YAML格式
// YAML配置文件
name: John Smith
age: 37
spouse:
name: Jane Smith
age: 25
children:
- name: Jimmy Smith
age: 15
- name: Jenny Smith
age: 12
// 通過文件讀取的方式,將獲得的文件內容解析成json對象
var fs = require('fs');
var YAML = require('yamljs');
?
function loadYAMLFile (file) {
return YAML.parse(fs.readFileSync(file).toString());
}
?
var config = loadYAMLFile('./config.yaml');
console.log(config);