有人可以推荐在(基于PHP)的网页上包含多个Javascript文件的最佳和最简单的方法吗?
我有一个使用jQuery的网站,以及任何一个特定页面上最多约10个插件的内容。我并不完全确定包含所有这些文件的最佳方式,以便让我作为开发人员简化生活,并确保最好地为用户提供服务。
理想情况下,我认为自己最简单的方法是构建一个PHP处理程序文件,我可以使用它来调用每个页面需要的插件,然后让它输出javascript使用document.write()来“包含”每个在页面上插入JS文件,如下所示:
<script src="handler.php?jquery,plugin1,plugin2,plugin3,plugin4"></script>
然后可以将具有多个document.write()的Javascript输出到每个单独的插件。
我被认为这可能会导致浏览器缓存出现问题,因为有些浏览器会忽略带有查询字符串的项目的缓存。
这样做可以,或者是否有一种我可能缺少的简单方法?
答案 0 :(得分:2)
您可能对Google AJAX API感兴趣,即:
google.load("jquery", "1.3.2");
google.load("jqueryui", "1.7.1");
google.load("prototype", "1.6.0.3");
答案 1 :(得分:1)
为什么不单独使用自己的<script>
标记包含每个文件?然后一切都被单独缓存,一切都很好。它只会在第一页加载时发出很多HTTP请求。每次动态构建“包含文件”可能对性能没有任何好处。
脚本的组合是否有很大差异?如果你真的想减少HTTP请求并且总是包含相同的10个文件,那么只需将它们放在一个长文件中即可。
答案 2 :(得分:1)
乔莉,
浏览器使用问号缓存网址没有问题。 最好不要包含一个js文件,而js文件又包含另一个js文件。 如果您已经编写了一个脚本来管理应该包含的所有js文件,为什么不在那里输出所有这些脚本标记呢?
答案 3 :(得分:0)
如果你真的不愿单独包含这些文件,你可能会编写一个php函数来生成脚本标签,给出一个插件名称列表。
答案 4 :(得分: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);
}
}