res.render 页面重新加载时的路由?
res.render for routes on page reload?
(在 UI 路由器上使用 MEAN)
以下代码为定义的路由发送 json 响应。当使用 UI Router 呈现模板时,这工作正常;但是,如果我重新加载页面,因为响应仅包含 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);
});
});
假设这是一个标准问题,我怎样才能最好地让这个页面在重新加载页面时 res.render('index') 并响应 json 响应?我应该,
- 为 json 响应创建一个单独的路由,它被称为 post promise with UI Router
- 让 /posts/:post 路由简单地响应 res.render('index')?
感谢您的任何回复,不确定此类问题的通常做法是什么!
由于许多在线示例具有不同的目录结构,因此我花了一段时间才找到可行的解决方案。我在路由的末尾放置了一个 catch all,这样 url 对任何 UI 路由器状态的请求都不会遇到 404,而是总是 return 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 等。显然,快速路由不应与任何 angular 定义的路由冲突。感谢 reddit 上的 NormySan 告诉我这件事。
(在 UI 路由器上使用 MEAN)
以下代码为定义的路由发送 json 响应。当使用 UI Router 呈现模板时,这工作正常;但是,如果我重新加载页面,因为响应仅包含 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);
});
});
假设这是一个标准问题,我怎样才能最好地让这个页面在重新加载页面时 res.render('index') 并响应 json 响应?我应该,
- 为 json 响应创建一个单独的路由,它被称为 post promise with UI Router
- 让 /posts/:post 路由简单地响应 res.render('index')?
感谢您的任何回复,不确定此类问题的通常做法是什么!
由于许多在线示例具有不同的目录结构,因此我花了一段时间才找到可行的解决方案。我在路由的末尾放置了一个 catch all,这样 url 对任何 UI 路由器状态的请求都不会遇到 404,而是总是 return 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 等。显然,快速路由不应与任何 angular 定义的路由冲突。感谢 reddit 上的 NormySan 告诉我这件事。