Je commence à migrer certaines tâches de génération html d'un environnement côté serveur vers le client. J'utilise jQuery sur le client. Mon but est d'obtenir des données JSON via une API REST et d'utiliser ces données pour remplir HTML dans la page.Cadres de création de modèles côté client pour rationaliser l'utilisation de jQuery avec REST/JSON
En ce moment, lorsqu'un utilisateur clique sur mon site un lien vers Mes projets, le serveur génère du HTML comme ceci:
<dl>
<dt>Clean Toilet</dt>
<dd>Get off your butt and clean this filth!</dd>
<dt>Clean Car</dt>
<dd>I think there's something growing in there...</dd>
<dt>Replace Puked on Baby Sheets</dt>
</dl>
je change cela pour que les projets en cliquant Mes va maintenant Faites une requête GET qui retourne quelque chose comme ceci:
[
{
"name":"Clean Car",
"description":"I think there's something growing in there..."
},
{
"name":"Clean Toilets",
"description":"Get off your butt and clean this filth!"
},
{
"name":"Replace Puked on Baby Sheets"
}
]
Je peux certainement écrire code personnalisé jQuery pour prendre cette JSON et générer le code HTML de celui-ci. Ce n'est pas ma question, et je n'ai pas besoin de conseils sur la façon de le faire.
Ce que je voudrais faire est de séparer complètement la présentation et la disposition de la logique (code jquery). Je ne veux pas créer d'éléments DL, DT et DD via le code jQuery. Je préfère utiliser une sorte de modèle HTML dans lequel je peux remplir les données. Ces modèles peuvent simplement être des extraits HTML qui sont cachés dans la page à partir de laquelle l'application a été chargée. Ou ils peuvent être chargés dynamiquement à partir du serveur (pour prendre en charge des dispositions spécifiques à l'utilisateur, i18n, etc.). Ils pourraient être affichés une seule fois, ainsi que permettre en boucle et répéter. Peut-être devrait-il supporter des sous-modèles, if/then/else, et ainsi de suite.
J'ai beaucoup de listes et de contenu sur mon site qui sont présentés de différentes manières. Je cherche à créer un moyen simple et cohérent de générer et d'afficher du contenu sans créer de code jQuery personnalisé pour chaque fonctionnalité différente sur mon site. Pour moi, cela signifie que j'ai besoin de trouver ou de construire un petit framework au-dessus de jQuery (probablement en tant que plugin) qui répond à ces exigences.
Le seul type de cadre que j'ai trouvé qui est quelque chose comme ceci est jTemplates. Je ne sais pas à quel point c'est bon, car je ne l'ai pas encore utilisé. À première vue, je ne suis pas ravi par sa syntaxe de modèle.
Quelqu'un sait-il d'autres frameworks ou plugins que je devrais examiner? Des articles de blog ou d'autres ressources qui parlent de faire ce genre de chose? Je veux juste m'assurer d'avoir tout examiné avant de le construire moi-même.
Merci!
Merci pour votre point de vue, mais dans mon cas, le point est de s'éloigner de la génération de HTML côté serveur. Chaque élément de données a beaucoup de propriétés, et tout le HTML requis pour envelopper toutes ces propriétés augmente considérablement la taille de la réponse. Quand je multiplie cela par des centaines d'éléments de données, ma réponse HTML peut être plusieurs fois plus grande que les données brutes elles-mêmes. Puisque mon application utilise ajax et nécessite javascript, pourquoi ne pas le rendre dans le navigateur? – Tauren
S'il existe des centaines d'éléments de données, les performances de JavaScript rendant le balisage seront bien pires que celles d'un langage côté serveur tel que C# ou PHP. Combinez cela avec la mise en cache gzip et AJAX et ce n'est plus vraiment un problème. À moins que vous ne soyez vraiment préoccupé par le temps CPU en 2010, il n'y a pas vraiment de raison de mettre le fardeau sur le visiteur et d'augmenter le temps de rendu. – tags2k
Le temps de calcul et la bande passante ne sont pas mes seules raisons d'aller dans cette direction. Cependant, tout ordinateur non ancien avec un navigateur récent ne devrait pas être trop chargé de la tâche que j'ai en tête. Êtes-vous en train de sous-entendre que le contrôle jqGrid (http://www.trirand.net/demophp.aspx) prendra plus de temps pour télécharger et afficher 1000 lignes de données récupérées via JSON/REST que pour télécharger du HTML déjà formaté et remplacer innerHTML de la grille avec elle? Je suis sûr que l'un ou l'autre chemin est assez négligeable. – Tauren