Comment écrire dustjs en code php sans nodejs

Courant j’ai fait les dustjs en javascript client comme ci-dessous

      $(document).ready(function(){ // JSON response from server var json_object = { "profile_skill": "Profile Skill", "skills": [ { "name": "JavaScript" }, { "name": "Ruby" }, { "name": "Java" } ] } // render method dustRender = function(){ // Get the dust html template to dust comstack var dust_tag = $('#page').html() ; var comstackd = dust.comstack(dust_tag, "tmp_skill"); //load templates dust.loadSource(comstackd); //Renders the named template and calls callback on completion. context may be a plain object or an instance of dust.Context. dust.render("tmp_skill", json_object, function(err, html_out) { //HTML output $('#page').html(html_out); console.log(html_out); }); }(); });    

Dust templates in the browser

{profile_skill}
    {#skills}
  • {name}
  • {/skills}

Mais dans ma source de vue de page, je peux voir le code ci-dessus au lieu de la sortie de balise HTML. Et aussi je veux savoir comment intégrer dustjs dans le code php.

Comme Torsten Walter l’a mentionné, vous ne pouvez pas voir la source HTML dans votre page, si vous comstackz / restaurez-vous dans le navigateur. Si vous effectuez la compilation et le rendu côté serveur, la source HTML contiendra le code HTML final. Pour ce faire, vous pouvez utiliser le serveur nodejs ou Rhino comme indiqué dans le blog Linkedin: http://engineering.linkedin.com/frontend/leaving-jsps-dust-moving-linked-d-dustjs-client-side-templates

Cela pourrait vous aider à comstackr les modèles de poussière en utilisant PHP,

https://github.com/saravmajestic/myphp/tree/master/dustcomstackr

Cet utilitaire sert uniquement à comstackr les modèles de poussière avant le rendu dans la page, ce qui évitera le temps de compilation de votre navigateur. Vous pouvez charger les modèles compilés sous forme de fichier JS dans votre page, ce qui peut être agrandi / agrégé avec d’autres fichiers / modèles JS.

J’espère que cela t’aides!!!

Ne mettez pas simplement votre modèle dans le php. Faites-le correctement et définissez le modèle en tant que chaîne ou fichier HTML séparé.

 var templateName = "myTemplate"; var model = { "profile_skill": "Profile Skill", "skills": [ { "name": "JavaScript" }, { "name": "Ruby" }, { "name": "Java" } ] }; dust.onLoad = function(templateName, callback) { // this will load a template with [name].html in the folder templates // callback is an internal dust.js function $.get(["templates/", ".html"].join(templateName), function(data) { callback(undefined, data); }, "html"); }; // dust just takes the template name as first parameter // if no template of this name is defined it will attempt to load // and comstack it if needed // override dust's onLoad function to implement your loading dust.render(templateName, model, function(err, out){ $('#page').html(out); }); 

Dans mon template.html

 {profile_skill} 
    {#skills}
  • {name}
  • {/skills}

Bien entendu, le fait de comstackr vos modèles accélère toujours la livraison et le rendu. Cependant, puisque vous livrez le modèle avec le rest de votre page, appeler loadSource et comstack n’est tout simplement pas nécessaire. Au lieu de cela, la poussière essaiera de charger un modèle tout seul si vous lui dites de le faire.

De la documentation:

Chargement

(…)

Par défaut, Dust renvoie une erreur “template not found” lorsqu’un modèle nommé ne peut pas être localisé dans le cache. Remplacez onLoad pour spécifier un mécanisme de chargement de secours (par exemple, pour charger des modèles à partir du système de fichiers ou d’une firebase database).

En interne, dust appellera les méthodes loadSource et comstack lui-même le cas échéant. Dans mon exemple ci-dessus, j’ai inclus une solution possible pour remplacer dust.onLoad . Bien sûr, vous pouvez aussi simplement y retourner le contenu HTML d’un nœud DOM.

 dust.onLoad = function(templateName, callback) { callback(undefined, $("skill template").hmtml()); } 

Et pour répondre à votre dernière question:

Et aussi je veux savoir comment intégrer dustjs dans le code php.

Tu ne peux pas. Sauf si vous envoyez le modèle au client pour qu’il y rende ou si vous avez un interpréteur JavaScript sur votre backend pour rendre les modèles que vous ne pouvez pas utiliser.