我现在正在学习Node.js和Express,并希望使用mysql
模块来呈现多个唯一页面,而不是在位于{{1}下的每个文件上写出var connection=mysql.createConnection({user:'root', password: 'root'...etc})
行目录,我确信最好只在每个路由文件上调用我自己的mysql配置文件。
但是,我应该在哪里将配置文件放在Express层次结构上,如何从每个路由文件中调用该文件?我知道所有图像,样式表和javascript文件都应位于routes
目录下的每个特定目录中,但我不知道从路由文件中放置所有其他文件的位置。< / p>
我还想知道我的所有文件,从主public
到app.js
目录下的文件到routes
目录下的文件等等,都可以被用户找到一旦我在网上宣传这个网络应用程序。如果是这样,那么我认为我不应该将数据库配置文件放在客户端可以访问的目录上......对吗?换句话说,我想确保客户端可以访问哪些文件,以避免安全攻击。
答案 0 :(得分:10)
回答您的第一个问题“在哪里放置配置文件?”: 这有点人性化。把它放到你的应用程序的根目录。
config.js:
module.exports = {
database:{
host: ""
user: "..."
}
}
然后将其包含在app.js中:
app.js:
...
config = require("./config");
db = config.database;
var connection=mysql.createConnection({user:db.user, ...})
请注意,您可能需要两个配置文件,一个在版本控制中,另一个在机器上专用。例如,不同的开发者可能具有不同的数据库访但我认为你现在不必担心这件事。
对于您的第二个问题“我的所有文件是否公开?”: 不,只会提供您指定为静态的文件(使用快速中间件)。
app.js:
...
// Exposes the public folder
app.use(express.static(__dirname + '/public'));
答案 1 :(得分:0)
您可以将它们放在任何地方。我通常在项目根目录下创建一个/conf
目录,并以JSON格式将配置文件放在那里。