Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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_Jquery_Html - Fatal编程技术网

Javascript 将所有脚本保存在一个文件中是一种好的做法吗?

Javascript 将所有脚本保存在一个文件中是一种好的做法吗?,javascript,jquery,html,Javascript,Jquery,Html,我正在开发一个简单的网站,其中包含一些页面和一些javascript(jQuery)脚本。 对于CSS,我使用了一个.CSS文件,每个页面都有所有CSS,我想对脚本也这样做。因此,在我的页面标题中,我有以下内容: <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script src="scripts.js"></script> <link href="C

我正在开发一个简单的网站,其中包含一些页面和一些javascript(jQuery)脚本。 对于CSS,我使用了一个.CSS文件,每个页面都有所有CSS,我想对脚本也这样做。因此,在我的页面标题中,我有以下内容:

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="scripts.js"></script>
<link href="CSS.css" rel="stylesheet" type="text/css">
我在其他页面中也使用了一些javascript,但我想知道将所有脚本链接到每个页面的单个文件中是否是一种好的做法。这是我一直在思考的一个主要问题:如果我对每个页面都使用该文件,那么上面的代码会在没有div.slideshow的另一个页面上无用地运行吗?
解决这个问题的最佳方法是什么?

我喜欢javascript与html位于不同的文件中这一事实,但也许最好将这些脚本直接放在头部。

在生产环境中捆绑/缩小脚本是一种很好的做法。但是,在开发过程中,建议尽可能使它们保持可维护性。有一个脚本文件的开发版本是可以的,只要文件不太大并且代码是模块化的。一旦您的脚本开始变得太大,明智的做法是将它们拆分为功能模块。让您的捆绑过程担心为生产场景合并文件。

在生产环境中捆绑/缩小脚本是一种很好的做法。但是,在开发过程中,建议尽可能使它们保持可维护性。有一个脚本文件的开发版本是可以的,只要文件不太大并且代码是模块化的。一旦您的脚本开始变得太大,明智的做法是将它们拆分为功能模块。让您的捆绑过程担心为生产场景合并文件。

在生产中,将所有文件保存在一个缩小的文件中是非常好的做法。多亏了此浏览器,服务器才可以请求一个文件,而不是执行许多无意义的请求。但在开发环境中,您可以拥有所需的任意多个文件。

在生产环境中,将所有文件保存在一个缩小的文件中是非常好的做法。多亏了此浏览器,服务器才可以请求一个文件,而不是执行许多无意义的请求。但在开发环境中,您可以拥有所需的任意多个文件。

对于这种情况,我将把函数放在另一个文件中,然后在需要它的页面上调用
setInterval
。该函数只是一个定义,因此即使该文件包含在另一个页面上,如果不调用该函数,该函数也不会“无用地运行”。

对于这种情况,我会将该函数放在另一个文件中,然后在需要它的页面上调用
setInterval
。该函数只是一个定义,因此即使该文件包含在另一个页面上,如果未调用该函数,该函数也不会“无用地运行”。

您可以检查正在操作的元素是否存在,以便在该页面中不存在该元素时不运行所有代码:

if($("div.slideshow").length>0){
    //setInterval goes here
}

您可以检查正在操作的元素是否存在,以便在该页面中不存在该元素时不会运行所有代码:

if($("div.slideshow").length>0){
    //setInterval goes here
}

这里有两个问题

回答你的问题并不能回答你的主要问题!您的问题是您当前的代码

  • 即使没有.slideshow元素,也可以运行setInterval
  • 您的代码不允许在一个页面上有多个幻灯片
  • 您当前的代码允许您询问,您是否应该将JS拆分为片段,这意味着您的代码不好,因为它指示您压缩/缩小过程
  • 在小部件/模块中思考是一种很好的编程风格,它可以有您想要的任意多个“实例”。有很多方法可以通过JS实现这一点。一种简单的方法是使用闭包。将代码重写为以下内容:

    $(function(){
        $("div.slideshow").each(createSlide);
    });
    
    function createSlide(){
        var slideElement = $(this);
        var bgpos = 1;
        setInterval(function slide() {
            slideElement.css("background-position","0px "+bgpos+"px")
            bgpos++ 
        }, 35);
    }
    
    现在,您的代码仅在.slideshow存在的情况下运行+您可以在一个页面上有任意多个幻灯片,而无需创建全局bgpos变量。这是一种简单而好的技术,您的代码仅由一个函数包装,该函数用作普通模块包装器,该函数中发生的事情将保留在此函数中:-D

    二,。分裂与干裂


    一般认为,应该将脚本压缩到一个文件中,以最小化请求并加快页面加载。大多数人不知道的是,这条规则是在2006年之前制定的,自2006年以来浏览器发生了很大的变化和改进。集中到一个JS文件中可能仍然有利于总页面负载,但这也意味着加载孔JS比加载JS需要更长的时间,如果将其分为4个部分(4个部分可以并行加载,速度更快,但也意味着其他文件必须排队下载)。但这里有一个大问题:重要的是,你的舞台旋转木马的JS应该尽快加载,还是你想在加载之前加载页面底部附近的图片。根据我的测试,通常最好有多个JS文件(3-8个,取决于每个文件的大小)。简而言之:您应该合并小文件并拆分大文件和重要文件。但重要的是,这不是没有concat/build脚本和加载6-8个小JS文件的借口…

    这里有两个问题

    回答你的问题并不能回答你的主要问题!您的问题是您当前的代码

  • 即使没有.slideshow元素,也可以运行setInterval
  • 您的代码不允许在一个页面上有多个幻灯片
  • 您当前的代码允许您询问,您是否应该将JS拆分为片段,这意味着您的代码不好,因为它指示您压缩/缩小过程
  • 在小部件/模块中思考是一种很好的编程风格,它可以有您想要的任意多个“实例”。有很多方法可以通过JS实现这一点。一种简单的方法是使用闭包。将代码重写为类似于t的代码