2011-03-29 91 views
0

我的web应用程序使用服务器端的Smarty模板系统来生成内容。我的应用程序会使用很多AJAX交互。我不想在服务器端生成内容,而是每次向客户端发送html数据,我只想从服务器发送JSON,然后将数据与客户端的Smarty模板绑定。smarty模板引擎可以用来在客户端创建模板吗?

这对于将模板缓存在客户端的方式非常有帮助,然后我可以在每次AJAX交互中重复使用它,因为那样我就可以只从发送JSON数据(而不是整个HTML)服务器,我可以在实际下载的数据上节省很多。

我知道小胡子模板引擎可以做到这一点,因为它是语言不可知的,但是可以用Smarty来做到这一点吗?

我不想要的是做这样的事情在JS

for (var i in foo) { 
    html += '<div class = "myClass">foo[i].bar</div>'; 
} 

Y.one('#myDiv').set('innerHTML', html); 

相反,我要的是有模板DIV的这个模板,然后只需将数据分配到模板

回答

0

Smarty与PHP结合使用。由于PHP是服务器端语言,因此您无法让Smarty缓存客户端。

为什么不只是用占位符加载初始结构,然后为每个JSON请求,只需替换HTML文件中的占位符?

+0

不应该你的JS层处理那些东西吗? – JohnP 2011-03-29 08:05:00

+0

使用占位符的问题在于它仅适用于简单的数据,如变量。但是如果我也有逻辑参与,例如一个循环,一个条件部分等,占位符将不会很好。然后,我将再次在JS中为上述场景编写我的模板,这将破坏将View与其他部分分开的MVC目的 – Ankit 2011-03-29 08:06:04