代码之家  ›  专栏  ›  技术社区  ›  alex

一个或多个$(文档)。就绪[关闭]

  •  1
  • alex  · 技术社区  · 10 年前

    我在单独的.js文件中有一堆js片段,每个片段都有一个 all.js .建议采用以下哪种方法?

    • 将每个js代码段分开 $(document).ready :

       //all.js
      
       $(document).ready(function(){
          foo...
       })
      
        $(document).ready(function(){
          bar...
       })
      
    • 将所有片段放在一起 $(文档).ready :

         //all.js
      
        $(document).ready(function(){
          foo...
          bar...
       })
      
    2 回复  |  直到 10 年前
        1
  •  2
  •   jfriend00    10 年前

    这实际上只是编码方便性或个人风格偏好的问题。两种方法都可以很好地工作,而且工作方式相同。

    向注册的回调函数 $(document).ready() 都是按照注册的顺序调用的,所以即使是顺序也是一样的。

    这两种方法之间的性能差异很可能很小,与其他方法相比,你无法测量它,因为使用两个独立的方法只需要额外调用几个级别的函数 .ready() 电话。如果你能测量差异,我会很惊讶,如果差异真的相关,我会更惊讶。更可能的是,您应该使用其他代码结构原因来决定走哪条路。

    如果您想调用的两个函数方便地位于同一个文件中,那么这将产生更紧凑的代码:

    $(document).ready(function(){
        foo(...)
        bar(...)
    });
    

    如果两个函数分别维护和/或在不同的文件中维护,那么这将更方便地适合您的代码布局,并允许您保持独立的模块彼此独立:

    // one place in your code
    $(document).ready(function(){
        foo(...)
    });
    
    // somewhere else in your code
    $(document).ready(function(){
        bar(...)
    });
    

    在您的特定情况下,您将引用多个连接在一起的文件。这意味着您可以使用任何一种格式。如果这些多个文件都是模块,可能不能一起使用,那么您可能希望每个文件都“独立”。如果是这种情况,那么使用第二种模型,因为文件彼此独立,任何给定的文件都可以自己使用。如果不存在这样的依赖关系,那么不在两个文件之间创建依赖关系将是一个优势。

    另一方面,如果这两个文件已经相互依赖,并且在任何项目中都必须同时使用,那么试图保持任何独立性都没有好处,因此您可以很好地使用任何一种样式。

    请记住,为了在未来的项目中实现最佳的代码重用或共享、测试独立性和最简单的可维护性,使单独的文件/模块尽可能独立是很有用的。

        2
  •  1
  •   Zoltán Tamási    10 年前

    这两种方法在语义上是相同的。然而,有几点需要注意。

    • 当使用多个回调时,会增加轻微的性能损失,但在几乎所有情况下都应该是可以忽略的,除非一个回调添加了大量的单独回调。
    • 虽然在当前的实现中,顺序是由注册顺序定义的,但回调执行的顺序在未来可能会有所不同,因为在大多数这样的框架中,处理程序的执行通常不是确定的,因此依赖当前的实现有点不安全。手动构造代码以确保执行顺序正确总是更好的。当然,当您的所有处理程序在功能上都是独立的,那么这根本不是问题。