Express 在服务器端呈现模板有意义吗?

Express 在服务器端呈现模板有意义吗?,express,pug,Express,Pug,我正在学习与Express捆绑的模板引擎Jade。据我所知,Jade允许服务器端渲染。这不是因为两个原因而不理想吗 1) 服务器必须进行更多计算才能呈现模板。工作可以推送到客户端 2) 一旦呈现了一个模板或部分模板,并且数据需要更新,它只向客户端发送JSON,而不是重新发送完全成熟的HTML,这会消耗带宽 服务器端模板呈现是否真的存在这些问题?我认为这取决于您编写的应用程序的类型。如果您有一个主要服务于单个页面的页面,并且适合您典型的CRUD/MVC模式,那么这可能不是一个问题。但是,如果您正在

我正在学习与Express捆绑的模板引擎Jade。据我所知,Jade允许服务器端渲染。这不是因为两个原因而不理想吗

1) 服务器必须进行更多计算才能呈现模板。工作可以推送到客户端

2) 一旦呈现了一个模板或部分模板,并且数据需要更新,它只向客户端发送JSON,而不是重新发送完全成熟的HTML,这会消耗带宽


服务器端模板呈现是否真的存在这些问题?

我认为这取决于您编写的应用程序的类型。如果您有一个主要服务于单个页面的页面,并且适合您典型的CRUD/MVC模式,那么这可能不是一个问题。但是,如果您正在使用大量ajax编写动态内容,那么这就是一个问题:-)

我感觉到了你的痛苦——我已经被这咬了好几次了。最后,我只是在浏览器中通过加载核心页面后执行的异步调用来执行所有列表绑定。这有点糟糕,因为您喜欢第一个请求附带一页预先绑定的列表数据,但随后的页面将由ajax调用驱动。我只是不想为服务器和客户端编写一次模板

我认为/Jade不支持这种客户端绑定。好消息是,有几种流行的模板语言可以在服务器和浏览器上使用。我所知道的两个例子是:

我还没有看到有人在express中使用plates,因为它属于flatironjs项目,它有自己不断增长的框架。在express中使用mustache和ejs的例子不胜枚举:

另一方面,这里是Joyent站点上节点的模板包列表:

我的建议是从EJS开始——它的非HAML风格语法更为实际,支持客户端和服务器绑定,并且似乎在express堆栈中得到了很好的接受


快乐编码

还有一点很重要。取决于你的网站目标。你可能要注意搜索引擎优化与否


简单地说,从服务器生成的内容由搜索引擎索引。其他人则不然。因为搜索引擎爬虫不关心客户端内容。

谢谢,这很有用。“列表绑定”是指“填充数据”吗?此外,您似乎建议只使用客户端模板,这样就不必为服务器重写它们。那么,为什么要挑出在客户端和服务器上都能工作的模板语言呢?当我说列表绑定时,我指的是请求一个数据列表(通常是json/xml,分页),将该数据结构应用到模板,并将html呈现给客户端。我并不是建议您只使用客户端模板——我指出的两种模板都适用的原因是我希望它们在这两种情况下都可用。例如,我希望在中继器中为列表项提供一个模板。在客户机上使用它非常有效-您可以请求一页数据,并将其绑定到客户机中。当我想在页眉上使用相同的模板时会发生什么?我当然不会仅仅为那个头信息发出http请求,但我不想为了这个用途再次编写相同的模板。这就是双重目的模板制作变得很棒的地方。(为超长帖子感到抱歉)谷歌机器人现在运行JavaScript,所以内容呈现的客户端可以被谷歌索引。