IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Plusieurs instances de plugin


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut Plusieurs instances de plugin
    Bonjour à tous

    Ceci est mon tout premier message sur ce forum.

    J'ai codé mon premier plugin jQuery, plutôt basique, qui sert à afficher une galerie d'images.

    Ce petit plugin est installé sur un site dont les articles sont chargés dynamiquement par Ajax avec la fonction "load()" de jQuery.

    Lorsqu'un article dispose d'une galerie, le plugin est utilisé sur la balise "div" contenant les images afin de pouvoir les afficher.

    Or, lorsque j'affiche deux articles, ou plus, contenant une galerie d'images, le plugin se charge intégralement pour chaque article et cela ralenti considérablement sont fonctionnement.

    J'imagine qu'il faudrait "libérer" de la mémoire l'instance du plugin précédent avant de charger le suivant, mais je ne sais pas faire, malgré de nombreuses recherches sur le net, je n'ai pas trouvé de solution simple applicable dans mon cas de figure.

    Si vous avez une idée de la technique à utiliser, je serai évidemment preneur.

    Merci à tous pour vos lumières

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Bon, visiblement ma demande d'aide n'inspire pas grand monde, peut-être parce qu'elle n'est pas assez claire ? ... il manquerait des infos ? ... un bout de code ?

    Dites-moi Svp si vous avez besoin de précisions car il m'est difficile de savoir ce qu'il vous faudrait pour me donner un petit coup de pouce.

    En gros je fais ceci lorsque je charge et affiche un article :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#mon_article_N').monPlugin();
    La lettre "N" à la fin du sélecteur étant le numéro de l'article.

    Puis, lors de l'affichage d'un nouvel article c'est toujours le même code mais avec le sélecteur correspondant au numéro de l'article :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#mon_article_N').monPlugin();
    En somme, si j'ai bien compris, à chaque appel du plugin un nouveau code est ajouté sans que le précédent, qui n'est plus nécessaire, soit effacé, du coup, cela cause un ralentissement de l'affichage... qui peut devenir gênant sur des galeries importantes.

    Bref, existe-t-il une technique pour supprimer ou inhiber l'instance précédente du plugin afin que la suivante fonctionne sans ralentissement ?

    J'espère que c'est un peu plus clair... n'hésitez pas à me dire si vous avez besoins de plus de précisions...

    Merci pour votre aide

  3. #3
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Plus clair ? Pas vraiment !

    Si votre plugin mobilise beaucoup de ressources, il doit disposer d'une méthode "destroy" pour les libérer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $( '#mon_article_3' ).monPlugin( "destroy" );
    $( '#mon_article_3' ) = null;
     
    $( '#mon_article_4' ).monPlugin( )
    Mais un plugin bien conçu doit aussi supporter l'existence de plusieurs instances concomitantes.

    Bref, il faut revoir l'écriture de votre plugin.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Bonjour, merci pour votre réponse

    Citation Envoyé par danielhagnoul Voir le message
    Bonsoir
    Si votre plugin mobilise beaucoup de ressources, il doit disposer d'une méthode "destroy" pour les libérer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $( '#mon_article_3' ).monPlugin( "destroy" );
    Oui, j'ai vu lors de mes recherches que certains plugins possédaient une telle méthode mais, à vrai dire, j'avais trouvé ça un peu compliqué... peut-être auriez-vous un exemple assez simple pour que je puisse l'intégrer dans mon projet ?

    Citation Envoyé par danielhagnoul Voir le message
    Bonsoir
    Mais un plugin bien conçu doit aussi supporter l'existence de plusieurs instances concomitantes.
    Ha, là c'est plus qu'intéressant, ce serait en effet exactement ce qu'il me faudrait, mais, où puisse-je trouver un modèle de structure de plugin capable de supporter l'existence de plusieurs instances ?

    J'ai réalisé mon plugin en m'inspirant d'un autre déjà existant mais, visiblement, suivant votre observation, ce code que j'ai pris en exemple ne doit pas être optimisé pour une utilisation avec des multiples instances.

    Existe-t-il un endroit où on puisse trouver différentes modèles de structure de plugin jQuery à utiliser suivant les besoins dans nos projets ?

    Malgré mes recherches, je n'ai rien trouvé sur le site officiel de jQuery.

    Merci encore pour votre réponse, je continue mes recherches...


  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Malgré mes recherches, je n'ai rien trouvé sur le site officiel de jQuery.


    Dans la FAQ : Comment puis-je écrire un plugin ?

    Il y a un article : Adapter jQuery à vos besoins

    J'ai un autre article, qui est prêt et qui va sans doute paraître prochainement, sur la construction d'un plugin multitâche.

    Sauf si c'est un secret militaire ou s'il fait 600 lignes, je vous conseille de poster le code.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Bonjour et merci beaucoup pour ta réponse
    Citation Envoyé par danielhagnoul Voir le message


    Dans la FAQ : Comment puis-je écrire un plugin ?

    Il y a un article : Adapter jQuery à vos besoins

    J'ai un autre article, qui est prêt et qui va sans doute paraître prochainement, sur la construction d'un plugin multitâche.
    Merci pour ces liens fort instructifs, j'ai hâte de découvrir ton article, n'hésites pas à me tenir au courant dès qu'il sera en ligne

    Citation Envoyé par danielhagnoul Voir le message
    Sauf si c'est un secret militaire ou s'il fait 600 lignes, je vous conseille de poster le code.
    Non non, pas de secret d'État ni militaire, au contraire, c'est un projet libre et open-source que j'ai publié en ligne par ici : http://fredomkb.free.fr/qkdev/index.php?pge=101_qkGal

    Une page démo par là : http://fredomkb.free.fr/qkdev/qkGal/index.html

    Comme tu verras, il s'agit d'un tout petit code, assez basique, c'est mon tout premier plugin pour jQuery, donc forcément codé un peu maladroitement, mais pour une galerie simple ça marche assez bien

    Évidemment, comme j'ai tenté de l'expliquer, les choses se compliquent un peu lorsque j'applique le plugin à plusieurs galeries...

    Je dois sûrement faire quelques erreurs au niveau de la structure ou le fonctionnement du plugin, mais pour l'heure je suis incapable de savoir où et pourquoi.

    Merci en tout cas pour ton message et pour les liens, ça va sûrement m'aider... enfin, j'espère

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/08/2005, 00h43
  2. Partage de code par plusieurs instances
    Par a.tintin dans le forum MFC
    Réponses: 3
    Dernier message: 08/08/2005, 14h03
  3. Réponses: 3
    Dernier message: 16/10/2003, 10h22
  4. Communiquer entre plusieurs instances d'applications
    Par bourinator dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/09/2003, 11h24
  5. [] plusieurs instances de form avec leur contexte ?
    Par Seb-31 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/04/2003, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo