如何通过JSON输出Jade内容? (Node.js的)

几个月前,我在CodeIgniter中编写了一个video库networking应用程序,并试图使用Express + Jade将后端移动到Node上以生成内容。 PHP版本将JSON发送到前端,通常包含大量的HTML。

我想用Jade呈现HTML位(因为它就是这样),但显然我想以JSON格式输出,而不是直接input到浏览器。 如何做到这一点可能是非常明显的,但目前我无法弄清楚…非常感谢任何帮助。

原始的PHP

ob_start(); for ($i = $start; $i < $end; $i++) { $v = $videos[$i]; echo '<a id="video-' . $v->url . (isset($v->otherid) ? '-' . $v->otherid : '') . '" href="#!' . Settings::$pretty_link . '/' . $v->url . (isset($v->otherid) ? '/' . $v->otherid : '') . '" class="Box' . ($i == $start ? " Batch" : "") . '" title="Click to view the ' . $v->name . '"><img src="' . site_url('images/thumb/' . $v->image) . '" alt="The ' . $v->name . '" /><span>' . $v->name . '</span></a>'; } $data[$html] = ob_get_clean(); // Add some other things to $data echo json_encode($data); 

闪闪发光的新的玉

 - var v - for (var i = view.start; i < view.end; i++) { - v = view.videos[i] a(id="#{v.url + (v.otherid === null ? "" : "-" + v.otherid)}", href="#!#{settings.prettyLink + "/" + v.url + (v.otherid === null ? "" : "/" + v.otherid)}/", class="Box #{i == view.start ? "Batch" : ""}", title="Click to view the #{v.name}" ) img(src="#{settings.siteUrl}images/thumb/#{v.image}", alt="The #{v.name}") span #{v.name} - } 

我如何做$data[$html] = ob_get_clean(); 线? (也可能是json_encode之一,虽然我目前对JSON.stringify有很高的期望:)

编辑为@loganfsmyth请求,用于呈现Jade文件的代码(基本上与Express示例相同)。

 res.render("search", { view: view, settings: vgSettings.app }); 

还没有尝试过,但从快速文档 ,这应该工作:

 res.render('yourJadeView', { someOptionalLocal: 'someValue' }, function(err, string) { res.json({html: string}); }); 

如果你想只输出JSON,这应该做的工作:

  res.json({ yourValue: 'hi there' }); 

可以添加状态码:

  res.json(obj, status) 

例如:

  res.json( { workouts: docs }, 200); 

或者,地方可以交换,如在:

  res.json(status, obj); 

使用res.json,不需要指定头文件或调用.end()。 它会默认做所有事情。