Re[8]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.07 12:34
Оценка:
Z>Пример с алертом был утрирован СПЕЦИАЛЬНО!

И именно поэтому он некорректен. ПОтому что это — синтетический пример, который ничего не доказывает.

Я привел тебе гораздо более реальный пример, который ты благополучно проигнорировал.
Тултип в 36КБ против jQuery + тултип в 29.7КБ

Или тот же пример с $('a.ajax')...

Эти примеры ты активно игнорируешь, хотя они показывают, что код ручками проигрывает коду, основанному на jQuery.

Z> Чтобы продемонстрировать избыточность кода задаче. Очень похожие утрированные примеры (подвесить клик на якорь или добавить класс и т.п.) используются в большинстве туториалов. Общий посыл при этом — смотрите и учитесь, как просто и легко можно это сделать по сравнению с чистым javascript. Хотя на самом деле (вообще не понимаю, как можно об этом ещё и спорить) отдельная задача и даже несколько связанных задач решаются руками проще/оптимальнее/качественнее, чем с использованием большого избыточного (априори всегда избыточного) пакета. Тем более чужого. Тем более javascript-пакета. Тем более в исходники которого, как оказалось, никто и не смотрит.


Если хочешь, я напишу статью "Advanced uses of jQuery". Хотя она никому нафиг не сдалась, потому что через два дня после работы с jQuery люди сами начинают писать код любой сложности. Да в туториалах можно найти полезную инорамцию, идущую дальше, чем простые примеры (например, My First ExtJS DataGrid).

А насчет отдельных задач...

Задача 1. У меня на странице есть ссылки с классом .ajax. Необходимо сделать так, чтобы при щелчке на эти ссылки аяксом подгружалась страница, находящаяся по адресу в href соответствующей ссылки, а содержимое той страницы загружалось в элемент с id="ajax_result" (например, нечто похожее реализовано в этом тултипе и у меня на странице).

Показываю в последний раз :
<a href="/test1.html" class="ajax">Ссылка 1</a>
<a href="/test2.html" class="ajax">Ссылка 2</a>

// У меня на странице есть ссылки с классом .ajax
$("a.ajax")
    .click(           // Необходимо сделать так, чтобы при щелчке на эти ссылки
        function(){    
            $.get(     // аяксом подгружалась страница
                $(this).attr("href"), //находящаяся по адресу в href соответствующей ссылки
                callback
            )
        }
    );

function callback(result){
    $("#ajax_result").append(result); // а содержимое той страницы загружалось в элемент с id="ajax_result"
}


Задача 2. Изменить задачу 1 так, чтобы тоже самое работало для всех ссылок в элементе с id="other":

<div id="other">
    <a href="/test1.html">Ссылка 1</a>
    <a href="/test2.html">Ссылка 2</a>
</div>

$("#other a")... // остальной код такой же


Ваш ход. Можно использовать "чистый" JS или самописные фреймворки.

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


Просто таки гигантский пакет. Целых 20КБ кода

Z>Но в этом смысле сразу возникает парадоксальная ситуация — программист делает большой суръёзный javascript-проект, что предполагает всё-таки владение предметом, и при этом он не в состоянии предложить свои собственные решения, которые бьют строго в заданную оптимальную точку.


Почему считается, что оптимальная точка — это, например, умение написать кроссбраузерный аякс, а не, например, taconite на основе уже готового и кроссбраузерного аякса и готовой кроссбраузерной выборки по селекторам? Я лучше напишу taconite, чем в очередной раз заново писать низкоуровневый код.

Z>Почему так происходит? Само собой, ни один из нас не признается в своей слабой подготовке или в нехватке времени, или в нехватке браузеров, или в недостатке кросс-браузерного опыта, или в ещё в чём, не знаю


Я, по-моему, уже не раз говорил, что наша задача — это не разрабатывать свой собственный javascript-фреймворк, а разрабатывать продукт.

Яркий пример. Wordpress с версии 2.2 используют jQuery. Почему они не написали свой собственный фреймворк? Потому что их задача — выпустить оптимальный кросс-браузерный форумный пакет, а не разрабатывать велосипеды. У них есть задачи поважнее и поинтереснее, чем бороться с браузерами и тестировать Javascript на двух десятках платформ. Им проблем с кросс-браузерным CSS хватает.


Z>Заступайтесь на здоровье, друзья, но только в узком профессиональном мире фреймворков, сражаясь там в войне с Prototype.js или ещё с кем, но не учите мир жить. Не гоните волну на javascript, не отталкивайте он него людей, не учите псевдо-коду, не учите плохому псевдо-коду, вместо книг "Learning jQuery" пишите книги "Learning Javascript"...


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

Окошки в windows api требуют кучи кода:
NT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine, int nCmdShow)
{
    MSG        Msg;
    HWND       hWnd;
    WNDCLASSEX WndClsEx;

    // Create the application window
    WndClsEx.cbSize        = sizeof(WNDCLASSEX);
    WndClsEx.style         = CS_HREDRAW | CS_VREDRAW;
    WndClsEx.lpfnWndProc   = WndProcedure;
    WndClsEx.cbClsExtra    = 0;
    WndClsEx.cbWndExtra    = 0;
    WndClsEx.hIcon         = static_cast<HICON>(LoadImage(hInstance,
                                        MAKEINTRESOURCE(IDI_ANATWND),
                                        IMAGE_ICON,
                    32,
                                        32,
                    LR_DEFAULTSIZE));
    WndClsEx.hCursor       = LoadCursor(NULL, IDC_ARROW);
    WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClsEx.lpszMenuName  = NULL;
    WndClsEx.lpszClassName = ClsName;
    WndClsEx.hInstance     = hInstance;
    WndClsEx.hIconSm       = static_cast<HICON>(LoadImage(hInstance,
                                       MAKEINTRESOURCE(IDI_ANATWND),
                                       IMAGE_ICON,
                                       16,
                                       16,
                                       LR_DEFAULTSIZE));

    // Register the application
    RegisterClassEx(&WndClsEx);

    . . . 

    return 0;
}


Потом всякие плохие дяди, которые не хотели писать эти кучи кода вручную, начали придумывать разные фреймворки, такие как wxWidgets, Qt и даже MFC и WTL или HTMLayout. Все для того, чтобы можно было написать что-то вроде
MainWindow mainWin;
mainWin.show();


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

В веб-программировании — то же самое. Почему бы не взять уже готовый, да еще и бесплатный, но дествительно хороший и быстрый фреймворк и сосредоточится на поставленных передо мной задачах, а не писать все то же самое с нуля? Только потому что оно "фи" чужое? Странные подходы. С такими подходами мы бы давно в DOS'е сидели...

Z>Не знаю, что до меня пытаются тут донести, но про портянки я уже понял, это типичный такой наезд в стиле "лучше уже не бывает, не выёживайся", а иначе — докажи. Во-первых, не судите по себе , а во-вторых, отказывать в профессионализме тем, кто не использует js-фреймворки в своей программистской работе (или большую часть работы делает руками), по меньшей мере неуважительно по отношению к вашим же коллегам. Люди пишут прекрасный код. Люди пишут ужасный код. Так было, есть и будет.


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

D>>А потом еще копипайстить из одного проекта в другой — если снова заходите использовать...


Z>Эти доводы я принимаю и не принимаю одновременно, согласитесь, что всё зависит от ситуации. Компании "A", построившей все свои проекты на базе JSLibrary №13 ваши jsQuery-наработки даром не нужны. Но, замечу, всегда будет нужен ваш опыт в отрыве от любой либы...


Отучаемся говорить за всех. Мне известно много случаев, когда компания "А" с радостью переходила на грамотный фреймворк, потому что избавлялась от кучи геморроя и головной боли.

D>>Странные посты против фрейворков вообще, вы вот и на сервер-сайд наверное никаких фреймворков не используете, сами GET/POST валидируете и популируете, постинг каждой формы по новой все этапы реализуете, различные утилитные функции, велосипеды изобретаете на каждом шагу наверное...


Z>Это посты не против либ как таковых вообще, пользуйтесь, если нравится, а посты против того, что кто-то имеет смелость сравнивать javascript vs. jQuery или javascript-программирование vs. псевдо-программирование.


Что тако псевдо-программирование?

Например, taconite — это псевдо-программирование? Или, скажем, Interface. Или, скажем, Ext?


dmitriid.comGitHubLinkedIn
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.