Question de débutant en Ajax

Question de débutant en Ajax - HTML/CSS - Programmation

Marsh Posté le 05-08-2010 à 09:16:29    

Bonjour tout le monde,  
 
Etant actuellement en stage, et ayant pour sujet le développement d'un système de gestion de plannings, j'utilise la technologie Ajax.  
J'ai donc une page principale, avec un menu contenant 4 liens, chacun vers un "module" différent qui permet d'afficher les plannings pour le premier, les utilisateurs pour le deuxième, etc.  
Le clic sur un des liens permet à la partie de droite de la page de disparaitre en fondu, de charger le module demandé (récupération du code avec Ajax), et de le faire apparaître aussi en fondu. Cette partie-là fonctionne très bien.  
Sauf que je suis maintenant confronté à un petit problème :
 
Chaque module utilisera lui aussi plusieurs appels Ajax. Dois-je donc importer obligatoirement TOUS les javascripts de TOUS les modules dès le départ, ou est-il possible par exemple lorsque je charge le module "plannings" d'importer le fichier plannings.js, de changer celui-ci lorsque je charge un autre module, etc ???
 
Je ne sais pas si c'est très clair mais je pense que votre aide va m'être précieuse ^^
 
 
Merci d'avance :p

Reply

Marsh Posté le 05-08-2010 à 09:16:29   

Reply

Marsh Posté le 05-08-2010 à 11:47:01    

Il est possible de charger du javascript dynamiquement, afin d'éviter de le faire dès le départ.
 
Je te conseillerais une librairie comme dojo ou jquery qui ont des fonctions prenant en paramètre un fichier js et qui le chargent en mémoire.

Reply

Marsh Posté le 05-08-2010 à 14:31:04    

La fonction load() de jQuery peut-elle servir à ça ?

Reply

Marsh Posté le 05-08-2010 à 16:28:06    

tony1232 a écrit :

La fonction load() de jQuery peut-elle servir à ça ?


http://api.jquery.com/load-event/  :??:  
Visiblement non.
 
Ca par contre ca y ressemble bien:
http://api.jquery.com/jQuery.getScript/


---------------
C'était vraiment très intéressant.
Reply

Marsh Posté le 05-08-2010 à 16:40:37    

Une balise script chargée en ajax et insérée dans la page entraînera le chargement du script, comme sur une page chargée normalement.

 

Mais je ne procéderai pas comme ça.

 

En gros, je chargerai tout dans la page principale, dans un certain ordre

 
Code :
  1. <html>
  2. <head>
  3. ...
  4. <!-- Les scripts super importants pour le fonctionnement immédiat de l'application, genre jquery.min.js -->
  5. <script />
  6. </head>
  7. <body>
  8. Le menu, la page par défaut, etc ...
  9. ...
  10. <!-- Les scripts à charger après, qui ne sont utilisés que dans les modules -->
  11. <script/>
  12. </body>
  13. </html>


Comme ça, à l'ouverture d'un module, les scripts nécessaires sont déjà chargés, mais ils ne ralentissent pas le chargement de la page principale

Message cité 1 fois
Message édité par Paulp le 05-08-2010 à 16:41:02
Reply

Marsh Posté le 05-08-2010 à 18:00:34    

Paulp a écrit :

Comme ça, à l'ouverture d'un module, les scripts nécessaires sont déjà chargés, mais ils ne ralentissent pas le chargement de la page principale


Effectivement, ca marchera. De toutes facons, si ses scripts ne sont pas trop lourds, autant tous les mettre directement dans le <head> et basta...
Cependant, trois remarques sur ta solution:
- si je ne m'abuse, c'est pas W3C-compliant, il me semble que seul <head> peut contenir des scripts, meme si en pratique la plupart des browsers les acceptent ailleurs,
- pour bosser sur une appli web très lourde en scripts, et utilisant une stratégie similaire, je peux te garantir que meme si elle est chargée, la page est beaucoup moins réactive tant que la totalité des scripts n'est pas chargée,
- la particularité du loading "dynamique" fait que tu ne chargeras les scripts que lorsque tu en auras besoin, donc si sur une "session" tu n'utilises pas toutes les fonctionnalités, tu as "sauvé" de la bande passante et/ou du temps de traitement. Bon OK, ca sera rarement conséquent, mais encore pour l'exemple, mon appli lourde sus-citée était inutilisable en l'état sur un smartphone (plusieurs minutes pour se charger!), alors que le chargement des scripts "on-demand" rend le tout utilisable (meme si tu as un peu de freeze / page très peu réactive lorsque tu actives une fonctionnalité pas encore chargée).
 
Enfin bref, pour le problème de tony1232, à mon avis il n'y a aucune contre-indication à mettre tous les scripts directement dans le <head>...


---------------
C'était vraiment très intéressant.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed