Re[4]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 26.07.07 11:11
Оценка:
I>>>обычно у программистов уже есть свой оверлей со всеми стандартными функциями, а переделывать синтаксис орбражений в DOM зачем? XPath? реализуется если надо простым регспом, причем на стандартном сайте имхо такие извраты абсолютно не зачем.

M>>Там не только XPath, там и CSS селекторы. Которые во много раз удобнее, чем getElementById + getElmentsByTagName

I>Кстати говори XPath не полный к сожелению. мне бы гораздо удобнее был XPath, хотя селекторы тоже интересно.

XPath я, например, вообще не использую (разве что $("elem[@attr='']")). Необходимость получать элементы по интересным комбинациям CSS-селекторов встречается чаще. И обычно в таких комбинациях:
$("#myid > div")
$(".articles div:nth(odd)")


и т.п.

Полный XPath поддерживать сложно, потому что все это — эмуляция, так как браузеры не обеспечивают нативную поддержку ни XPath ни CSS selectors

I>>>Деревья, табы, ajax? обычно это стандартные контролы на стандартной обвязке там где оно надо — проинклюдили скрипт вызвали функцию и все.


M>>Что такое стандартные контролы в стандартной обвязке?

I>Имеется ввиду что есть куча контролов уже написанных "самих в себе" требующих лишь их проинклюдить и вызвать

Не такие уж эти контролы и стандартные

Мы, например, используем такие же "стандартные" контролы и для jQuery: Tabs и календарь

M>>Что за свои шаблонизаторы? В статье об этом ни слова

I>Просто такаяже распространенная тема как и фреймворки. Шаблонизаторы модель "данные отдельно от дизайна" например :D

Ааа. MVC. Это лучше всего разруливается на стороне сервера, чем клиента.

M>>Теперь развернутый ответ.


M>>Что такое фреймворк? Это набор функций, облегчающий выполнение каких-то действий. Каждый раз, когда программист говорит "обычно у программистов уже есть свой оверлей со всеми стандартными функциями", это надо читать так: "а у нас уже свой фреймворк используется".

I>Так оно и есть, мне просто интересно почему именно такой способ используете, чем он лучше чем набор DOMа + несколько небольших функций. быстродействие то ведь страдает.

Почему же страдает? Вот сейчас сделал замер: Общая стоимость загрузки всей страницы — 1.7 секунд (без яваскрипта). Профайлер дал (264.365ms, 3915 calls) для JS. Это — на одной из самых тяжелых страниц. На нее навешано 200 KB (!) только яваскрипта. Путем сжатия всех библиотек и оптимизации это можно снизить килобайтов до 50

I>Ну почемуж:

I>вот кусок очень старой фии:
I>

I> function GetElementByProp.internal( o ) {
скип...
I> }

I>


I>За код не ручаюсь — по памяти писал — ну чтото типа этого и производные от него.

I>С помощью нее достаточно просто путешествовать и достаточно быстро. Но опережая Ваши возражения — конечно не так удобно, как с jQuery, однако гораздо быстрей.

Зачем мне быстрей, если мне надо удобно Да и разницу в 10-20 миллисекунд вряд ли кто заметит: http://dev.jquery.com/~john/slick/

I>Это знаете, был такой холивар в фидо давано давно — что тербуется бизнес продукут — удобство клиентам, либо же простота

I>и скорость разработки. Это я в том смысле что выигрывая в удобности для программиста обычно приложение проигрывает в скорости выполнения для клиента.

Не в случае с jQuery. Нет, конечно, можно наворотить тааакооого!

M>>// находим все элементы div внутри элемента с id="example"

I>GetElementByProp( document.body, "id", "example" )[0].getElementsByTagName("div")
I>ну илиже GetElementByProp( document.body, "id", "example" )[0].GetElementByProp( document.body, "tagName", "div" ),
I>но второй медленнее

Это всяко будет медленнее, чем getElementById

M>>Причем такие проблемы возникают на самом деле чаще, чем кажется. Просто работа с чистым JS или слабым фреймворком заставляет заранее избегать таких постановок задач. С jQuery становится нестрашен практически по-любому сформированный документ.


I>ну если честно, у меня и при plain js таких проблем не возникало. Они обычно возникают изза плохо продумывания и алгоритмизации, а также изза недостаточной универсальностти подходов при программировании. Если серъезно обдумать проект и набросать вехи на бумаге — обычно не встречается таких проблем. Это так называемый "дизайн программы"


У нас был такой случай. Выводится на экран довольно большая таблица с данными. В какой-то момент мы поняли, что надо визуально показывать юзеру, надж какой строчкой в таблице он находится. Вписывать в каждый tr onmouseover не хотелось. Плюс хотелось, чтобы при клике выбранная строка меняла свой цвет... В общем:

    $(document).ready(
        function() {
            $("#blocks tr") // находим все tr внутри элемента с id="blocks"
                .hover(
                    function() {  // onmouseover
                        var t = $(this);
                        if(t.attr('class') != 'selected')
                            t.css("background-color", "#efefef");
                        else
                            t.css("background-color", "#FFFF66");
                    },
                    function() { // onmouseout
                        var t = $(this);
                        if(t.attr('class') != 'selected')
                            t.css("background-color", "#fff");
                        else
                            t.css("background-color", "#FFFF99");
                    }
                )
                .click( // onclick
                    function() {
                        var t = $(this);
                        t.toggleClass('selected');
                        if(t.attr('class') == 'selected')
                            t.css("background-color", "#FFFF66");
                    }
                );
        }
    )


M>>Например, один мой товарищ получает списки цен в виде HTML. Ему надо выводить сумму. Решение? Простейше на jQuery.

I>ну список цен в виде HTML — это по моему самый простой пример неправильного "дизайна" — не считаете? :D

в том случае не было вариантов — файл он получал сос тороны и изменить ситуацию было нельзя.

I>Хотя если с таким столкнуться, я бы не стал загружать спсиок в DOM — зачем? проще пропарсить регспами будет в данном случае — и быстрей гораздо? я не прав?


сложно сказать. в той его ситуации было легче использовать jQuery. Потому что парсинг HTML — все же нетривиальная вещь.

M>>Решение занимает четыре строчки. Для того, чтобы его написать, мне понадобилось меньше пяти минут. И так — во всем

I>Спс, хоть один человек толково объяснить смог. а не затруднит ответить на вопрос?
I>всежтаки в серъезных проэктах очень критично две вещи — быстродействие и долгое незакрыти браузера ( у ff кстати есть офигенная привычка разрастаться от этого в памяти при использовании объектов, у IE + к этому — начинаются тормоза и он в конце концов умирает — в 6-ке было так 7 не мучал еще ), что можно сказать в отчношении jQuery?

Не знаю. У меня ни проблем с быстродействием ни проблем с закрытием браузера не было
Тем более, что jQuery — это не библиотека типа script.aculo.us. Она не содержит виджетов, контролов и прочая и прочая. Она является очень простым фундаментом, на основе которого можно сделать очень многое — в том числе и виджеты и контролы и проч. Но при этом уже "голый" jQuery — это гигантское ускорение разработки, когда нужно довольно много манипулировать DOM'ом или работать с AJAX'ом


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