Comment charger des modèles avec Hogan.JS à partir d'un fichier externe?
- Je utiliser Hogan.JS que JavaScript template library. Il est censé charge JavaScript modèles à partir de fichiers externes. On peut sans doute externaliser plusieurs modèles dans un fichier JavaScript externe.
Personne ne sait comment faire cela?
J'ai l'exemple de code suivant:
<!DOCTYPE html>
<html>
<head>
<title>Hogan.JS Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/jquery-1.9.0.min.js"></script>
<script src="js/hogan-2.0.0.min.js"></script>
<script id="scriptTemplate" type="text/mustache">
<p>Your text here: {{text}}</p>
</script>
</head>
<body>
<script>
var data = {
text: 'Hello World'
};
var template = $('#scriptTemplate').html();
var compiledTemplate = Hogan.compile(template);
var renderedTemplate = compiledTemplate.render(data);
var box = document.createElement('div');
box.innerHTML = renderedTemplate;
document.body.insertBefore(box,document.body.childNodes[0]);
</script>
</body>
</html>
Avec les Id je peux l'adresse de modèles mais j'ai toujours besoin d'un script en ligne. 🙁
Comment est-ce de travailler avec des fichiers externes?
OriginalL'auteur Benny Neugebauer | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
Vous avez deux options pour charge externe des modèles:
Malheureusement, la documentation de pré-compilation Hogan.js modèles est inexistante. Si vous avez une copie de la Dépôt Github à l'intérieur de l'
bin
annuaire est un script qui s'appellehulk
qui fera le travail. Il nécessite nodejs avec quelques npm modules (c'est à direnopt
etmkdirp
) installé.Une fois que vous avez
nodejs
et ces modules installés, étant donné un modèle de fichier de Test.hogan:Vous pouvez pré-compiler le script à l'aide de la commande suivante:
Résultant dans le texte suivant:
Enregistrer ce pour un fichier appelé
templates.js
Maintenant dans votre page HTML, vous devez charger que
templates.js
fichier et il crée un objet global appelétemplates
où le modèle compilé fonction de la touche "Test". Vous pouvez également laisser lahogan.js
fichier puisque c'est le compilateur (et vos modèles sont maintenant en pré-compilé) et il suffit d'inclure lestemplate.js
fichier qui vient dans la distribution.Remarque: j'ai eu quelques problèmes à l'aide de l'actuel
master
branche du dépôt Github depuis, il a généré un modèle qui utilise un constructeur différent de celui utilisé dans la version 2.0.0 version du modèle. Si vous utilisezhulk
assurez-vous d'utiliser letemplate.js
fichier situé dans lelib
dossier.Alternativement, vous pouvez utiliser require.js et le texte de plugin. Les télécharger et les enregistrer sur votre
js
dossier. Ensuite, vous aurez besoin d'ajouter unrequire
instruction pour charger le modèle de texte:Juste une note de côté. Ce qui ne l' '!!!' dans le modèle compilé? Je n'arrive pas à trouver une explication de n'importe où.
dire que logique de ne pas. Avec un triple pas, falsy valeurs (0, false, "", null, indéfini et NaN) devient
true
et truthy valeurs (true, l'Objet, la Fonction, le Tableau, le Nombre de non-zéro, d'une Chaîne non vide) se transforme enfalse
. Ils sont juste vérifier si la variabletemplates
existe... Vous ne pouvez pas ajouter une propriété à un objet définiOriginalL'auteur Phuong LeCong
Il existe une autre méthode qui fonctionne très bien si vous n'êtes pas à l'aide d'un noeud, ni si vous voulez compter require.js
Vous pouvez simplement utiliser le jQuery $.get pour obtenir le chemin d'accès au fichier de modèle. Donc, un exemple ressemble à ceci:
Le modèle peut être simplement un .fichier html (je viens de l'utiliser .hogan) et tout le code html dans le template doit être enveloppé dans une balise script avec un id unique de sorte que vous pouvez obtenir l'id ici. Datum vient de('typeahead:selected') mais c'est hors de propos j'ai juste pensé que je devrais expliquer puisque c'est dans le code avec aucune autre référence.
OriginalL'auteur Alex
J'ai eu la même question et il a terminé avec une façon différente de faire les choses que Phuong, je pensais que je voudrais partager.
Côté serveur, j'ai compiler le modèle et l'enregistrer dans un fichier avec le script suivant :
Et côté client, je n' :
J'espère que cela aide !
OriginalL'auteur Louis Ameline