2011-03-29 100 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