Séparation présentation / contenu / comportement

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

09 août 2005, 15:10

À partir du classique code pour ouvrir des popup en se basant sur la classe d'un lien, j'ai fait un "parseur" qui permet de déclarer les comportements comme on déclare les styles en CSS.

Exemple : http://naholyr.free.fr/events/test.html
(gaffe, le lien rouge ouvre une popup au passage de la souris)

Le principe est le suivant :
- On écrit sa page (le contenu), avec uniquement la structure sémantique :arrow: http://naholyr.free.fr/events/test.html
- On y ajoute un style (présentation) avec une feuille CSS :arrow: http://naholyr.free.fr/events/events.css
- On y ajoute les comportements en incluant :
- - Un script implémentant les fonctions (définitions des comportements), et les attachant à l'aide d'une chaine de caractères. :arrow: http://naholyr.free.fr/events/setevents.js *
- - La librairie qui se charge d'appliquer tout ça. :arrow: http://naholyr.free.fr/events/events.js

Pas envie de donner plus d'explications sur le moment, ze veux zuste des critiques pour l'instant :)
( et pitié dites-moi que pour une fois j'ai pas inventé un truc qui existe déjà )

* La syntaxe de la déclaration des comportements est sensiblement la même que pour les CSS :
[TAG][.CLASS ou #ID]:EVENEMENT { FONCTION1; FONCTION2; ... }
Et ce pour chaque comportement à déclarer.
EVENEMENT peut être click, mouseover, mouseout, blur, focus, etc... (le nom de l'evenement javascript sans le "on" devant).

Le point intéressant de ça c'est qu'avec XmlHttpRequest on peut externaliser la déclaration des comportements dans un fichier, ou avec innerHTML la mettre dans un tag invisible, etc...

ViPHP
ViPHP | 1024 Messages

09 août 2005, 15:34

ça péte! :pouce:

je ne savais pas, je n'imaginais même pas ce genre de chose possible, et c'est intéressant :)

sinon un concept à creuser peut être, la programmation orientée aspect:
http://stormftp.free.fr/doku.php

en gros on garde nos classes, mais on ne les imbrique pas à la main, mais via un "tisseur" qui génére le code en fonction d'un XML créé pour l'occasion. j'ai pensé à ça suite à ta remarque sur PEAR et les dépendances énormes entre paquets.

A+

Pascal

PS: je bosse aussi avec XHR, mon site va cartonner ;)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

09 août 2005, 15:36

j'ai rien compris

je retourne bosser

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

09 août 2005, 16:08

sinon un concept à creuser peut être, la programmation orientée aspect:
http://stormftp.free.fr/doku.php
J'avais déjà lu ça, j'accroche bien, mais j'ai peur que ce soit vraiment trop lourd pour être applicable à un site web (où le critère est : tenir la montée en charge). Je vois ça un peu comme les triggers des bases de données, j'ai bon ? :lol:

ViPHP
ViPHP | 1024 Messages

09 août 2005, 16:15

je n'ai pas d'avis précis sur la question, car je n'utilise pas de classes hyper-dépendantes d'autres classes ni l'héritage.

le problème soulevé me fait penser aux limites du SQL:
je modifie la structure de la DB => je dois modifier un bout de code qui utilise la DB ailleurs

la question est: comment limiter les dépendances?

sinon que vas tu faire de ton script? vois tu des applications concrètes (dans un jeu par exemple) ?

A+

Pascal

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 août 2005, 08:30

j'ai rien compris

je retourne bosser
+1

C'est quoi la finalité? Pouvoir simuler les onclick="" et onmouseover="" avec du CSS?

C'est interressant d'un point de vue programmation mais je vois pas trop ce que ça apporte de plus à la page en fait... :?
Quand tout le reste a échoué, lisez le mode d'emploi...

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

10 août 2005, 11:20

j'ai rien compris

je retourne bosser
bah j'ai compris à 15 % => je te suis
"... demanda à voir le CV du recruteur pour être sûr que le chef du personnel était compétent".

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

10 août 2005, 11:44

j'ai rien compris

je retourne bosser
+1

C'est quoi la finalité? Pouvoir simuler les onclick="" et onmouseover="" avec du CSS?

C'est interressant d'un point de vue programmation mais je vois pas trop ce que ça apporte de plus à la page en fait... :?
Dans XHTML 1.1, les attributs onclick, onmouseover, etc... sont déconseillés (sinon interdits, mais je ne veux pas m'avancer) et l'attribut target est interdit depuis XHTML 1.0 strict.

Ce qui a amené à développer ce genre de ruses pour autoriser l'ouverture de nouvelles pages sans :
- mettre de javascript dans chaque lien (ingérable)
- utiliser target (et rendre son code invalide)

ça a amené à des reflexions sur la séparation non plus seulement du contenu et de la présentation, mais également du comportement.

Le fait qu'un lien s'ouvre dans une nouvelle fenêtre n'a rien à voir avec la sémantique de la page, et n'a donc rien à faire en plein milieu du code HTML. Si c'est quelque chose d'acquis pour la présentation et les CSS, ça reste encore à marteler dans les esprits pour les comportements et le Javascript.

Rah la la vous qui me faites la morale quand je descends l'intérêt des standards, vous n'eêtes pas au fait de ces préoccupations ? Je suis déçu :langue:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

10 août 2005, 11:49

Dans XHTML 1.1, les attributs onclick, onmouseover, etc... sont déconseillés (sinon interdits, mais je ne veux pas m'avancer) et l'attribut target est interdit depuis XHTML 1.0 strict.
Il faut adapter sa DTD à ce qu'on veut faire aussi :)

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

10 août 2005, 11:54

Je n'ai hélas pas trop le temps d'étudier cela à fond en ce moment,
mais cela me paraît loin d'être dénué d'intérêt.

À regarder en détail asap... ;)

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

10 août 2005, 13:24

Dans XHTML 1.1, les attributs onclick, onmouseover, etc... sont déconseillés (sinon interdits, mais je ne veux pas m'avancer) et l'attribut target est interdit depuis XHTML 1.0 strict.
Il faut adapter sa DTD à ce qu'on veut faire aussi :)
Ce n'est qu'une illustration parmi d'autres. Un autre exemple : le menu déroulant. On peut en réaliser des pas mal en pur CSS, mais tot ou tard si on veut faire quelque chose de vraiment dynamique, il faut y mettre du Javascript. La page devient du coup caduque : on ajoute dans le HTML (qui constitue la sémantique de la page) une notion de comportement, qui n'a rien à voir. On externalise donc les comportements, tout en gardant le même code HTML, on ajoute simplement une BS (Behavior Sheet) ;)

C'est le principe général qu'il faut voir, plus que l'illustration des popup (qui est peut-être la plus mauvaise pour illustrer le principe, mais la plus évidente pour illustrer la technique)

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

11 août 2005, 10:59

J'ai complété la "chose", pour permettre l'utilisation de "feuilles de comportements". En résumé dans la page on a :
- un lien vers la feuille de style
- un lien vers la feuille de évènements
- un script JS qui définit les comportements (fonctions)
- et la partie qui dans un monde idéal n'aurait pas de sens : la librairie pour lier le tout

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

11 août 2005, 11:03

- un lien vers la feuille de évènements
- un script JS qui définit les comportements (fonctions)
Heu....tu as externalisé le js ? c'est tout ?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

11 août 2005, 11:07

ça ressemble à du javascript la feuille .bs ?

Mammouth du PHP | 19672 Messages

11 août 2005, 11:07

ça a amené à des reflexions sur la séparation non plus seulement du contenu et de la présentation, mais également du comportement.
En fait ça, c'Est carrément le modèle MVC des frameworks ;) C'est à mon sens l'avenir de la programmation structurée et intelligente...

J'ai pas bien capté comment fonctionne ton truc avec le JavaScript sans les attributs correspondant, mais je vais regarder ça dès que je trouve 30 secondes pour le faire, c'est intéressant.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: