Zeptojs和$(全局变量)

时间:2013-09-18 17:55:52

标签: javascript jquery zepto

首先,我认为如果$不可用,Zepto只定义了一个“Zepto”全局变量。所以,我决定进行这些测试:

First Fiddle - Pure Zepto

Second Fiddle - Zepto + jQuery

来源

HTML

<div id="first-global">
</div>
<div id="second-global">
</div>

JS

var first = document.getElementById('first-global'),
    second = document.getElementById('second-global');

first.innerHTML = $;
second.innerHTML = Zepto

两者的代码是相同的,只有改变的是使用的框架。

所以,正如你在第一个小提琴中看到的那样,Zepto初始化两个变量$ AND Zepto。这不是(定义两个相同的全局变量)一个坏习惯吗?有一种方法可以定义Zepto全球只有IF $不可用吗?

1 个答案:

答案 0 :(得分:2)

来自zeptojs.com:

  

“如果尚未定义,Zepto将仅将$ global设置为自身。   没有Zepto.noConflict方法。“

所以它取决于包含这些库的顺序。如果首先包含jQuery,那么Zepto将不会覆盖全局$。如果首先包含Zepto,那么您可以使用jQuery.noConflict使$指向Zepto。

不,这不是一个不好的做法 - $是简短的别名,而图书馆的全名也是全球性的。顺便说一下,我希望这是纯粹的理论问题 - 为什么你会在一个页面上包含两个库? ;)

$不如图书馆自己的名字可靠(正如您的问题所证明的那样)。许多图书馆可能会尝试设置全局$,而jQueryZepto等变量不太可能被意外覆盖。

要确定$背后的内容,您可以使用此模式:

(function($){
   $('selector').doSomething();
}(library));

其中library是除了$之外的另一个全局变量(Zepto或jQuery)。