2011-03-29 2 views
0

Mon application Web utilise le système de création de modèles Smarty côté serveur pour générer du contenu. Mon application utiliserait beaucoup d'interaction AJAX. Au lieu de générer le contenu côté serveur et d'envoyer des données html au client à chaque fois, je voudrais envoyer juste JSON du serveur, puis lier les données avec le modèle Smarty du côté client. Cela serait très utile pour que le modèle soit mis en cache du côté client, puis je pourrai le réutiliser pour chaque interaction AJAX et je transmettrais alors des données JSON (et non HTML) serveur, je peux économiser beaucoup sur les données qui sont en cours de téléchargement.Le moteur de template smarty peut-il être utilisé pour créer des templates côté client?

Je sais que le moteur de modèle de moustache peut le faire puisqu'il est agnostique de langue mais est-ce possible de faire cela avec Smarty?

Ce que je ne veux pas est de faire quelque chose comme ça dans JS

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

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

Au lieu de cela ce que je veux est d'avoir ce modèle de div dans le modèle et puis juste affecter les données à ce modèle

Répondre

0

Smarty fonctionne avec PHP. Puisque PHP est un langage côté serveur, Smarty ne peut pas mettre en cache le côté client.

Pourquoi ne pas simplement charger la structure initiale avec des espaces réservés, puis pour chaque requête JSON, il suffit de remplacer les espaces réservés dans votre fichier HTML?

+0

Votre couche JS ne devrait-elle pas gérer ce genre de choses de toute façon? – JohnP

+0

Le problème avec l'utilisation d'un espace réservé est que c'est seulement bon pour les données simples comme les variables. Mais si j'ai une logique impliquée là, par exemple. une boucle, une section conditionnelle, etc., les espaces réservés ne feront pas bien. J'écrirai à nouveau mon modèle dans JS pour les scénarios ci-dessus, ce qui irait à l'encontre du but du MVC de séparer View des autres parties – Ankit

2

Il y a un port de PHP Smarty à JScript - http://code.google.com/p/jsmart/

Il est gratuit et open-source

Avec elle, vous pouvez utiliser votre Smarty existant modèles à la fois en PHP et en JavaScript

Questions connexes