【问题标题】:How do I render a page in Node.JS with hogan-express如何使用 hogan-express 在 Node.JS 中呈现页面
【发布时间】:2016-06-02 10:31:21
【问题描述】:

如何在节点中渲染一个页面(使用路由器),它只是将一个值传递给模板引擎供我使用?

例如(这是真正的代码):

var apiRouter = express.Router();

 apiRouter.get('/myPosts', function(req, res){
    userPostsModel.findOne({'profileID':req.session.facebookProfileId}, function(err, userPosts) {
            if(userPosts) {
                res.json({
                    posts       :   userPosts.posts
            });
            } else {
                console.log('You do not have any posts');
            }
        })
})

以及模板引擎部分(html文件):

<!doctype html>
<head>
    <meta charset="UTF-8">
    <title>My Posts</title>
</head>
<body>
    <p><a href="/post?id={{posts.[0].postID}}">Post 1</a></p>
    <p><a href="/post?id={{posts.[1].postID}}">Post 2</a></p>
</body>
</html>

我希望这会呈现页面,但相反,我得到了这个(在网页上):

{"posts":["12345667"]}

对于我的模板引擎,我使用的是“hogan-express”,如下所示:

app.engine('html', require('hogan-express'));
app.set('view engine', 'html');

我知道 res.json 在这里可能是错误的,但我对此一无所知。节点和路由器的文档到处都是!

【问题讨论】:

  • 您尝试使用哪些快速插件/模块进行模板化?
  • 你是这个意思吗:var apiRouter = express.Router();
  • 不,我猜问题是你没有设置一个?见this guide
  • This 似乎是一个合乎逻辑的起点。
  • 您正在调用 res.json,它将 json 数据发送到客户端。而是使用res.render('template-name', { posts:userPosts.posts});

标签: node.js express hogan.js


【解决方案1】:

正如@Molda 在下面的 cmets 中回答的那样,应该是这样的:

res.render('template-name', { posts:userPosts.posts});

试过了,对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2014-04-17
    • 2018-07-24
    • 1970-01-01
    • 2013-02-23
    • 2013-06-30
    相关资源
    最近更新 更多