web-dev-qa-db-fra.com

Dans quel ordre les différentes parties de Joomla insèrent-elles javascript dans la pile FIFO?

Il y a beaucoup de confusion sur J.S.E sur la façon d’inclure javascript dans Joomla dans le bon ordre. J'ai vu un certain nombre de questions sur J.S.E à ce sujet, mais elles ne couvrent jamais tout. Ces questions m'ont amené à cette information

L'API Joomla (telle que $ doc-> addScript) utilise un tableau pour stocker les chemins d'accès aux fichiers JS. Ils sont rendus dans le document dans le même ordre où ils ont été insérés dans le tableau (pile FIFO). Une fois qu'un chemin de fichier est inclus dans le tableau, si une autre API tente d'insérer le même fichier, l'insertion est ignorée. Cela évite les doublons, mais signifie également que les fichiers seront restitués en fonction du moment où ils ont été inclus pour la première fois dans la pile FIFO. Si vous essayez de réinsérer les mêmes fichiers, l'ordre des les fichiers ne seront pas modifiés.

RÉFÉRENCE ORIGINALE https://docs.joomla.org/Adding_JavaScript#Important_notes_for_3rd_party_developers

MES QUESTIONS

  • 1: Quelles parties de Joomla insèrent javascript dans la pile FIFO en premier?

  • 2: Quel est l’ordre d’insertion de chacune des parties de Joomla? plugins, modules, articles, etc.

Je vais inclure ce que j'ai déjà découvert ci-dessous.

les fichiers d'extension et les fichiers de remplacement de modèle sont traités en premier et le fichier index.php de votre modèle actuel est traité en dernier.

2
TryHarder
  1. Joomla insère Javascript à partir de plusieurs endroits. Il a principalement coordonné de JDocument et JDocumentRendererHead. Il n'y a aucun moyen de connaître tous les appelants addScript et il vaut mieux éviter toute dépendance à cet ordre.

  2. En ce qui concerne l'ordre d'insertion, il suit principalement l'ordre d'exécution:

    • Les plug-ins suivant les événements associés (initialisation, avant le rendu, etc.),
    • les modules appelés avant le composant,
    • composant principal et modules après le composant (selon la définition du modèle).
    • Plug-ings après le rendu, etc.

Si vous avez des dépendances d'ordre de chargement, il est préférable de charger votre code à la fin (jQuery.ready). C'est peut-être plus lent mais c'est sûr.

D'autres techniques avancées peuvent être mises en œuvre avec un gestionnaire de dépendance (par exemple, RequireJS) ou tout simplement en insérant manuellement votre script Javascript avant </ body>.

1
Anibal