这可能很简单,但是我必须说我对这个话题有些困惑。

我正在根据两个受欢迎的库编写代码:

  • jQuery
  • 下划线

我只是想知道 隔离代码并防止冲突以及如何将其与其依赖关系合并的最佳方法是什么?

通过合并,我的意思是将它们放在同一文件中。

有帮助吗?

解决方案

您可以轻松地将它们两个放在同一文件中,因为他们唯一转动全局的东西是 window._, window.$window.jQuery. 。其他变量和功能包裹在本地范围中,因此不会发生冲突。


编辑: :您自己的代码也可以放在同一文件中。而且,如果您愿意删除全球范围,则jQuery和下划线都有一个无冲突的方法,该方法用旧值代替了全球群体(通常 undefined)。您可以将代码包装在自己的本地范围中,再也没有问题了:

// jQuery and Underscore source here

// You code here, wrapped in a self-executing function:

(function($, _){

  // here you can add your code:
  $('#test').text('jQuery works');

  _(3).times(function(){
    alert('Underscore works' );
  });

})(jQuery.noConflict(true), _.noConflict());

// no jQuery nor Underscore here:

alert(typeof jQuery, typeof $, typeof _);

这看起来很棘手,但是让我很快解释。您可以在定义之后立即执行函数,例如:

(function(){
  alert('I am being executed');
})();  // <-- basically how you call a function normally: func();

您可以通过其中的参数:

(function(a){
  alert(a);
})('test');

两个都 $.noConflict()_.noConflict() 删除全局变量,然后返回对jQuery和下划线变量的引用。因此,您可以在自我执行的函数中将它们作为参数和每个人都高兴(:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top