Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modularisation #14

Closed
YannisDelmas opened this issue Jan 2, 2022 · 1 comment · Fixed by #20
Closed

modularisation #14

YannisDelmas opened this issue Jan 2, 2022 · 1 comment · Fixed by #20
Assignees
Labels
debate enhancement New feature or request

Comments

@YannisDelmas
Copy link
Owner

Git ne gère pas bien les contenus concurrents occupant ce qui lui semble être un même emplacement. De plus, le format actuel ne permet aucune généricité dans les modèles. En particulier, il n'est pas possible d'intégrer de façon homogène et sûre l'en-tête et le pied de page, ni d'ajouter de système de navigation. L'objectif de cette issue est de repenser le modèle de publication du Beau code web afin de pouvoir se concentrer sur le contenu des recommandations.

Voici une proposition:

  • On produit les pages à l'aide d'un simple système de template. Je propose Twig, que vous connaissez probablement tous.
  • Les pages sont produites par PHP sous forme de fichiers HTML. À terme, on pourrait envisager de copier ces fichiers dans le dossier doc, qui serait le seul publié.
  • Il y a une page de modèle général, page.twig, un modèle de recommandation, recommandation.twig et un module PHP pour interpréter tout ça, page.php. Je ne suis pas sûr qu'il en faille plus.
  • Le modèle de page que j'ai créé va chercher tous les fichiers fournis dans une liste components. Celle-ci peut être construite à l'aide d'un filtre (glob) qui liste les noms de fichiers qui satisfont un motif donné. Comme les recommandations qui composent une page sont insérés dans l'ordre de leur nom de fichier, ça donne beaucoup de souplesse pour organiser (ou réorganiser) ceux-ci.

J'ai mis un exemple sur Azrael avec la page guide-html.php (code). Les composants chargés suivent le motif guide-html-*.twig. J'ai mis une recommandation de test guide-html-000-test.twig et la recommandation que nous avons déjà validée guide-html-010-validite.twig. Ceci m'a d'ailleurs permis de voir qu'on avait oublié son id.

@YannisDelmas YannisDelmas added enhancement New feature or request debate labels Jan 2, 2022
@YannisDelmas YannisDelmas self-assigned this Jan 2, 2022
@YannisDelmas YannisDelmas moved this from À faire to En cours in Recommandations du «Beau code web» Jan 25, 2022
@YannisDelmas
Copy link
Owner Author

Nouvelle tentative de modularisation pour tester à fond Grunt. Je suis, au bout du compte, assez content du résultat. Il recompile tout à chaque fois, mais c'est assez rapide et comme Git fait des diff pour savoir ce qu'il faut éventuellement mettre en commit, mes craintes d'avoir le bazar à la fin ne se sont pas avérées.

Grunt est basé sur Node.js et il a un plugin Twig (TwigJS précisément), qui fait bien le job qu'on lui demande.

Je viens de publier une nouvelle branche experimental/grunt qui permet de démontrer ce qu'on pourrait faire. La liste des tâches est en JS, Gruntfile.js. Je l'ai programmée pour copier tout le dossier assets ainsi que les fichiers HTML pas encore modularisés et pour utiliser tous les modèles Twig trouvés (hormis les composants et les partiels). Pour lancer la fabrication, il suffit de taper grunt en ligne de commande.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
debate enhancement New feature or request
Development

Successfully merging a pull request may close this issue.

1 participant