Question

Les modèles sont une activité relativement saine dans les langages de programmation établis, mais existe-t-il de bons modèles pouvant être traités en JavaScript?

Par "modèle" Je veux dire un document qui accepte un objet de données en tant qu'entrée, insère les données dans un type de langage de balisage sérialisé et génère le balisage. Des exemples bien connus sont JSP , le code PHP d'origine, XSLT .

Par "bon" Je veux dire que c’est déclaratif et facile à écrire pour un auteur HTML, qu’il est robuste et qu’il est également pris en charge dans d’autres langages. Quelque chose de mieux que les options que je connais. Quelques exemples de "pas bon":

Maths chaîne:

element.innerHTML = "<p>Name: " + data.name
    + "</p><p>Email: " + data.email + "</p>";

clairement trop compliqué, la structure HTML n'est pas apparente.

XSLT:

<p><xsl:text>Name: </xsl:text><xsl:value-of select="//data/name"></p>
<p><xsl:text>Email: </xsl:text><xsl:value-of select="//data/email"></p>

// Structurellement, cela fonctionne bien, mais avouons-le, XSLT confond les développeurs HTML.

Trimpath:

<p>Name: ${data.name}</p><p>Email: ${data.email}</p>

// C'est bien, mais le processeur n'est supporté que par JavaScript et le langage est en quelque sorte une primitive ( http://code.google.com/p/trimpath/wiki/JavaScriptTemplateSyntax ).

J'aimerais voir un sous-ensemble de JSP, ASP ou PHP transféré vers le navigateur, mais je ne l'ai pas trouvé.

Qu'est-ce que les gens utilisent ces jours-ci en JavaScript pour créer leurs modèles?

Addendum

Après quelques mois, de nombreuses langues de modèles réalisables ont été publiées ici, mais la plupart d'entre elles ne sont utilisables dans aucune autre langue. La plupart de ces modèles ne peuvent pas être utilisés en dehors d'un moteur JavaScript.

L'exception est celle de Microsoft: vous pouvez traiter le même ASP soit dans le navigateur, soit dans tout autre moteur ASP. Cela a son propre ensemble de problèmes de portabilité, puisque vous êtes lié aux systèmes Microsoft. J'ai marqué cela comme la réponse, mais je suis toujours intéressé par des solutions plus portables.

Merci pour toutes vos contributions!

Était-ce utile?

La solution

Des fonctionnalités de modèle côté client sont à venir dans ASP.NET AJAX 4.0 à venir.

http: // encosia.com/2008/07/23/sneak-peak-aspnet-ajax-4-client-side-templating/

De plus, vous pouvez utiliser la bibliothèque Microsoft AJAX (qui constitue la partie JavaScript d’ASP.NET AJAX) sans utiliser ASP.NET.

http://www.asp.net/ajax/downloads/

Autres conseils

John Resig dispose d'un moteur de création de modèles javascript mini à l'adresse http://ejohn.org/blog/javascript-micro-templating/

Vous voudrez peut-être consulter le Moustache . C'est un langage de modèle vraiment portable et simple, avec prise en charge de javascript entre autres langues. .

Je suis tombé sur ça aujourd'hui, je ne l'ai pas encore essayé ...

http://beebole.com/pure/

Les

modèles de fermeture sont un système de modèles assez robuste de Google et fonctionnent aussi bien en Javascript et Java. J'ai eu de bonnes expériences en les utilisant.

ExtJS dispose d'une classe de modèles exceptionnelle appelée Ext.XTemplate: http://extjs.com/deploy/dev/docs/?class=Ext.XTemplate

J'utilise les modèles Google Closure . http://code.google.com/closure/templates/docs/helloworld_js.html

Modèles simples, BiDi , prise en charge, échappement automatique, optimisé pour la vitesse. En outre, l'analyse du modèle se produit comme une étape de génération afin de ne pas ralentir le client. Un autre avantage est que vous pouvez utiliser les mêmes modèles de Java, au cas où vous auriez besoin de générer votre code HTML sur le serveur pour les utilisateurs avec JavaScript désactivé.

Tenjin http://www.kuwata-lab.com/tenjin/ pourrait soyez ce que vous cherchez. Je ne l'ai pas utilisé, mais ça a l'air bien.

J'ai écrit http://google-caja.googlecode.com/svn/changes/mikesamuel/string-interpolation-29-Jan-2008/trunk/src/js/com/google /caja/interp/index.html décrit un système de gabarit qui verrouille l’interpolation de chaîne sur javascript de manière à empêcher les attaques XSS en choisissant le schéma d’échappement correct en fonction du contexte précédent.

Si vous utilisez Script # , vous voudrez peut-être envisager SharpTemplate , un moteur de templates HTML extrêmement efficace et fortement typé.

Modèles distaux http://code.google.com/p/distal est un peu comme votre démo XSLT mais plus simple:

<p>Name: <span data-qtext="data.name"></span></p>
<p>Email: <span data-qtext="data.email"></span></p>

Si vous utilisez Rhino (une implémentation Java de JavaScript), vous pouvez exécuter le langage de modèle JavaScript de votre choix sur le serveur aussi.

Vous savez également que les résultats du modèle de serveur et de navigateur sont identiques. (Si le modèle est implémenté dans 2 langues, il peut y avoir des différences subtiles entre les implémentations.)

... Mais maintenant 5 ans plus tard (c'est-à-dire l'année 2016), avec Java 8, vous utiliseriez plutôt Nashorn, pas Rhino. Voici une introduction à Nashorn, et si vous faites défiler un peu vers le bas, vous trouverez un exemple de langage de modèle Nashorn + Mustahce: http://www.oracle.com/technetwork/articles/java /jf14-nashorn-2126515.html

(Personnellement, j'utilise React.js côté serveur, via Nashorn (mais React n'est pas un langage de templates).)

Un choix probablement intéressant est https://github.com/rexxars/react-markdown ce qui est un moyen plutôt intéressant d’inclure une réduction dans votre interface Web basée sur React. Je l'ai testé et fonctionne assez bien, bien que la documentation me laisse comprendre que le rendu HTML a acquis certains problèmes dans la branche 3.x. Cela semble quand même une option viable pour certaines utilisations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top