我想静态渲染一个在Express中使用动态网址的网页。
具体来说,
我有一个用户发帖的论坛,每个帖子都有一个动态网址,当用户点击相关的锚链接时会显示帖子:
localhost:8080/posts/postNumber
我有一个静态html页面localhost:8080 / posts /。
我希望用户点击的动态链接呈现静态页面localhost:8080 / posts /,但显示url localhost:8080 / posts / postNumber,这样我就可以使用带有AJAX请求的帖子号码。
有没有办法在没有动态渲染的情况下这样做?我正在尝试?
答案 0 :(得分:1)
您可以像这样定义网址参数:
app.get('/posts/:postNumber/', function (req, res) {
// do stuff (or not) with req.params which will have
// {postNumer: yourValue}
var options = {
root: __dirname + '/public/',
dotfiles: 'deny',
headers: {
'x-timestamp': Date.now(),
// other headers you might want
}
};
var fileName = 'staticFileName';
res.sendFile(fileName, options, function (err) {
if (err) {
next(err);
} else {
console.log('Sent:', fileName);
}
})
})
这将匹配/posts/[anything_you_want]
并在选项中指定的目录中发送指定其fileName
的文件名。这基于此处的明确4个文档:http://expressjs.com/en/api.html#res.sendFile