在网页中包含Javascript

时间:2009-05-14 16:53:43

标签: php javascript jquery

有人可以推荐在(基于PHP)的网页上包含多个Javascript文件的最佳和最简单的方法吗?

我有一个使用jQuery的网站,以及任何一个特定页面上最多约10个插件的内容。我并不完全确定包含所有这些文件的最佳方式,以便让我作为开发人员简化生活,并确保最好地为用户提供服务。

理想情况下,我认为自己最简单的方法是构建一个PHP处理程序文件,我可以使用它来调用每个页面需要的插件,然后让它输出javascript使用document.write()来“包含”每个在页面上插入JS文件,如下所示:

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

然后可以将具有多个document.write()的Javascript输出到每个单独的插件。

我被认为这可能会导致浏览器缓存出现问题,因为有些浏览器会忽略带有查询字符串的项目的缓存。

这样做可以,或者是否有一种我可能缺少的简单方法?

5 个答案:

答案 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);
    }
}