在 Express 文档中,有一个名为
settings
的部分:
http://expressjs.com/api.html#app-settings
但我不知道到底应该去哪里(到某个函数?作为使用中间件中的字典?或其他地方?)
附注我该如何解决这些问题 - 我需要查看源代码吗?
管理配置的方法有很多,但这是我写的一篇关于它的博客文章: https://web.archive.org/web/20130506105513/http://www.chovy.com/node-js/managing-config-variables-inside-a-node-js-application/
基本前提是每个环境都有一个文件(即 config.development.js、config.Production.js),还有一个名为 config.global.js 的其他文件,开发和生产文件将简单地覆盖您在基于该环境的需求的全球性。
这是基本的 config/index.js 文件,假设您的 NODE_ENV=test,这将加载 config.test.js 文件(如果未定义 NODE_ENV,我们将默认为“development”):
var env = process.env.NODE_ENV || 'development'
, cfg = require('./config.'+env);
module.exports = cfg;
接下来是 config.test.js,它将包含 config.global.js,然后根据需要覆盖它的 json 对象:
config.test.js:
var config = require('./config.global');
config.env = 'test';
config.hostname = 'test.example';
config.mongo.db = 'example_test';
module.exports = config;
以及定义所有默认值的 config.global.js:
var config = module.exports = {};
config.env = 'development';
config.hostname = 'dev.example.com';
//mongo database
config.mongo = {};
config.mongo.uri = process.env.MONGO_URI || 'localhost';
config.mongo.db = 'example_dev';
现在我们将它们包装在一起并在我们的代码中使用它......例如在模型中,您可以在 ./models/user.js 中执行类似的操作:
var mongoose = require('mongoose')
, cfg = require('../config')
, db = mongoose.createConnection(cfg.mongo.uri, cfg.mongo.db);
这就是全部内容。
您通常将它们放入特定的配置块中:
app.configure(function () {
// ...
});
您甚至可以使用命名块来进行不同的配置。
让express为您创建一个应用程序并查看一下。为此,只需运行
$ express --help
在命令提示符处查看它提供的内容。
PS:这回答了你的两个问题;-)