2010-10-18 14 views
3

J'ai trouvé un grand nombre de modèles JavaScript côté navigateur qui rendent un modèle avec des valeurs de données une chaîne. Cependant, je ne sais pas très bien comment cette chaîne est censée être traduite pour afficher les éléments dans le DOM.Comment les moteurs de gabarit javascript côté navigateur rendent-ils les modèles?

De toute évidence, une façon est seulement document.write - mais je pense que cela a été enterré depuis longtemps.

Un autre utilise element.innerHTML, mais au moins il y a quelques années, cela ne faisait partie d'aucune norme, et cela ne fonctionnait pas pour les documents XHTML.

Alors, quel est le problème de nos jours? Est-ce que .innerHTML est celui qui convient et qui fonctionne parfaitement pour XHTML et fait partie d'une norme? Ou est-ce que les gens l'utilisent et ça marche? Ou y a-t-il autre chose qui est supporté? En outre, PURE.js semble être entièrement basé sur la création de templates à partir d'éléments DOM, ce qui me semble très attrayant - existe-t-il d'autres moteurs de templates fonctionnant de la même manière?

Répondre

4

innerHTML fonctionne à peu près partout.

Ces méthodes sont également utiles pour travailler avec le DOM qui est essentiellement ce qu'est un moteur de template doit faire:

  • createElement
  • appendChild
  • createTextNode
  • removeChild
  • parentNode

bibliothèques comme jQuery en font un usage intensif.

+0

Je crois que 'innerHTML' a aussi tendance à être très rapide, comparé à vos méthodes DOM habituelles. (Insérer un avertissement d'optimisation prématurée.) Quand on y pense, 'innerHTML' prend une chaîne, et la transforme en noeud DOM, ce que font les navigateurs chaque fois qu'ils chargent une page web. Si un navigateur ne fait pas vite, c'est en difficulté. –

+0

@Paul Dans Chrome DOM est plus rapide que 'innerHTML', dans Firefox ils sont à peu près les mêmes, et dans IE' innerHTML' est beaucoup, beaucoup plus rapide. – xj9

+0

@indieinvader: hein, bon à savoir. Avez-vous des sources? Les tests que je peux trouver suggèrent qu'il n'y a pas beaucoup de différence entre les méthodes DOM et innerHTML dans les navigateurs non IE. 1) http://andrew.hedges.name/experiments/innerhtml/ 2) http://blog.nqzero.com/2009/11/javascript-rendering-performance.html –