2013-09-18 8 views
0

Сначала я решил, что 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 $ был недоступен?

ответ

2

От zeptojs.com:

«Zepto будет задавать только $ глобальный к себе, если она еще не определена Там нет метода Zepto.noConflict.»

Таким образом, это будет зависеть от порядка включения этих библиотек. Если сначала включить jQuery, Zepto не будет перезаписывать глобальный $. Если Zepto включен первым, то вы можете использовать jQuery.noConflict, чтобы сделать $ точкой для Zepto.

И нет, это не плохая практика. $ - это короткий и простой псевдоним, а библиотека также имеет полное имя как глобальное. BTW Надеюсь, это чисто теоретический вопрос: почему вы включили обе библиотеки на одну страницу? ;)

$ менее надежно, чем собственное имя библиотеки (что подтверждается вашим вопросом). Многие библиотеки могут попытаться установить глобальный $, в то время как менее вероятно, что переменная типа jQuery или Zepto будет случайно перезаписана.

Чтобы быть уверенным, что за $ вы можете использовать этот шаблон:

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

где library является другой глобальной переменной, кроме $ вы хотите сослаться (зепто или JQuery).

+0

Спасибо за ваш ответ;) ха-ха На самом деле, не то, что теоретически. Я использовал jquery, когда я столкнулся с Zepto, и пока я занят, и чтобы не нарушать мое приложение, я использую оба. Я понял, что он только устанавливает значение $ для себя, если оно не определено, поэтому я сомневаюсь, что держите Zepto как глобальный var в ситуациях, когда $ установлен в Zepto? –

+2

jQuery и Zepto, живущие вместе на одной странице, являются нечувствительной идеей - Zepto был создан, чтобы преднамеренно предоставить некоторые из идентичных функций, которые предоставляет jQuery, но без большого количества помех. Включение обеих библиотек - это поместить две разные версии jQuery на одну страницу. – Adam

+0

Я использую zepto только для мобильных устройств.Я планирую перейти на Zepto как можно скорее, но на данный момент у меня есть другие приоритеты и вы предпочитаете не рисковать случайным сломать мое приложение по какой-либо причине. ^^ –

Смежные вопросы