Express中具有静态路由的动态URL

时间:2017-10-23 03:28:42

标签: javascript ajax express routing

我想静态渲染一个在Express中使用动态网址的网页。

具体来说,

我有一个用户发帖的论坛,每个帖子都有一个动态网址,当用户点击相关的锚链接时会显示帖子:

localhost:8080/posts/postNumber

我有一个静态html页面localhost:8080 / posts /。

我希望用户点击的动态链接呈现静态页面localhost:8080 / posts /,但显示url localhost:8080 / posts / postNumber,这样我就可以使用带有AJAX请求的帖子号码。

有没有办法在没有动态渲染的情况下这样做?我正在尝试?

1 个答案:

答案 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