2009-06-10 3 views

Répondre

8

Mon conseil: Il suffit d'inclure jQuery sur votre base <head> et appelez-le un jour. Vous évite d'avoir à vous inquiéter si un template enfant utilise jQuery ou non et il ne s'agit que d'un téléchargement de 19kb sur le premier chargement de la page et c'est tout. Si vous utilisez le cloud de l'API de Google, il se peut qu'il ne soit même pas disponible car l'utilisateur peut le mettre en cache depuis un autre site.

Cela peut ne pas fonctionner pour vous, mais je vous conseille de le considérer si possible.

0

Vous pouvez définir des blocs distincts pour votre script et pour d'autres extraheads dans le modèle de base. Dans le modèle de base, laissez le bloc vide pour votre script. Remplissez-le avec un lien vers un fichier si nécessaire dans les modèles qui étendent la base.

5

Mon approche habituelle à ce problème consiste soit à envelopper tous mes modèles enfants dans un modèle qui prend soin de mes inclusions (JS et CSS). Je m'assure alors que ma mise en cache est correctement définie, afin que ces scripts ne soient téléchargés qu'une seule fois par utilisateur. En d'autres termes, je force le téléchargement de tous mes scripts externes sur la première vue, puis je me base sur la mise en cache pour ne pas télécharger à nouveau le JS à chaque fois.

La combinaison de tous vos JS en un seul fichier améliorera également le temps de téléchargement en raison de la réduction des demandes qui seront générées.

Une autre chose à noter est que vous avez mentionné mettre le JS dans les têtes. Alors que la plupart des gens font cela, placer JS dans la tête peut faire apparaître vos pages à charger plus lentement. Les fichiers JS ne sont pas téléchargés en parallèle, ils bloquent donc tous les autres téléchargements. Google et Yahoo recommandent de placer JS en bas de votre page lorsque cela est possible pour améliorer l'expérience utilisateur.

Voir l'outil Yahoo YSlow et l'outil Google PageSpeed ​​pour cela.

3

Je mordrais la balle et chargerais jQuery avec chaque gabarit. Mais si vous avez vraiment vraiment besoin de cette fonctionnalité, je vous recommande un tag de modèle personnalisé. Check out the docs, en particulier la partie sur la définition d'une variable dans le contexte.

0

Vous pouvez passer tous les fichiers requis en tant que variable de contexte, puis écrire une balise de modèle qui a supprimé les doublons et chargé ce qui restait.

Vous pouvez également contrôler l'ordre de chargement.