表达静态:提供包含动态内容的网页

时间:2018-04-11 15:50:37

标签: node.js express

我使用express.static来提供一些页面,让我们说你浏览:

https://amazing.com/static

它提供目录的内容,在我的例子中是index.html和JS脚本,太棒了!

现在,我想实现以下目标:

如果您浏览

https://amazing.com/static/whatever

我想提供与上面相同的页面,但保持“无论什么”的URL完好无损,其中'what'是某些动态内容的标识符。

客户端应该在该URL上,以便客户端JS脚本可以在加载&之后根据路径获取内容。显示静态页面。

不确定这可以用express.static实现 - 我是节点/表达生态系统的新手...

1 个答案:

答案 0 :(得分:0)

您可以实现此目的,但不能使用express.static()。您需要定义一个动态路由,忽略路径中的标识符并使​​用所需的静态文件进行响应:

// ...
const { resolve } = require('path');
// wherever your static files are, relative to this file
const myStaticDirectory = './www';

app.use('/static', express.static(resolve(__dirname, myStaticDirectory)));

app.get('/static/:id', (req, res) => {
  res.sendFile(resolve(__dirname, myStaticDirectory, 'index.html'));
});