Est-il une bonne pratique pour générer du html avec du javascript
Je suis d'appeler un service web qui retourne un tableau d'objets JSON. Je veux profiter de ces objets et de remplir un div avec HTML. Disons que chaque objet contient une adresse url et nom.
Si je voulais générer le code HTML suivant pour chaque objet:
<div><img src="the url" />the name</div>
Est la meilleure pratique pour cela? Je peux voir quelques façons de le faire:
- Concaténer des chaînes
- Créer des éléments
- Utiliser un plugin de template
- Générer le code html sur le serveur, puis servir via JSON.
- Vous pouvez aussi vérifier trait de soulignement js: documentcloud.github.com/underscore/#template Il joue très bien avec backbone.js
- Le choix de mong 1-4: dépend de la quantité de contenu à être injecté.(préférez les 4 pour les plus gros) comment beaucoup de différentes parties html devra être annexé au total (3 ou 4). ce que sb est familier. (Influence de dev temps). Si tu ne connais pas les outils de son juste une petite modal qui va être injecté une fois, je ne sais pas amy de mieux que de pur js pour le faire (1-2)
Vous devez vous connecter pour publier un commentaire.
Options #1 et #2 sont va être votre plus immédiate et directe de la options, cependant, pour les deux options, vous allez vous sentir de la performance et de la maintenance de l'impact par la construction de chaînes ou de création d'objets DOM.
De template n'est pas immature, et que vous voyez ce message dans la plupart des principaux frameworks Javascript.
Voici un exemple dans JQuery Template De Plugin qui va vous sauver la performance succès, et c'est vraiment, vraiment simple:
Je dis allez les frais de route (et plus performant, plus facile à gérer), et l'utilisation de templates.
Si vous devez absolument pour concaténer des chaînes, au lieu de la normale :
utiliser un tableau temporaire:
À l'aide de tableaux est beaucoup plus rapide, en particulier dans IE. J'ai fait quelques tests avec des cordes il y a un moment avec IE7, Opera et FF. L'opéra a pris seulement 0,4 s pour effectuer le test, mais IE7 n'avaient pas terminé au bout de 20 MINUTES !!!! ( Non, je ne plaisante pas. ) Avec la matrice de IE a été très rapide.
L'une des deux premières options est à la fois normal et acceptable.
Je vais donner des exemples de chacun dans Prototype.
Approche #1:
Approche #2:
Peut-être une approche plus moderne consiste à utiliser un template de la langue tels que Moustache, qui a des mises en œuvre dans de nombreuses langues, y compris le code javascript. Par exemple:
Vous obtenez même un avantage supplémentaire - vous pouvez réutiliser les mêmes modèles dans d'autres lieux, tels que du côté serveur.
Si vous avez besoin de plus compliqué modèles (si les déclarations, les boucles, etc.), vous pouvez utiliser Guidon qui a plus de fonctionnalités, et est compatible avec la Moustache.
Voici un exemple, à l'aide de mon Simple Des Modèles plug-in jQuery:
Vous pouvez ajouter le modèle de code HTML à votre page dans un div caché et ensuite utiliser cloneNode et votre favori de la bibliothèque de l'interrogation des installations pour la remplir
Divulgation: je suis le responsable de BOB.
Il y est une bibliothèque javascript qui rend ce processus beaucoup plus facile appelé BOB.
Pour votre exemple:
Cela peut être généré avec BOB par le code suivant.
Ou avec la syntaxe plus courte
Cette bibliothèque est très puissant et peut être utilisé pour créer des structures très complexes avec insertion de données (similaire à d3), par exemple.:
BOB ne prend actuellement pas en charge de l'injection de données dans les DOM. C'est sur la todolist. Pour l'instant vous pouvez simplement utiliser la sortie avec la normale JS ou jQuery, et le mettre où vous voulez.
J'ai fait cette bibliothèque parce que je n'étais pas heureux avec toutes les alternatives comme jquery et d3. Le code très compliqué et difficile à lire. Travailler avec BOB est, à mon avis, ce qui est évidemment partial, beaucoup plus agréable.
BOB est disponible sur Bower, de sorte que vous pouvez l'obtenir en cours d'exécution
bower install BOB
.1) C'est une option. Construire le code html avec du JavaScript côté client et ensuite l'injecter dans les DOM dans son ensemble.
Remarque qu'il y est un paradigme qui sous-tend cette approche: le serveur sorties juste des données et (en cas d'interaction) reçoit les données du client asyncronoulsy avec des requêtes AJAX. Le côté client code operete comme un stand-alone JavaScript de l'application web.
L'application web peut fonctionner, rendre l'interface, même sans que le serveur soit up (bien sûr, il n'affiche pas les données ou d'offrir tout type d'interaction).
Ce paradigme est de faire adopter souvent ces derniers temps, et l'ensemble des cadres sont construits autour de cette approche (voir backbone.js pour exemple).
2) Pour des raisons de performances, lorsque cela est possible, il est préférable de construire le code html dans une chaîne, puis de l'injecter dans son ensemble dans la page.
3) Ceci est une autre option, ainsi que l'adoption d'un cadre d'Application de Web. D'autres utilisateurs ont posté des différents moteurs de template disponible. J'ai l'impression que vous avez les compétences, de les évaluer et de décider de suivre cette voie ou non.
4) une Autre option. Mais la servir comme un texte/html; pourquoi JSON? Je n'aime pas cette approche car les mélanges de PHP (votre serveur de langue) avec Html. Mais je l'adopte souvent comme un compromis raisonnable entre l'option 1 et 4.
Ma réponse: vous êtes déjà à la recherche dans la bonne direction.
Je suggère d'adopter une approche entre 1 et 4 comme je le fais. Autrement adopter un framework web ou moteur de template.
Juste mon avis basé sur mon expérience...