我有一个项目需要将自定义 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 的库版本,以便知道它已经加载到他们的页面上以及他们正在使用什么版本)