【问题标题】:Separate jQuery functions into asynchronous groups将 jQuery 函数分成异步组
【发布时间】:2023-03-30 03:05:01
【问题描述】:

这是一个寻找方法/解决方案以解决以下要求的问题:

  • 你有一个运行 jQuery 的网站
  • 您网站上的所有 jQuery 函数都可以分为两组:a) 业务相关逻辑(本地函数,如导航等)和 b) 用于获取不太重要的内容(如广告)的函数),我们称 a) GROUP L 和另一个 GROUP E(用于外部)。
  • 目的是确保 E 组的延迟不会妨碍 L 组的执行,因此 L 组和 E 组应该并行运行,而不是相互影响。

如何做到这一点?

非常简单的例子:

本地组 L:

<script>
  $(document).ready(function() {
    ... local functions, e.g. event listeners for your local navigation ...
  }
</script>

E组: 外部各方提供的任何 javascript

<script>
  $(document).ready(function() {
    ... external java script code, e.g. Advertiser JS-snippets ...
  }
</script>

【问题讨论】:

    标签: javascript jquery asynchronous web


    【解决方案1】:

    您可以通过module patterns 完成此操作:

    (function(main, $, undefined){
    
        GROUP_L = {
            group_l_variable : null,
            group_l_function : function(data){
                //... local functions, e.g. event listeners for your local navigation ...
            },
        }
        GROUP_E = {
            group_e_variable : 'cats',
            group_e_function : function(data){
                //... external java script code, e.g. Advertiser JS-snippets ...
            },
        }
    
    }(window.main = window.main || {}, jQuery));
    

    你可以在任何地方调用它们;在您的控制台中尝试一下:

    >>GROUP_E.group_e_variable
    >>'cats'
    
    >>GROUP_E.group_e_function(my_data)
    >> //whatever your function does
    

    还有很多方法可以做到这一点,这种特殊的方法恰好是我最喜欢的。

    更多关于模块模式:http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html

    【讨论】:

      【解决方案2】:

      以防万一你不知道。我个人建议您使用RequireJS 学习 AMD(异步模块定义)。你甚至可以load individual pieces of jQuery using AMD。干杯。

      【讨论】:

      • 感谢您的指点,听起来很有趣。可以想象,上面 GROUP E 中的 javascript 是由外部方提供的,所以我无法控制它们(而且它们可能使用全局变量 $、jQuery),所以我实际上是在寻找隔离 MY OWN CODE从那个外部代码...
      • 使用window.onload()激活E组代码怎么样?见another question here on stackoverflow
      猜你喜欢
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      相关资源
      最近更新 更多