JeuWeb - Crée ton jeu par navigateur
Moteur de template - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Moteur de template (/showthread.php?tid=7322)

Pages : 1 2 3 4 5


Moteur de template - Max72 - 18-02-2015

Salut !

Pour mon framework, je suis en train de me créer un moteur de template maison, avec passage de variables, conditions , compilation, cache tout ça..

Si j'arrive à faire quelque chose de propre je pense le mettre sur Github mais, y'a t-il des gens qui seraient intéressés par un petit tuto sur ça ?
Rien d'extraordinaire hein, mais si ça peut intéresser quelqu'un.

En cherchant sur la toile je n'ai pas réussi à trouver de tuto qui permette réellement de faire ça (ou alors juste créer un moteur de template avec des <?php echo $mavar dedans..).

PS : Please, pas de troll sur "PHP est déjà un moteur de templates" hein, on en est plus là Wink


RE: Moteur de template - Prélude - 18-02-2015

Je suis intéressé.


RE: Moteur de template - Xenos - 18-02-2015

Cela ne m'intéressera pas, car XML+XSL+PHP est un trio performant et standard pour la création de templates.


RE: Moteur de template - Sephi-Chan - 18-02-2015

Mais pourquoi faire ?? :o


RE: Moteur de template - Max72 - 18-02-2015

@Prélude : Ca marche Wink

@Xenos : Fichtre, ça a l'air compliqué ton truc..

@Sephi : Le but n'est pas de révolutionner les moteurs de template, mais juste de montrer ce qu'il est possible de faire simplement.
Perso j'ai toujours utilisé des moteurs de TPL afin de séparer mon code PHP de l' HTML. Mais maintenant ces machines deviennent trop grosses, l'exemple avec Twig..

Réinventer la roue, oui, mais dans un but pédagogique.


RE: Moteur de template - Aedius - 18-02-2015

Pourquoi pas, mais quels avantages aurait ton système par rapport à smarty ou à twig ?
Qu'est ce qui te démarquera de la concurrence ?

Des solution built-in pour du jeu web ?


RE: Moteur de template - Xenos - 18-02-2015

XML/XSL, c'est pas compliqué: y'a pas de langage à apprend (XSL et xHTML, c'est du XML), et si on se contente de remplacer des <variable ref="..."/> par leur valeur ($...), cela requiert 3 lignes:


<xsl:template match="variable">
<xsl:value-of select="$values/value[@id=current()/@ref]"/>
</xsl:template>

Ca s'exécute dans à peu près tous les langages: PHP, java, C++, Javascript, Ruby... Et on peut même le transposer en Erlang, voire en tout autre langage fonctionnel.
C'est standardisé par le W3C, donc ca te lâchera pas du jour au lendemain.
C'est même fonctionnel sur IE6+, et de manière générale, sur tous les navigateurs web (FF, Wekbit, IE,...).
C'est reconnu par les IDE comme NetBeans, et il en existe même des dédiées, gratuits.
Dans la foulée, cela permet de comprendre XPath, très utile pour interroger tout document XML ou DOM, d'appréhender les langages fonctionnels, et de coller les pieds dans l'intérêt des langages déclaratifs: dire à la machine "Voilà ce que je veux" au lieu de "Voilà quoi faire".

C'est pile poil ce pour quoi XSL est conçu: changer un document XML (les données) en un autre (la page HTML).


RE: Moteur de template - Sephi-Chan - 18-02-2015

Pardon mais dire que XSLT n'est pas compliqué, c'est de la mauvaise foi. :p

Moi je ne vois pas trop l'intérêt de passer par du XML, encore moins pour le transformer du XML en HTML. Je préfère servir directement du HTML (j'utilise le moteur de template Haml dans Rails), et j'utilise JSON (généré via JBuilder dans Rails) pour mes APIs.


RE: Moteur de template - Xenos - 18-02-2015

Alors je dois avoir l'esprit bizarement tourné, car je l'ai trouvé simple à comprendre et à utiliser Smile
Le XML fait juste l'interface entre le langage interne du serveur (type PHP) et le langage du template (XSL). Automatiser sa génération n'est pas bien difficile.


RE: Moteur de template - Max72 - 18-02-2015

@Aedius : Objectivement, aucun. Si ce n'est de le concevoir comme je le souhaite, et d'y mettre uniquement ce que j'ai besoin.

Lorsque j'ai pris la décision de créer mon framework, je me suis dit que j'allais aller au strict nécessaire, implémenter ce dont j'ai besoin.
Donc introduire une usine pour parser des variables, c'est à peu près l'usage que j'en fait, c'est comme tirer au lance roquette sur un hamster.
Sinon je ne compte pas me démarquer : Je ne suis pas pro, j'ai un boulot IRL qui n'a strictement rien à voir avec l'informatique, je sais qu'il est irréel de penser que je puisse concurrencer les grands.
Enfin, des solutions pour jeux web. Je ne vois pas trop qu'est-ce qu'un moteur de templates pourrait gérer spécifiquement aux jeux. As-tu des idées en tête ?

@Xenos : J'y ai jeté un oeil.. C'est censé simplifier la mise en place des vues ?
Encore un standard qui est plus lourd à gérer que ce que l'on connait, pas forcément intuitif..

Code XML chopé sur OC :
Code :
<?xml version="1.0" encoding="utf-8"?>

<test>
   <jeu id="1">
       <nom>Guild Wars</nom>
       <type>Jeu de rôle en ligne</type>
       <prix>Environ 20 € l'épisode</prix>
   </jeu>
   <jeu id="2">
       <nom>Super Mario Galaxy</nom>
       <type>Jeu de plate-forme</type>
       <prix>30-50 €</prix>
   </jeu>
   <jeu id="3">
       <nom>Mario Sokoban</nom>
       <type>Jeu de réflexion</type>
       <prix>Gratuit</prix>
   </jeu>
</test>

Code XSL associé :
Code :
<xsl:for-each select="test/jeu">

   <tr>
     <td><xsl:value-of select="@id"/></td>
     <td><xsl:value-of select="nom"/></td>
     <td><xsl:value-of select="type"/></td>
     <td><xsl:value-of select="prix"/></td>
   </tr>

J'imagine très bien que tu ne passes pas toutes tes variables vers XML ou que tu écrives le tout à la main, mais ça fait lourd pour pas grand chose.
Avec un moteur de template, tu passes ton objet ou tableau au moteur en une ligne, et tu génères le code ci-dessus en html en 5 lignes.
Ou alors je n'ai pas tout saisi, au temps pour moi dans ce cas.

@Sephi : Je n'ai pas été assez loin dans Ruby pour connaitre cette librairie. Par contre j'essaye de me rapprocher de la syntaxe de celui de Django (Python), que je trouve très intuitif.