0

起初,我认为 Zepto 仅在 $ 不可用时才定义了一个“Zepto”全局变量。所以,我决定做这些测试:

第一小提琴 - Pure Zepto

第二小提琴 - 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 初始化了两个变量 $ 和 Zepto。这不是(定义两个相同的全局变量)不好的做法吗?有一种方法可以定义 Zepto 全局仅 IF $ 不可用?

4

1 回答 1

2

来自 zeptojs.com:

“如果尚未定义,Zepto 只会将 $ 全局设置为自身。没有 Zepto.noConflict 方法。”

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

不,这不是一个坏习惯 -$是一个简短而简单的别名,而库也有它的全名作为一个全局。顺便说一句,我希望这纯粹是理论上的问题 - 为什么要将两个库都包含在一个页面上?;)

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

为了确定你背后的$东西可以使用这个模式:

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

除了要引用(Zepto 或 jQuery)library之外,另一个全局变量在哪里。$

于 2013-09-18T18:03:58.583 回答