0

我有一个使用 res.render("/somepage", vars) 渲染的页面。vars 是一个包含查询结果的对象。但是,如果我想在侧边栏中显示一段不相关的内容而不创建回调地狱并在 vars 中包含两个查询的结果怎么办?使用 async/promises 不是一种选择。

我使用的方法是只创建主要内容,然后通过调用返回 JSON 对象的 URL 使用 jQuery $.get 获取侧边栏内容。这个 JSON 对象是另一个查询的结果,我使用 res.json(someQueryResult) 创建它

我在http://lelizondo.tumblr.com/post/29971693078/holy-sh-batman-showing-async-blocks-of-data-from上发表了更广泛的解释,但我想知道是否有更好的方法,也许使用部分或我缺少的其他技术。

谢谢。

4

2 回答 2

0

这可能更像是一个发展哲学问题。正如第一位评论者所提到的,从某种意义上说,向服务器发出两个请求以呈现单个页面是一种浪费。但是,如果这是真正独立于主体的内容,您可能确实希望避免将查询/渲染与主体内容纠缠在一起。这使您可以单独维护它(减少错误的风险)并可能让不同的人(如果您在团队环境中)在组成页面的不同“小部件”上工作。

我建议对您的 jQuery 方法的唯一改进是使用下划线微模板之类的东西来呈现该 JSON,而不是手动构建 HTML。

朝着这个方向迈出的下一步(就像我说的那样,这是一个哲学问题)将使用诸如骨干网之类的东西之类的东西,并将您的服务器端路由扩展为完整的 REST API。然后从理论上讲,随着站点的增长,它甚至可能来自不同的 node.js 服务器。

如果你想全押,总有这样的方法

于 2012-08-23T19:40:12.370 回答
0

您可能希望考虑像导体这样的东西.. http://howtonode.org/step-of-conductor

于 2012-08-22T22:21:44.297 回答