快速静态文件 - 所有路由前缀

时间:2013-03-10 17:55:49

标签: node.js express

在我的代码中,我目前有

app.use(express.static(__dirname + "/../styles"))
app.use(express.static(__dirname + "/../public"))
app.use(express.static(__dirname + "/../scripts"))
app.use("/flosses", express.static(__dirname + "/../styles"))
app.use("/flosses", express.static(__dirname + "/../public"))
app.use("/flosses", express.static(__dirname + "/../scripts"))
app.use("/flosses/edit", express.static(__dirname + "/../styles"))
app.use("/flosses/edit", express.static(__dirname + "/../public"))
app.use("/flosses/edit", express.static(__dirname + "/../scripts"))
app.use("/accounts", express.static(__dirname + "/../styles"))
app.use("/accounts", express.static(__dirname + "/../public"))
app.use("/accounts", express.static(__dirname + "/../scripts"))

这非常乏味。我能做这样的事吗?

app.use("*",express.static(__dirname + "/../scripts"))

注意:我在3个不同的目录中有我的css,js和图像,我需要/thing1/index.css,/thing2/index.css,etc。

谢谢,
阿里

2 个答案:

答案 0 :(得分:1)

你可以使用这个,这是一个有点hacky IMO但它应该工作:

// place this after your routes
app.routes.get.forEach(function(r) {
  app.use(r.path, express.static(__dirname + '/public'));
});

它仅适用于GET路由(因此app.routes.get),您可能不需要每条路由,因此您可以在r.path上过滤只选择你需要的路线)。另外,我不确定性能影响。

答案 1 :(得分:1)

为什么不直接在网站的根目录中引用静态内容,而不是将它们添加到应用程序URI的每个级别?

这是大多数人所做的,以及这些框架的设计目标。