2

我有一个项目需要将自定义 JavaScript 库包含在最终用户的网站中。某种第三方的东西,想想像谷歌分析这样的 JavaScript 跟踪。

我们将无法控制还可能加载哪些其他 JS 库/框架或哪些版本。

我希望能够利用 jQuery 的事件委托、选择器和 AJAX 功能,但是:

  • 不会与可能加载的其他库或其他版本的 jQuery 产生任何冲突
  • 不需要最终用户必须考虑单独包含 jQuery。

因此,滚动所有的 jQuery 似乎有点过头了,但同样需要事件委托、选择器和 AJAX。我知道 jQuery 的 sizzel 引擎以这样一种方式被打破,它可以包含在 3rd 方库中,并且有很多小型 AJAX 库,但我们也需要良好的事件委托支持。此外,我预见我们需要在不久的将来使用这个库进行一些繁重的 DOM 提升,因此可以说我们确实需要 jQuery 的大部分功能。

关于如何以不践踏任何人的代码的方式封装 jQuery 的任何建议?另外,这有多可取?确实感觉有点不靠谱。

另外,将它封装到另一个库中的最佳方法是什么?还有比这更好的方法吗?:

(function(window){
    window.myNamespace = {
        _jq:null,
        init: function(){
            // Include jQuery
            myNamespace.setJq();
        },
        setJq:function(){
            /*! jQuery v1.8.2 jquery.com | jquery.org/license */
            (function(a,b){function G(a){...}}) // <- minified jQuery
            // Stash a local copy of jQuery
            myNamespace._jq = jQuery;
            // Return $ and jQuery namespace
            $.noConflict(true);
        }
    }
})(window)

(我们打算为那些精明的人提供一个没有 jQuery 的库版本,以便知道它已经加载到他们的页面上以及他们正在使用什么版本)

4

3 回答 3

2

看看 jQuery in Parts:https ://github.com/mythz/jquip

于 2012-10-13T05:55:22.737 回答
1

东一个条件负载怎么样...测试 $ 是否存在。如果是这样,请不要加载脚本。如果没有,则加载它。

于 2012-10-13T06:22:50.567 回答
0

您可以使用以下模式来确保将 jQuery 传递给函数,然后您可以将其映射到局部变量 $ 而不会出现问题。

(function(window,$){ //使用 $ 作为本地 jQuery 变量

})(窗口,jQuery);

于 2012-10-13T07:15:42.950 回答