2011-12-16 89 views
6

我正在学习与Express捆绑在一起的模板引擎Jade。据我了解,Jade允许服务器端呈现。是不是不理想的原因有两个:渲染模板服务器端有意义吗?

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

2)一旦模板或部分已经被渲染,并且数据需要更新,它只是向客户端发送JSON,而不是重新发送完全成熟的HTML,这是带宽的消耗。

服务器端模板渲染出现这些真正的问题吗?

回答

7

我认为这取决于您正在编写的应用程序的类型。如果您的页面主要为单个页面提供服务,并且适合您典型的CRUD/MVC模具,则可能不是问题。但是,如果你用一吨ajax写一些动态的东西,这是一个问题:-)

我觉得你的痛苦 - 我已经被这几次在各种堆栈中咬了。我最终只是在加载核心页面后执行所有在浏览器中使用异步调用的列表绑定。它有点臭,因为你喜欢第一次请求带有一个预先绑定列表数据的页面,但随后的页面被ajax调用驱动。我只是不想为服务器和客户端编写一次模板材料。

我不认为/ Jade支持那种客户端绑定。好消息是,在服务器和浏览器中都有一些流行的模板语言。这两个我所知道的是:

我还没有见过用板与快递的人,因为它属于flatironjs项目哪一种具有这是自己正在发展的框架。有吨的例子有使用胡子和EJS与快递:

在一个侧面说明,这里的模板包的节点上Joyent公司的网站列表:

https://github.com/joyent/node/wiki/modules#wiki-templating

我的建议是从EJS开始 - 这是一个更多的脚踏实地使用非HAML类型的语法,支持客户端和服务器绑定,并且似乎在快速堆栈中被广泛接受。

快乐编码!

+0

谢谢,这很有用。通过“列表绑定”,你的意思是“填充数据”?此外,您似乎只建议使用客户端模板,以便不必为服务器重写它们。那么,为什么你挑选了可在客户端和服务器上工作的模板语言? – Randomblue 2011-12-19 15:23:30

+0

当我说列表绑定时,我的意思是请求数据列表(通常是json/xml,分页),将该数据结构应用于模板,并将html呈现给客户端。我并不是建议你只使用客户端模板 - 我指出在两种模式下工作的原因是我希望在两种情况下都可以使用它们。 – 2011-12-19 17:59:06

1

还有一个重点。取决于你的网站目标。您可能需要注意SEO或不。

简而言之,从服务器生成的内容是由搜索引擎编制索引。其他没有。因为搜索引擎抓取工具不关心客户端内容。