我明白你可以使用以下方式在Express中提供静态内容:
app.use(express.static(__dirname + "../../../public_html"));
然而,我正在尝试让Express根据响应发送的"Accept"标头来更改其传递内容的呈现方式。通常,我有的内容是通过REST API以JSON格式请求的,因此URL为:http://blah.com/this/that/item
,这很有效。然而,我还希望用户能够从浏览器访问同一页,浏览器会发送类似于
Accept:text/html
的东西,由于该标头,用户可以看到具有正确格式(CSS/JS/HTML等)的页面,以呈现相同的信息。目前,我正试图通过以下方式提供内容:
if (req.accepts("text/html")) {
res.sendfile("/", {
root: "../../../public_html"
});
res.status(200);
return;
}
public_html
文件夹中包含 index.html
和相对应的文件夹(包含 CSS 和 JS)。完成后,我不会发送该文件,但我认为这是一个好的起点,然后在弄清楚如何根据“Accept”标头提供静态内容后再添加 JSON 内容。
有更好的方法吗?
res.render
需要一个渲染引擎,然后读到了jade
,它需要一个特定的、单独的标记。 - zero298