Node.js和Express中应该在哪里find一个数据库configuration文件?

我现在正在学习Node.js和Express,并希望使用mysql模块来呈现多个独特的页面,所以而不是写出var connection=mysql.createConnection({user:'root', password: 'root'...etc})routes目录下的每个文件中,我确信最好在每个路由文件中调用我自己的mysqlconfiguration文件。

但是,我应该在哪里应该将configuration文件放在Express层次结构中,以及如何从每个路由文件中调用该文件? 我知道所有的图像,样式表和JavaScript文件应该位于public目录下的每个特定的目录中,但我不知道应该从路由文件中将所有其他文件放在哪里。

我也想知道,一旦我在Web上公布这个Web应用程序,我所有的文件,从主app.jsroutes目录下的文件,到public目录下的文件等,都可以被用户find。 如果是这样的话,那么我想我不应该把数据库configuration文件放在客户端可以访问的目录上…对吧? 换句话说,我想确定哪些文件可以被客户访问,哪些不能为了避免安全攻击。

要回答你的第一个问题:“把configuration文件放在哪里?”:这有点人意。 把它放到你的应用程序的根目录下。

config.js:

 module.exports = { database:{ host: "" user: "..." } } 

那么你把它包含在你的app.js中:

app.js:

 ... config = require("./config"); db = config.database; var connection=mysql.createConnection({user:db.user, ...}) 

请注意,您可能需要两个configuration文件,一个在您的版本控制和一个私有的机器。 不同的开发者可能有不同的数据库访问。 但是现在我认为你不必担心这个问题。

对于第二个问题“我所有的文件是否公开?”:否,只有您指定为静态文件(使用快速中间件)才会被提供。

app.js:

 ... // Exposes the public folder app.use(express.static(__dirname + '/public')); 

你可以把它们放在任何你想要的地方。 我通常在项目根目录下创build一个/conf目录,并以JSON格式将configuration文件放在那里。