将jQuery函数分离为异步组

时间:2015-01-15 09:05:03

标签: javascript jquery asynchronous web

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

  • 您有一个运行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>

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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