jQuery против ExtJS

Не смог спокойно пройти мимо блога товарища mycoding на сайте уважаемого Ильи Кантора, посвященному javascript - так зацепили меня его слова.

Решил ответить на его статью "Почему мне не нравится JQuery" по порядку на все вопросы.

В jQuery Используется знак $ (доллар)

Если вас не устраивает доллар, то всегда можно переопределить на любой другой символ или слово. Например так:


var ExtJS = jQuery.noConflict();
ExtJS("div p").hide();

Теперь вместо знака $ (доллар) вы можете использовать ExtJS

Все исходники, которые встречал очень запутаны и трудно понять

Это зависит от криворукости программистов, пишуших плагины, но никак не от создателей самого jQuery.

Применяется метод цепочного вызова любой длины — плохой стиль

И чем же он так плох? Аргументируйте.

JQuery был хорош для 2006 года, когда его только сделали. Сейчас же это старье, которое невозможно исправить. Надо полностью переписать стиль программирования для это framework-а

Ядро довольно часто обновляется, переписывается и дополняется — все идет в ногу со временем.

Программисту надо заморачиваться на всяких низкоуровневых штуках вроде селекторов и прочего

Селекторы — это не заморочки, это очень удобно, и никто не мешает вам использовать идентификаторы.


$('#id').css ('display', 'none');

Насколько мне известно, в ExtJS адекватные люди тоже используют селекторы, например, доступ ко всем тегам с классом .msg


var msgLinks = Ext.query('.msg');
Ext.each(msgLinks, function(item,index) {
    // Делаем что-нибудь с полученными элементами
});

Tutorial:DomQuery v1.1 Basics

Кто сказал, что работать с id плохо, а с селекторами хорошо?

Кто сказал наоборот? Это уже лично ваше мнение. У элемента просто может не быть идентификатора. Да и идентификатор — уникальный элемент. Как по вашему выбрать группу? В jQuery это делается достаточно просто:


$('.class').css ('boder', '1px solid red');

Здесь мы выбрали все теги с классом class и задали им красную рамку.

Проект может вырасти до 1-ого мегабайта.

Любой проект может вырасти до мегабайта и значительно больше, это не зависит от фреймворка и даже конкретного языка программирования.

Отчасти это может зависить от того какой говнокод вы взяли у индусского програмера.

Я стараюсь писать короткий, чистый и понятный код. Проект с 20ю плагинами весит менее 500 кБт

Работа с JQuery не удобна. Стиль программирования очень не приятен.

Сугубо личное Ваше мнение без единого аргумента и примера.

В JQuery UI отвратительные плагины. Они не красивые и глючат. И не доработаны.

Красивости задаются через CSS, глюки если и есть, то исправляются по мере появления. В вашем ExtJS тоже не все гладко.

Многое из того, что мне надо нет в JQuery.

А что конкретно вас интересует? Может нужно было погуглить?

Если я буду писать свои проекты на JQuery, а не на ExtJS, то времени у меня уйдет минимум раза в 2 больше.

Это от банального незнания предмета. Естественно, если вы 1.5 года использовали ExtJS и не удосужились изучить хотя бы основы jQuery

Попробуйте сделать на JQuery нормальную красивую форму обратной связи

Делали, никто еще не жаловался. А если что-то не получается — так это от нехватки опыта или незнания технологии.

И каким боком здесь ваши красивости? Ими занимается дизайнер, а потом пишется код на CSS, например.

Сайт http://jquery.com/ с его API и прочим имеет очень не приятный для глаз черный фон. Все проекты, которые заботятся о своих пользователях, используют белый фон. Черный фон был и есть вреден для глаз.

Чушь и бред. Меня бесит красный, но это не значит, что он «вреден». А как же консоль Windows и Linux? Они — черные!

Почему же JQuery так популярен? Потому, что он был первым

Он прост, легок, лаконичен и понятен даже для новичков.

ExtJS не совсем предназначен для сайтов

Тогда о каком сравнении вы говорите? Основа то одна — javascript, а применение — разное! Это все равно, что сравнить ежа и ужа.

У ExtJS очень большой размер.

И что в этом хорошего? Не в размерах ведь дело.

Но даже очень большой проект на ExtJS можно сжать до 300-350 кб

А jQuery код по-вашему мнению сжать нельзя? Например тем же YUI Compressor.

Вы можете разработать свои стили для проекта

И для jQuery, jQuery UI можете сделать тоже самое.

Разработка проекта на ExtJS экономит от 42% времени разработчика по сравнению с тем, если бы тоже самое делалось на чистом js или JQuery.

Что это за цифры с потолка? Откуда вы это взяли? Могу сказать, что с jQuery аналогично — экономия 99.9%. Это не показатель. Главое разбираться в теме вопроса.

Все модули,виджеты какие только Вам могут понадобится уже есть и доступны в примерах.

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

Давайте использовать современный framework ExtJS и Ext Core, а про JQuery забудем.

Давайте не будем хамить пользователям jQuery! Вы будете спокойно «программировать» на ExtJS, а все остальные использовать jQuery по мере надобности.

JQuery — это плохой framework. Как бы для Вас это не звучало.

Это лично ваше мнение, а где ваши аргументы?

Понять Вы меня сможете только, когда начнете программировать на ExtJS и Ext Core.

К счастью, использовал ExtJS — остался доволен, но опять же ExtJS — это не язык программирования, это фреймворк, написанный на javascript, поэтому на нем не программируют! Да и на сайты его особо не прилепишь вы сами это сказали.

ExtJS и все framework-и компании Sencha — это самые лучшие в мире framework-и

Одни из наиболее хороших, причем не единственные!

Их пишут профессионалы, которые работали долгое время в Yahoo и других очень известных фирмах.

jQuery разрабатывают тоже не ламеры и работали они и работают в очень известных компаниях.

Сегодня (30.06.2011) статьи по указанному ранее адресу уже нет — видимо, товарищ понял, что он был не прав.

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

  • Ivan Petrov

    один накидал какашек другому

    • Есть такое дело

  • justjs

    Я писал коммерческие проекты и на jQuery и на ExtJS. Когда дело касается практики, а не теории, главными аргументами выступают две вещи: масштабируемость и скорость разработки.

    jQuery хорош для написания небольших вещей. Как только код jQuery переходит границу 50-100 строк — разобраться в этой «каше» бывает довольно трудно и это занимает время. Код на jQuery без привлечения дополнительных библиотек превращается в спагетти-код, где нет четкой структуры. Когда на проекте несколько человек пишущих код, каждый пишет как хочет и как умеет. Обманчивая легкость этого фреймворка позволяет писать код лишь изредка заглядывая в документацию.

    Теперь по поводу плагинов. Не всегда можно найти подходящий плагин, а если найдешь, то приходится допиливать напильником под свои нужды.

    Теперь о ExtJS. ExtJS хорош тем, что он структурирован и масштабируем. Не нужно тратить время на всякие низкоуровневые операции взятия класса там или идентификатора. Когда я перешел на ExtJS, я забыл что такое html. Я писал весь код в js-файлах. Они загружаются в браузер и формируют всю страницу. Больше не нужно обращаться напрямую к DOM.

    Создаешь класс, создаешь экземпляр этого класса, передаешь ему нужные свойства и вуа-ля — компонент готов. Каждый класс хранишь в отдельном файле. Чтобы было проще искать. Это позволяет один и тот же код использовать для разных компонентов, наследоваться от этих компонентов и создавать на их основе новые. В общем это ООП. И с этим не поспоришь. Это Вам любой опытный программист скажет.

    • Согласен с вами и я ни коим образом не пытаюсь сравнивать несравнимое!

      Хоть и то и то написано с использованием JavaScript — применение у них все-таки разное. Я пытался просто защитить jQuery и программистов, пишущих на нем.

      Еще раз повторяю, что я знаком с обоими оппонентами не понаслышке, поэтому могу дать адекватный ответ на заявления товарищей типа mycoding.

  • Алексей

    Не очень корректно сравнивать Ext JS и jQuery, ведь jQuery хоть и называется фреймворком, по сути всего лишь «JavaScript tool» и не более! Тогда как Ext JS — полноценный фреймфорк как Zend Framework или Drupal, в нем есть все: MVC, огромное API, локализация и т.д.: http://docs.sencha.com/ext-js/4-1/#!/guide
    Вот тут вот есть еще хорошее руководство по Ext JS 4 на русском: http://phpshnik.ru/ext-js-4/rukovodstvo

  • Andrew Konstantinov

    Мда, автор просто поражает своими вспыльчивыми доводами. Он просто не понимает о чём была написана статья, выдирает из неё куски, и пытается что-то доказать, но что такое веб-приложение он не понимает в принципе. Например, когда он говорит, что на JQuery можно создать красивую форму, он даже не подозревает, что имеется ввиду создание html-кода с помощью самого фреймворка, а не вставки готового кода в нужный div.

    • Кому адресовано? Мне или автору этого поста на javascript.ru?

    • Нариман

      Да ладно господа коллеги, оба фреймворка очень даже хороши. Участвовал в проекте «Интернет Банкинг» использовали ExtJS 4.1 Поражает мощь Ext-а, можно написать собственную веб операционную систему. На данный момент участвую в проекте «Смартфон банкинг» выбор сделали в пользу jQuerymobile. Очень даже понравилось относительная легкость использования. По сути то что сделано на ExtJS можно сделать и с помощью jQuery, но объем кода увеличиться в разы. Но когда тебе надо просто добавить динамику или несколько проверок на стороне клиента то подключать ради этого ExtJS и писать всю страницу на нем скажем так излишне. А самому писать кросплатформенный код на чистом JS тоже, скажем так зачем изобретать велосипед. Каждый хорош по своему. Всем счастливо

  • zaycker

    хотя вы наверное правы и я зря подумал, что вы оправдываете писателя ))) аналогия «сравнивать не сравнимое»… тонко, я жираф )))

  • > Как вы себе представляете сравнивать метровый фреймворк с кучей контролов
    > из коробки с маленьким инструментом для работы с ДОМом
    Ну на этом уровне можно сравнить как Perl или PHP с .NET

    • zaycker

      Кхм. А кто их сравнивает, простите узнать? ))) вернее, тут даже не так… эммм… сравнивать язык и фреймворк… как мясо и котлеты что ли. вообщем, какая-то не аналогичная аналогия ))) донэт ещё можно сравнивать с жабой, но в контексте неких платформ что ли, а с интерпретируемыми языками как-то не в кассу )) опять же, задачи разные. perl с очень большой натяжкой можно где-то назвать языком прикладного программирования, про пых я вообще молчу, а дотнэт таки для этого очень даже подходит…

  • zaycker

    Нда, сравнивать jq и Ext-а сродни сравнению блокнота и полноценной ide. Как вы себе представляете сравнивать метровый фреймворк с кучей контролов из коробки с маленьким инструментом для работы с ДОМом и прочей «сайтовой» мелочью? Сравнение некорректно.

    ExtJS можно ставить с баттлах с хотя бы jq UI, Dojo с их dijit’ами, яхушным UI, но не рядом с jq обыкновенным. Задачи разные. jq, как и mootools, некоторым образом proto и прочие — всё это для сайтиковых баловств. А реальные фреймворки, которые хотя бы фреймворками обозвать можно (а не «библиотечками») используются в основном для бэкэндов, полноценных UI корпоративных приложений, где даже верстальщиков часто нема — вёрстку делают js программисты js кодом. Задачи разные.

    Пусть скоростя позволяют, только ленивый или глупый программер повесит на фронт метровый фреймворк, из которого будет использовать 0.1% (именно столько в Ext-е написано для работы с вёрсткой, как таковой). Айдишники в Ext-стайле носят практический характер — компоненты создаются обязательно с уникальным айдишником, иначе при работе с компонентами с одинаковыми айди случаются эпик фэйлы, сложно ловимые брейками и коллстэками.

    И скорость выборки элемента по айди, естестно, не в сравнении выше, нежеле по какому-угодно-захотите селектору (но это, конечно, «сомнительный плюс» для людей, использующих инструмент, построенный на sizzle, когда уже давно есть более скоростные вещи, тот же yass).

    Попробовать Ext или выполнить маленькую задачку на лансе на Ext-е — это далекоо не знать ExtJS. В крупных компаниях, создающих большие апплекухи с UI мордами на web-технологиях, программисты ExtJS — это должность.

    И е*атни там, масштабов, при полноценном ООП-программинге, замечу, не в пример больше, чем в jq. ))) Реально, как муху со слоном сравнили ))

    Если мне на лансе приходит задание на сайт — я юзаю либо то, что находится в движке из ТЗ (если джумла — то мутулс, если друпал — то jq и т.д.), либо dojo, если у меня есть право на имхо ))) а если мы на работе строим UI апплекухи картографического сервиса, то это ExtJS, OpenLayers, GeoExt и прочие.

    И вы ни в жизЬ не напишете оное на jq-обыкновенном, ибо рук не хватит ))) вот так…

    • Так это вы мне предъявляете? Я с вами ни коим образом не спорю и всячески поддерживаю, так как имел опыт работы и с тем и с другим. Вы автору этой тупости напишите!

  • fm

    Про 42% это не с потолка взятая цифра! Если забить в гугле, он скажет: Ответ на главный вопрос жизни, вселенной и всего такого.

    Книга Адамса Дугласа) Илья с яваскрипт.ру наверное, намерянно жестко стебанул.

  • Kinestetic

    Ext удобен для построения одностраничных веб-интерфейсов. Имеет удобные инструменты хранения и обработки данных. Меня очень радует, что не нужно дописывать к js еще и html. Но за все эти плюшки приходися платить некоторым весом приложения и скоростью выполнения. Ext — фреймворк для приложений.

    jQuery шикарен скоростью и легковесностью. Идеален для сайтов — моргалок, сдвигалок, свистелок и перделок для него написано великое множество.

    Эти 2 фреймворка «заточены» под разные задачи. Тоже самое что сравнивать джип и спортивную машину. Не ругайтес, господа.

  • Peter Panov

    прочитав сравнения о JQuery и ExtJS сразу понял что товарисч с jquery просто напросто вообще не дружит, ибо с Jquery не знаком… да и в данный момент ExtJS использует Jquery … )))
    в принципе ExtJS используется для построения UI… если ему не нравится JqueryUI
    есть ещё классная либа для тех же целей что и ExtJS — http://jeasyui.com/

  • alex

    Здесь ведь пациент, зачем троллить пациентов? 🙂

  • Valentin

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

    • Вы без тестирования обновленной версии сразу внедряете ее в боевой проект?

      • Valentin

        Если честно, в Вашем вопросе — Вы без тестирования обновленной версии сразу внедряете ее в боевой проект? — я так и не понял, что вы хотели этим сказать….. вы хотите сказать, что я буду к примеру 30 проектов буду тестить на отдельном сервере…. глупость. Всё идёт как раз в боевом режиме, делаете бекап нужных файлов, обновляете и вперёд по цепочке…..
        Но согласитесь, когда у вас работает не один проект несколько лет и Вам нужно (хотел написать — всё время, но это не правда, всего один раз у меня было, но серьёзно) все их обновить….
        Смотрите, я не хочу устраивать халивары. Во многих проектах для фронта я использую jQuery, так как лучше его знаю, я не отрицаю этого. В ExtJs тоже свои трабболы, в Опере например.
        Выше человек написал — Противопоставление ExtJS и jQuery занятие глупое — полностью с ним согласен на 100%.
        Автор убитой статьи — соглашусь, погорячился (и даже сильно погорячился).
        А почему я коммент написал? Попал в такой момент, как раз с ExtJS работал…..

  • DeannRie

    Хаха))) Прикольная статья 🙂

  • Dmitry
  • Пастернака я не читал, но скажу.
    Противопоставление ExtJS и jQuery занятие глупое. Особенно если докапываться до такой ерунды как «В jQuery Используется знак $ (доллар)».

  • Сашка_из_Шебекино

    …или товарищ только поверхностно jQuery
    Что гораздо вероятнее, або будь он супер-программистом, то такого бы не написал.

    • Солидарен. Говорить про селекторы, что это — зло, просто абсурд!

  • Хех, похоже товарищ был не в себе