Как сделать вы эффективно выполняете код jQuery?

Я просто немного поигрался с jQuery - какое-то время использую YUI, и хотя я действительно ценю многое из того, что может предложить библиотека jQuery, я нахожу было довольно сложно пройти через код jQuery в отладчике, и мне интересно, есть ли какие-нибудь уловки, кроме очевидных вещей?

Возьмите простую функцию примерно так:

function findFirstShortChild(parent) {
    var result = null;
    $("#" + parent + " li").each(function() {
        if ($(this).css("height") <= 10) {
            result = this;
            return(false);    // break out of each() function
        }
    });
    return(result);
}

Если функция работает не так, как задумано, и я решаю, что хочу выполнить ее, это совсем не интуитивно понятно. Фактически, вы вообще не можете пройти через это. Вам нужно будет просмотреть всевозможный код jQuery в кучу мест. Вы не можете войти в цикл .each () , потому что на самом деле это не традиционный цикл. Я удивлен тем, насколько непродуктивно я себя чувствую в отладчике по сравнению с другими библиотеками. Итак, вот мои проблемы:

  • Вы не можете переходить по очереди, иначе вы попадете в целую кучу функций jQuery.
  • Вы не можете попасть внутрь каждого цикла без того, прохождение большого количества вещей jQuery или установка точки останова, позволяющая ей достичь точки останова.
  • Вы не можете увидеть, что такое промежуточные значения, такие как $ (this), или почему он может получить фиктивное значение для высоты без прохождения через мили стороннего кода jQuery.
  • Вы не можете выйти из каждого цикла, как в традиционном цикле (с break или return), потому что это не настоящий цикл. Цикл находится внутри функции .each (). То, что здесь выглядит как цикл, - это просто внутреннее устройство вызова функции.
  • Что, если я хочу знать, почему я получаю фиктивное значение высоты в цикле. Есть ли способ выяснить это, не вдаваясь в большой объем кода jQuery?

Итак, что мне здесь не хватает? Неужели намного менее удобно проходить через такой код? Мне не хватает некоторых волшебных приемов, встроенных в структуру jQuery, которые помогут с этим? Или это цена, которую вы платите за использование этой библиотеки стилей, которая должна полностью изменить способ отладки проблем.

Это то, что вам нужно сделать?

  • Присваивать промежуточные значения локальным переменным в проблемном месте, чтобы вам было легче их проверять, не переходя через функции jQuery.
  • Переходите от точки останова к точке останова, а не пошагово построчно.
  • Узнайте, как входить и выполнять вызовы jQuery (эффективно), чтобы отвечать на некоторые виды вопросов.

Как вы все это делаете? Что мне не хватает?

Я должен упомянуть, что я использую Firebug в FF5 и встроенный отладчик в Chrome (сейчас Chrome чаще, чем Firebug). И, да, я использую отладочную (неминифицированную) версию jQuery при отладке. Итак, вопрос не в том, какой отладчик вы используете, а в том, как вы используете отладчик для эффективного пошагового выполнения кода jQuery.

26
задан jfriend00 16 July 2011 в 09:15
поделиться