Express 重新加载页面上的路由的res.render?

Express 重新加载页面上的路由的res.render?,express,angular-ui-router,mean,ejs,Express,Angular Ui Router,Mean,Ejs,(使用UI路由器的平均值) 以下代码为定义的路由发送json响应。当使用UI路由器呈现模板时,这可以很好地工作;但是,如果我重新加载页面,因为响应只包含json,我将得到一个空页面,没有呈现html,只有json响应 router.get('/posts/:post', function(req, res, next) { req.post.populate('comments', function(err, post) { if (err) { return next(err);

(使用UI路由器的平均值)

以下代码为定义的路由发送json响应。当使用UI路由器呈现模板时,这可以很好地工作;但是,如果我重新加载页面,因为响应只包含json,我将得到一个空页面,没有呈现html,只有json响应

router.get('/posts/:post', function(req, res, next) {
  req.post.populate('comments', function(err, post) {
    if (err) { return next(err); }

    res.json(post);
  });
});
假设这是一个标准问题,当重新加载页面并使用json响应时,我如何才能最好地允许该页面res.render('index')?我应该

  • 为json响应创建一个单独的路由,称为UI路由器的post承诺
  • 让/posts/:post路由简单地用res.render('index')响应吗

感谢您的回复,我不确定这些问题的通常做法是什么

我花了一段时间才找到一个有效的解决方案,因为许多在线示例具有不同的目录结构。我在路由的末尾放置了一个catch-all,这样到任何UI路由器状态的url请求都不会被404满足,而是始终返回index.html文件

app.all('/*', function(req, res, next) {
    // Just send the index.html for other files to support HTML5Mode
    res.sendFile('index.html', { root: __dirname });
});
然后,我在我的快速路线中添加了前缀,例如/api/posts/:post等。显然,快速路线不应该与任何角度定义的路线冲突。感谢reddit上的Normalysan告诉我这件事