JSbeautify JQuery цепочки - PullRequest
       2

JSbeautify JQuery цепочки

3 голосов
/ 20 июня 2011

Я использую jsbeautifier через командную строку (http://jsbeautifier.org/), и он отлично работает, кроме того, что поддерживает мои более длинные операторы jquery:

$('#foo').closest('div')
         .closest('input')
         .val();

до:

$('#foo').closest('div').closest('input').val();

Очевидно, это немного просто, но иногда цепочка становится немного длиннее или это выражение if выглядит так:

if ((foo === bar) && 
    c > 5 && 
    d != 2)

где это заканчивается как:

if ((foo === bar) && c > 5 && d != 2)

Кто-нибудь испытывал это и модифицировал beautifier или знал об обходном пути или альтернативном парсере (я использую VIM, поэтому я предпочел бы не использовать решение IDE, такое как aptana, если оно не может быть вызвано через командную строку)? Или мне просто нужно скорректировать мой код, чтобы избежать длинных условий if (и как лучше абстрагировать это во что-то более читабельное, если это так)?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 июля 2014

Вы можете передать -B или --break-chained-methods в командной строке, чтобы сохранить эти разрывы строк.

Для if и других операторов используйте -w или --wrap-line-length, чтобы разорвать их, как толькопредел достигнут.

Из источника -B, --break-chained-methods Break chained method calls across subsequent lines -w, --wrap-line-length Maximum characters per line (0 disables) [250]

Кроме этого, в зависимости от вашего кода, всегда предпочтительнее не иметь long if или любой другойзаявление по этому вопросу.Лично я стараюсь придерживаться ограничения в 80 символов, но иногда мне приходится принимать более длинные заявления (особенно когда речь идет о старых проектах).

0 голосов
/ 21 сентября 2011

Длинные if-условия довольно сложно читать и отлаживать. Вы можете попробовать следующее:

var matchesBar = (foo === bar),
    greaterThenFive = (c > 5),
    notTwo = (d != 2);

if (matchesBar && greaterThenFive && notTwo) {
    // Do stuff
}

Если вы даете переменным осмысленные имена, вы отделяете обработку истинных частей и их сравнение, и оператор if немного легче читать.

Он не дает прямого ответа на ваш вопрос re: jsbeautifier, но может помочь с удобочитаемостью, если нет другого обходного пути.

...