【问题标题】:Express serving static files for multiple paths using regex使用正则表达式为多个路径快速提供静态文件
【发布时间】:2016-04-18 01:05:11
【问题描述】:

我的应用中有不同的路径,例如:

  • /a
  • /a/:b
  • /a/:/b/:c/:d

对于像/a 这样的路径,我使用:

app.use(express.static(path.join(__dirname, 'public')));

对于像/a/:b 这样的路径,我添加另一个这样的路径:

app.use('/a', express.static(path.join(__dirname, 'public')));

除了为每个路径添加express.static 之外,有没有办法通过使用正则表达式来使用一行代码来实现这一点。 比如:

app.use(/\/[a-z]*/, express.static(path.join(__dirname, 'public')));
// BTW, this doesn't work

为多个路径提供静态文件的最佳做法是什么?谢谢。

【问题讨论】:

  • 你为什么不把你的静态文件存储在一个带有子文件夹 a/b/c/whatever 的文件夹中?
  • 如果您的文件存储磁盘层次结构与 URL 路径层次结构相匹配,那么您可以将所有文件放在一个磁盘层次结构中,只需指定顶层即可对所有内容使用一个 express.static() 调用。 express.static() 将为您完成多个级别。
  • @jfriend00 是的,通过在静态链接上加斜杠解决。
  • @dragfire - 这根本不是您在问题中向我们展示的内容,因此我们不知道您在源文件中所做的事情。无论如何,很高兴你弄清楚了。

标签: node.js express


【解决方案1】:

您可以重定向以添加斜杠:

app.all(/\/[a-z]*/, function(req, res) { 
    res.redirect('/static/'); 
});
app.use('/static/', express.static( __dirname + '/public' ));

【讨论】:

    【解决方案2】:

    我已通过在所有静态链接前添加斜杠解决了这个问题。
    例如:

    <link href='/lib/csss/bstrap.min.js' />
    

    而不是

    <link href='lib/csss/bstrap.min.js' />
    

    NodeJS+Express: serving static files for diffrerent URLs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2016-01-15
      • 2021-12-10
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多