ModeliXe, la solution template !

Présentation

pyModeliXe est un outil qui va vous permettre de simplifier considérablement votre travail de développement et d'intégration.
Il représente une interface logicielle entre le traitement de l'information et sa présentation à l'usager final. Il fait partie d'une famille de logiciels en plein développement actuellement, qu'on intitule les moteurs de templates.

Pourquoi les templates ?

Aujourd'hui deux des enjeux stratégiques majeurs dans le monde du développement web sont :

  • la capacité à recycler le code et l'expérience capitalisés par l'entreprise.
  • la capacité à intervenir rapidement sur la présentation de l'information, pour l'adapter aux nouvelles normes du marché (tant visuelles que technologiques), ou réagir aux nouveaux besoins d'un client, notamment dans le cas de l'intégration de nouveaux formats de données.
Les moteurs de templates se situent exactement dans ces deux champs d'actions, et se proposent de réaliser une interface souple et adaptable entre l'information et son traitement, et sa présentation. Le choix du langage de développement de ce moteur en particulier, c'est fait sur des critères de performances (gestion des chaînes et des expressions régulières, rapidité d'exécution), d'environnements (importance du développement des serveurs Apache et de PHP), et de philosophie (richesse et dynamisme du monde OpenSource).

Par ailleurs écrit dans un langage de script facilement accessible et très couramment employé sur le web, celà permet à n'importe qui d'y apporter facilement des modifications, et surtout de le mettre en place de manière rapide et simple.

Définition d'un moteur de template

Un moteur de template est un programme qui va intégrer les données générés par un applicatif (votre script PHP habituel en l'occurrence), et l'intégrer dans un " modèle " (le template) ; sans que votre programme ait à s'intégrer dans le modèle.

Concrétement on va donc disposer de deux fichiers, l'un contenant l'applicatif au sens strict (la gestion de l'information) sans aucune lignes de HTML, l'autre contenant le modèle, le format, sous lequel cette information devra être présenté. C'est le moteur de template qui se chargera de réaliser le mixage.

Cette séparation du fond et de la forme a des intérêts immédiats :

  • On peut facilement modifier des aspects non fonctionnels, tant sur le fond et la forme, sans que cela engage des travaux d'adaptations en profondeurs.
  • On peut très facilement réadapter un applicatif particulier (un forum par exemple), et l'intégrer au sein d'un autre projet, il suffira de modifier l'aspect du modèle qui lui est associé pour l'intégrer dans la charte graphique du nouveau projet.
  • Une personne peut travailler sur le fond, sans que cela gêne la personne qui travaille sur la forme.
  • On peut très bien envisager de proposer deux formes différentes à partir de la même gestion du fond, selon le format demandé par l'utilisateur final.

Les spécificités de pyModeliXe

pyModeliXe se distingue de ses cousins par quelques spécificités et une orientation particulière.
Partant du principe que la première raison d'être d'un moteur de template était de simplifier le travail du développeur, je suis parti de la définition fonctionnelle de l'interface qu'elle devait proposé, avant de réfléchir sur le moteur en lui même.

De ce fait vous disposez de nombreuses méthodes, très simples d'utilisation, qui vous permettent d'automatiser la gestion de certains éléments HTML complexes.
Considérant également que ce moteur devait être souple et extensible, il intègre également deux méthodes de gestion de "plug-ins", qui vous permettent d'ajouter très simplement la gestion de nouvelles fonctionnalités (traduction par exemple).
Dans l'objectif de s'ouvrir à tout types de formats pour permettre la génération par le même applicatif de plusieurs types de documents, le balisage des templates pyModeliXe est normalisé XML.
La gestion des boucles a été pensé de manière à alléger le balisage au sein du template en lui même, et de rendre le développement de l'applicatif le plus simple et le plus lisible possible.
Enfin, un module de cache a été adjoint à pyModeliXe pour optimiser la charge du serveur en fonction du taux de rafraichissement des informations dynamiques composants la page.

Le résultat final est un moteur de template, simple, intuitif, facile et rapide à mettre en œuvre, extensible, qui s'adresse à des personnes désireuses d'optimiser leur temps de développements sur des projets. D'autres moteurs présentent d'autres spécificités, avec d'autres avantages, je vous invite à les découvrir pour juger de celui qui correspondra le mieux à vos besoins (je pense notamment à FastTemplate, pour une liste à peu près exhaustive, voir ici). Ils ont chacun une logique, un fonctionnement, des objectifs et une philosophie différente ... à vous de choisir celui qui vous va le mieux.

Le balisage de pyModeliXe

Le balisage de pyModeliXe est hérité des recommandation du W3C concernant la norme XML.

Toutes les balises de pyModeliXe à l'exception des balises de bloc, sont des balises orphelines et doivent donc être fermées par un /, les balises de blocs comprenant une balise ouvrante et une balise fermante. Toutes les balises pyModeliXe possédent au moins deux attributs, un attribut de référence et un attribut d'id. L'ordre d'apparition de ces attributs au sein de la balise doit être respecté, bien que cela ne soit pas défini dans les recommandations du W3C. L'attribut de référence est optionnel, on en étudiera sa signification dans la partie technique de ce document.

pyModeliXe posséde aussi un "balisage d'attributs", qui va permettre l'attribution dynamique d'attributs au sein de balise HTML pré-existantes. Ce balisage un peu particulier est normé, il se présente comme un attribut supplémentaire de n'importe quelle balise HTML. Son nom est mXattribut, et sa valeur contient la référence à l'attribut HTML qu'il affecte ainsi que l'id d'affectation de la valeur de cet attribut pour pyModeliXe. On verra son emploi plus tard.

Depuis la version béta 4.0, le balisage de pyModeliXe peut prendre deux formes différentes, soit normalisé XML, soit proche de ce que recommande le groupe de travail PEAR, c'est à dire ressemblant au balisage des autres moteurs de templates. Veuillez lire la section correspondante de la documentation pour plus de détails. Le balisage par défaut étant le balisage XML, la plupart des exemples traités sur ce site respecteront ce balisage.

pyModeliXe - Moteur de template en Python - © Jonathan TREMESAYGUES 2008 - Exploitation sous les conditions de la licence GNU LGPL
Cette page a été générée par HomeMadeTemplate
Ce site (contenu et design) a été honteusement pompé sur http://modelixe.sf.net