2009-05-14 6 views
0

Quelqu'un peut-il s'il vous plaît recommander la meilleure et la plus simple façon d'inclure plusieurs fichiers Javascript sur une page web (basée sur PHP)?Y compris Javascript dans les pages Web

J'ai un site Web qui utilise jQuery, et n'importe quoi jusqu'à environ 10 plugins sur une page particulière. Je ne suis pas tout à fait sûr de la meilleure façon d'y parvenir, y compris tous ces fichiers pour me rendre la vie simple en tant que dev, et pour s'assurer qu'ils sont mieux servis à un utilisateur. Idéalement, je pensais que la façon la plus simple serait de créer un fichier de gestionnaire PHP que je pourrais utiliser pour appeler les plugins que je demande pour chaque page, et ensuite avoir un fichier javascript de sortie qui utilise document.write() pour 'include' chaque fichier de plugin JS sur la page, comme suit:

<script src="handler.php?jquery,plugin1,plugin2,plugin3,plugin4"></script> 

qui pourrait alors sortie Javascript avec plusieurs document.write() de chaque plug-in individuel. Je suis porté à croire que cela pourrait conduire à des problèmes avec la mise en cache du navigateur, car certains navigateurs ignorent la mise en cache des éléments avec des chaînes de requête.

Est-ce que cela vous convient, ou existe-t-il une méthode plus simple qui me manque peut-être?

Répondre

1

Joely,

navigateurs ont aucune URL de mise en cache de problème avec de questionmarks. Il est probablement préférable de ne pas inclure un fichier js, qui inclut à son tour un autre fichier js. Si vous écrivez déjà un script qui gère tous les fichiers js qui sont censés être inclus, pourquoi ne pas afficher toutes ces balises de script?

+0

Merci, je m'en tiendrai à l'utilisation de PHP pour les gérer. –

+0

Cela peut être un peu démodé, mais voir: http://thinkvitamin.com/features/webapps/serving-javascript-fast/ "À ce stade, vous pourriez vous demander pourquoi nous ne faisons pas simplement une requête chaîne de caractères à la fin de la ressource - /css/main.css?v=4 Selon la lettre de la spécification de mise en cache HTTP, les agents utilisateurs ne doivent jamais mettre en cache les URL avec des chaînes de requête. 't - pour s'assurer que tous les agents utilisateurs peuvent mettre en cache vos ressources, nous devons garder les chaînes de requête hors de leurs URL. " –

2

vous pourriez être intéressé par Google AJAX API, i.e. .:

google.load("jquery", "1.3.2"); 
google.load("jqueryui", "1.7.1"); 
google.load("prototype", "1.6.0.3"); 
+0

Merci pour cette DFA, je ne l'utilise déjà CDN Google pour charger le fichier principal de jQuery - il est juste tous les plugins darn je dois charger avec elle - bien sûr, pas tous les plug-in est nécessaire pour chaque page, donc être capable de charger ce dont j'ai besoin rapidement est essentiel. Je pense que le fait d'essayer le code -dead- clean (nettoyer le monstre que je suis) rend les choses plus difficiles, et je devrais simplement utiliser une fonction PHP pour écrire et inclure les plugins via des tags de script standard soyez tous intelligents et essayez de charger plusieurs fichiers avec une seule étiquette de script. –

1

Pourquoi ne pas simplement inclure chacun des fichiers individuellement avec leur propre étiquette <script>? Ensuite, tout est mis en cache individuellement et tout va bien. Ce ne sera que beaucoup de requêtes HTTP sur le chargement de la première page. Construire dynamiquement un "fichier d'inclusion" à chaque fois ne sera probablement pas meilleur pour la performance.

La combinaison de scripts varie-t-elle fortement? Si vous voulez vraiment réduire les requêtes HTTP et que vous incluez toujours les mêmes 10 fichiers, placez-les tous dans un fichier long.

+0

Cela varie fortement - certaines pages n'utilisent pas de plugins, d'autres utilisent jusqu'à 10. Je pense que je pourrais me contenter d'utiliser une fonction PHP pour sortir les tags de script pour les plugins javascript nécessaires et je vais devoir ignorer mon "essayer de garder le code simple" demande. Merci. –

+0

La minimisation des requêtes HTTP en combinant des fichiers javascript est une pratique bien acceptée. http://developer.yahoo.com/performance/rules.html –

0

Si vous ne souhaitez pas inclure les fichiers individuellement, vous pouvez probablement écrire une fonction php pour générer les tags de script en fonction d'une liste de noms de plugins.

+0

Et merci encore - PHP semble le choix judicieux plutôt que d'essayer d'inclure javascript à partir de fichiers javascript, etc. –

0
function loadScripts(funcs){ 
    //funcs being an array list of paths to the scripts. 
    var temp; 

    //lets get a reference to the head tag 
    var h = document.getElementsByTagName('head')[0]; 
    for(var i=0; i < funcs.length; i++){ 
     temp = document.createElement('script'); 
     temp.setAttribute('src', funcs[i]); 
     temp.setAttribute('type', 'text/javascript'); 
     h.appendChild(temp); 
    } 
} 
Questions connexes