Salut,
matmat a écrit :
J'ai remarqué aussi qu'il y a une difference de réaction entre les deux méthodes, par exemple pour un menu horizontal dépliant qui est en haut de la page, dans un cas il vat réagir qu'a la fin du chargement de la page et dans l'autre cas (onmouseover="MaFonction()") avec un petit javascript inséré directement dans le header ça réagi directement ce qui fait une grande différence surtout si la page est lourde...
Il faut préciser que la réaction est identique au mouseover mais que c'est au chargement de la page que ça diffère (en utilisant window.onload)... Maintenant, il existe des méthodes de chargement rapide pour répondre à ce problème donc ce n'est plus un argument recevable...
http://www.thefutureoftheweb.com/blog/2006/6/adddomloadevent
a écrit :
Je crois que c'est toujours pareil, c'est en fonction de ce que tu veux faire, il ne faut pas être fanatique d'une méthode ou de l'autre
Te considères-tu comme fanatique lorsque tu sépares la présentation de la structure ?
Je pense que tu sais qu'il ne faut pas mélanger les deux et quels sont les avantages que ça comporte... Pour le comportement, c'est pareil et ce n'est pas le rôle du xhtml...
a écrit :
si par exemple tu as un appel, autant mettre un onmouseover dans la page
Non, ce n'est pas sémantique et ça monopolise l'événement mouseover sur l'élément lié... à éviter, même pour un unique gestionnaire d'événement.
a écrit :
si tu as 50 liens, c'est plus simple de séparer, des fois séparés ça te fait un script de 20 lignes et dans l'autre cas 3 lignes, bref moi je me prend pas la tête, j'utilise les deux celon les cas et mes connaissances.
Lorsque je vois le travail qui reste à faire, ne serait-ce que pour faire accepter la séparation présentation/structure, je me dis que pour JS, ce n'est pas gagné et que la route est encore longue pour faire changer les mentalités...
a écrit :
C'est aussi celon ta méthode de dévelopement, avec des inclures, ça simplifie la vie de mettre le js dans le module inclu (d'ailleur par exemple regarde le code source du journal lemonde tu vas voir tout est mélangé, je pense que c'est pour ça)
Ca ne fait qu'alourdir ton code xhtml, le rendre moins sémantique, moins accessible et ça peut nuire à la portabilité.
Un code JS placé dans un fichier externe est réutilisable sur toutes les pages.
Par ailleurs, une idée reçue consiste à croire qu'un code plus long est forcémment moins performant... Tout dépend de l'optimisation de ton code, principalement sur les boucles et les closures...
Par exemple, si je prend un code comme celui-ci :
var aVal = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
var iI = 0;
var iJ = 0;
for(iI; iI < aVal.length; iI++)
{
iJ += aVal[iI];
}
Je déclare un tableau aVal, puis une variable iI, une autre iJ et lors de ma boucle, aVal.length se répète 20 fois...
Si je change le code comme ceci :
var aVal = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], iI = 0, iJ = 0, count = aVal.length;
for( iI; iI < count; iI++)
{
iJ += aVal[iI];
}
Je diminue le temps d'éxécution car je déclare en une fois mon tableau, ma variable iI, ma variable iJ ainsi qu'une variable count définissant la longueur du tableau. La détermination de la longueur du tableau ne se fait alors plus qu'une seule fois au lieu de 20. Ce n'est pas négligeable...
En écrivant :
var aVal = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20], iI = 0, iJ = 0, count = aVal.length;
for( iI; iI < count; iI++)
{
iJ += aVal[iI++];
iJ += aVal[iI++];
iJ += aVal[iI++];
iJ += aVal[iI++];
iJ += aVal[iI++];
}
La variable iJ s'incrémente 5 fois suivi juste après par l'incrémentation de iI, le tout au sein de la boucle et celle-ci ne s'éxécute que 4 fois au lieu de 20. Le temps d'éxécution s'en retrouve de nouveau diminué.
Il existe pas mal d'autres choses...
voir les 5 liens cités ici entre autres :
http://del.icio.us/visualcomposer/optimization
En bref, on peut faire propre et réactif...
Modifié par koala64 (30 Nov 2006 - 00:33)