Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1404 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Loader de méthodes/classes Javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Loader de méthodes/classes Javascript

n°1564845
4bis
Posté le 24-05-2007 à 19:57:03  profilanswer
 

Bonjour à tous,
 
Je suis en ce moment dans une boite qui utilises pour un portail essentiellement du javascript. Pour des problèmes de performance, et à cause de l'utilisation de plusieurs frames, ils doivent charger toutes les classes javascript utilisées dès l'ouverture du portail (cela prend déjà environ 20secondes).  
 
Comme vous l'avez compris, niveau perf, c'est pas terrible, surtout que dans les classes, toutes les méthodes ne sont pas forcément utilisées. J'aimerais donc savoir s'il y a moyen d'accelerer le processus (par exemple ne charger que les méthodes utilisées), avec bien sur un souci de ne pas multiplier les classes (car certaines méthodes sont génériques à plusieurs portails).  
 
 
Si vous avez des idées, je suis preneur :jap:

mood
Publicité
Posté le 24-05-2007 à 19:57:03  profilanswer
 

n°1564941
jagstang
Pa Capona ಠ_ಠ
Posté le 24-05-2007 à 23:19:46  profilanswer
 

url ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1564959
Shinuza
This is unexecpected
Posté le 25-05-2007 à 03:48:01  profilanswer
 

Ca m'a lair un peu con comme process. C'est l'interêt des lib modulables. Tu vas pas par exemple t'amuser à charger scriptculous en entier quand tu te sert juste de deux pauvres effets.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1564988
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-05-2007 à 09:31:41  profilanswer
 

la seule façon de "loader dynamiquement" du js dans un page c'est:

Code :
  1. document.write("<script type='text/javascript' src='pouet.js'></script>" );
 

shinuza> c'est pas "forcément" con... Admettons que sur la page d'accueil il y ait 2 effets qui servent 95% du temps, et 30 autres qui servent 5% du temps. ça sert à rien de loader tout ça à chaque fois [:spamafote]

Message cité 1 fois
Message édité par anapajari le 25-05-2007 à 09:31:52
n°1565151
Shinuza
This is unexecpected
Posté le 25-05-2007 à 14:03:42  profilanswer
 

Oui, c'est ce que je disais :)


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1565158
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-05-2007 à 14:12:37  profilanswer
 

aaaaah j'avais mal compris sorry [:jap]

n°1565436
4bis
Posté le 25-05-2007 à 19:38:58  profilanswer
 


 
Pas d'url, ce sont les portails d'une entreprise ;)
 
Et s'ils sont chargés tous au début, c'est effectivement pour ne pas charger les scripts js à longueur de journée, dès qu'on ouvre les même pages.  
 
 
 
Shinuza >> lorsque tu parles de lib modulables, c'est quoi exactement ? Car en fait, ce que je voudrais trouver, c'est de faire une opération pour ne charger que les méthodes utilisées, et non toutes les méthodes d'une classe. Ou alors, pouvoir charger tous les scripts mais beaucoup plus rapidement. Car la c'est très long au début.

n°1565438
jagstang
Pa Capona ಠ_ಠ
Posté le 25-05-2007 à 19:46:43  profilanswer
 

tant pis [:jagstang]

 

edit : 20 secondes j'aimerais bien voir ça


Message édité par jagstang le 25-05-2007 à 19:47:00

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°1565443
gizmo
Posté le 25-05-2007 à 20:06:32  profilanswer
 

anapajari a écrit :

la seule façon de "loader dynamiquement" du js dans un page c'est:

Code :
  1. document.write("<script type='text/javascript' src='pouet.js'></script>" );




 
Euh... non, pas vraiment :sweat:

n°1565449
Shinuza
This is unexecpected
Posté le 25-05-2007 à 20:29:19  profilanswer
 

4bis a écrit :

Pas d'url, ce sont les portails d'une entreprise ;)
 
Et s'ils sont chargés tous au début, c'est effectivement pour ne pas charger les scripts js à longueur de journée, dès qu'on ouvre les même pages.  
 
 
 
Shinuza >> lorsque tu parles de lib modulables, c'est quoi exactement ? Car en fait, ce que je voudrais trouver, c'est de faire une opération pour ne charger que les méthodes utilisées, et non toutes les méthodes d'une classe. Ou alors, pouvoir charger tous les scripts mais beaucoup plus rapidement. Car la c'est très long au début.


 
Perso j'utilise un truc comme ça :
 

Code :
  1. Element.Utils = {
  2.   hide : function(){
  3.    this.setStyle('display','none');
  4.   },
  5.   show : function(){
  6.    this.setStyle('display','');
  7.   },
  8.   toggle : function() {
  9.    this.style.display = (this.getStyle('display') != 'none') ? this.setStyle('display','none') : this.setStyle('display','');
  10.   }
  11.  }
  12.  Object.extend(Montruc,Element.Utils);


 
Du coup je peux regrouper toutes mes méthodes privées dans des objets, et j'étant un gros objets à la volée, le but étant de regrouper les méthodes similaires dans un seul objet avec un nom explicite. Du coup je sais ce qui va me servrir et ce qui sera inutile, je peux choisir les méthodes/fichiers que je veux inclure, donc je vais pas accrocher des méthodes inutile sur mon objet.
 
Autrement à part des fichiers séparés je vois pas comment tu peux cibler des méthodes.
 

gizmo a écrit :

Euh... non, pas vraiment :sweat:


 
J'aimerais bien voir un contre exemple [:moule_bite]
 


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
mood
Publicité
Posté le 25-05-2007 à 20:29:19  profilanswer
 

n°1565457
gizmo
Posté le 25-05-2007 à 21:45:21  profilanswer
 

Tu appeles ton JS via XHR et tu fais un eval dessus.

n°1565462
Shinuza
This is unexecpected
Posté le 25-05-2007 à 22:12:30  profilanswer
 

gizmo a écrit :

Tu appeles ton JS via XHR et tu fais un eval dessus.


http://www.acc.umu.se/~zqad/cats/1166518423-PXQMK3AWZUFPVQIVPG7HORSMICMGISVZ.jpg

 

Je vais juste te permettre de te culturer un peu, eval accède directement à l'interpreteur, y'a rien de plus mauvais dans un soft.
Donc tes techniques moisies, tu te les garde merci.


Message édité par Shinuza le 25-05-2007 à 22:13:43

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1565466
gizmo
Posté le 25-05-2007 à 22:20:51  profilanswer
 

Est-ce que le fait que le JS venait du même site et fonctionnait avant d'avoir été séparé pour diminuer le chargement de la page t'es venu à l'idée avant de poster ta connerie ou pas?
 
Je sais très bien que le eval est a utiliser avec beacoup de parcimonie, mais dans ce cas-ci, c'est justement l'une des rares utilisation qui en vaut la peine, avec le JSON (une fois les evenutelles fonctions retirée au besoin)

n°1565473
Shinuza
This is unexecpected
Posté le 25-05-2007 à 22:34:41  profilanswer
 

Et ca change quoi au fait que "eval is evil"? Cites moi un seul language ou eval n'est pas déprécié? [:doc petrus]
La technique d'anaj est très correcte et permet de faire la même chose sans eval et sans XHR, donc la connerie émane plutot de ton post [:moule_bite]

Message cité 1 fois
Message édité par Shinuza le 25-05-2007 à 22:35:41

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1565477
gizmo
Posté le 25-05-2007 à 22:42:51  profilanswer
 

Shinuza a écrit :

Et ca change quoi au fait que "eval is evil"?


C'est bien, t'as bien appris ton catéchisme. Maintenant tu allumes ton cerveau et tu relis ce que j'ai écrit.

Shinuza a écrit :

Cites moi un seul language ou eval n'est pas déprécié? [:doc petrus]


Perl? (c'est le premier qui m'est venu à l'esprit :o ) Et il y en a d'autre. C'est pas parce qu'une fonction permet tous les excès qu'il ne faut pas l'utiliser si c'est en connaissance de cause et dans un cadre bie défini.

Shinuza a écrit :

La technique d'anaj est très correcte et permet de faire la même chose sans eval et sans XHR, donc la connerie émane plutot de ton post [:moule_bite]


C'est sur que le document.write est applaudi par tous les gens qui prèche le "eval is evil" [:mlc]

Message cité 1 fois
Message édité par gizmo le 25-05-2007 à 22:43:16
n°1565488
Shinuza
This is unexecpected
Posté le 25-05-2007 à 23:18:17  profilanswer
 

gizmo a écrit :

Perl? (c'est le premier qui m'est venu à l'esprit :o ) Et il y en a d'autre. C'est pas parce qu'une fonction permet tous les excès qu'il ne faut pas l'utiliser si c'est en connaissance de cause et dans un cadre bie défini.


La fonction eval en perl est directement assimilée au language, elle sert même pour gérer les exceptions  [:sinclaire]  

gizmo a écrit :

C'est sur que le document.write est applaudi par tous les gens qui prèche le "eval is evil" [:mlc]


Document write écrit dans le node parent de l'élement appelant. Big deal.
Je connais pas beaucoup de lib qui utilise ta "technique" pour moduler  [:pingouino]  


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1565491
gizmo
Posté le 25-05-2007 à 23:24:43  profilanswer
 

Bon, puisque visiblement ca fait pas tilt dans le grand espace vide qui te sert de boite cranienne, on va essayer autrement...
 
Tu fais ton document.write(), et en backend, il se passe quoi de plus qu'un chargement plus eval? RIEN, NIXT, NADA, QUEDAL!!! T'as pas un poil de pet de vérification en plus, par contre comme side effect, tu modifies ton DOM.
 
A côté, avec ma technique, je peux:
* Executer un effet visuel en attendant que le téléchargement/évaluation soit terminé. Pour le ressenti de l'utilisateur c'est important
* Vérifier que le serveur ne m'a pas envoyer chier, et le cas échant, choisir de désactiver les fonctions dépendantes du module, prévenir l'utilisateur, voire retenter le chargement ultérieurment
 
 
Et pour conclure, une des extensions de jQuery permet de faire cela.


Message édité par gizmo le 25-05-2007 à 23:24:58
n°1565500
Shinuza
This is unexecpected
Posté le 25-05-2007 à 23:54:15  profilanswer
 

-Ton premier point est accessible quelque soit la technique employée.
-Pareil pour le deuxième point et la desactivation des fonctions associées, aussi, j'aime bien ta conception du web, c'est genre la loterie pour accèder à un fichier [:petrus dei]

 

Sinon, je pense que ana parlais de technique "propre", lorsqu'il à dit "la seule"


Message édité par Shinuza le 25-05-2007 à 23:54:42

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1565502
gizmo
Posté le 26-05-2007 à 00:00:49  profilanswer
 

Bon laisse tomber, t'as raison, le web, c'est super, y a jamais de hit miss, y a jamais de serveur surchargé, etc... Et c'est tellement plus pratique de faire un document.write et puis de devoir jouer a coup de timeout parce que le telechargement est fait dans un autre thread. [:kiki]

n°1565505
Shinuza
This is unexecpected
Posté le 26-05-2007 à 00:07:47  profilanswer
 

Exactement la technique à laquelle je pensais [:bien] [:moule_bite]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1565509
Shinuza
This is unexecpected
Posté le 26-05-2007 à 00:19:17  profilanswer
 

J'oubliais, on utilise juste document.write() car safari 2.0 se pète la gueule si on passe par le dom pour inserer un script.


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Loader de méthodes/classes Javascript

 

Sujets relatifs
Appeler un servlet depuis javascriptAppeller un programme en html/javascript
Récupérer les classes d'un package nommésql loader
executer une simple requete sql avec javascript[JavaScript] Copier du texte dans le presse papier avec Firefox
probleme javascript[RESOLU] chaine caractère en parametre de fonction / Javascript
[PHP] Imbrication de méthodes dans une class 
Plus de sujets relatifs à : Loader de méthodes/classes Javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR