Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包括javascript文件_Javascript_Html - Fatal编程技术网

包括javascript文件

包括javascript文件,javascript,html,Javascript,Html,我现在正在完成我的项目,看到我在每个页面上都有很多javascript代码。它不是作为“.js”文件包含的,而是在页面本身中编码的。我认为这是个坏主意,所以现在我尝试将它们都放在一个.js文件中,并将其包含在每个页面中 我现在面临的唯一问题是:一些函数只在某些页面上调用,并且依赖于jquery插件的包含。然而,并非所有页面都需要插件 例如: 在主页上,我需要将Country dropbox与City dropbox链接起来,因此我需要jquery的jchained.js插件。我需要使用的代码是:

我现在正在完成我的项目,看到我在每个页面上都有很多javascript代码。它不是作为“.js”文件包含的,而是在页面本身中编码的。我认为这是个坏主意,所以现在我尝试将它们都放在一个.js文件中,并将其包含在每个页面中

我现在面临的唯一问题是:一些函数只在某些页面上调用,并且依赖于jquery插件的包含。然而,并非所有页面都需要插件

例如: 在主页上,我需要将Country dropbox与City dropbox链接起来,因此我需要jquery的jchained.js插件。我需要使用的代码是:

$(function(){
    $("#city").chained("#country");
});
当我将此函数添加到.js文件中,并打开一个不需要链接Dropbox的页面时,逻辑上会出现一个错误:

TypeError:$(“#城市”)。chained不是函数

因此,如果我理解正确,为了使用一个.js文件来为不同的插件提供不同的功能,我需要在所有页面中包含所有插件


感谢您的想法和帮助。

这完全取决于代码的结构或当前代码的复杂程度

立即的解决办法是

  • 为每一页提供一个id(可能在正文标签上)
  • 将所有代码放在一个外部JavaScript文件中
  • 仅当特定页面的主体元素上有必需的id时,才执行该页面的代码。 比如:

    如果($('body').attr('id')==“home”){ /*在此处添加主页JS*/ }

  • 你可以试试这个


    如果我错了,请纠正我。

    就我个人而言,我认为您不应该担心包含大量.js文件,这是web开发的一部分。另一个选项,尽管有点繁琐,但可以检查函数是否存在(如果包含plugin.js),然后在函数存在时调用它:

    if(typeof yourFunctionName == 'function') {
        yourFunctionName();
    }
    

    你为什么不把函数分成几个文件呢?将依赖JQuery的代码放在一个文件中,其余的放在其他地方,可以避免错误。也许更细粒度会更好。这取决于你有多少代码以及它是如何编写的。@Tom:那不是会产生很多“.js”文件吗?我需要为每个函数创建一个单独的文件,我有很多不同插件的函数。我不知道,我还没有看到代码。如果您还记得分离关注点,这应该不是问题。如果是的话,JS可能需要大规模重构。我不确定“不担心包含大量的.JS文件”这一部分。更多单独的JS文件意味着更多的请求——这意味着页面加载速度较慢,尤其是在带宽有限的设备上(如移动设备)。我将把所有这些JS文件连接成一个用于生产环境的文件,以便只需要一个请求。我也会缩小那个文件。@ilillar:正是我的意思。但是如果我只想使用一个文件,我需要在我的所有页面上包含所有使用过的插件。@moonwalker是的,但是如果所有页面都只有一个连接和缩小的JS文件,那么它将在第一次页面加载后被缓存,而不是让其他页面担心。或者,您可以为每个页面创建一个主JS文件,将共享功能分离到其他JS文件中,并在每个主JS页面中使用类似“require”的代码。我的朋友Ian是正确的。连接和缩小可能是您最好的选择,因为它可以显著减少加载时间和请求。@ILILAL:好的,现在我明白了。谢谢。我正打算这么做。:)好主意。但我必须接受肖恩给出的答案。谢谢你的帮助!