"За" и "против" библиотек работы с DOM и пр.
Почти досконально изучив jQuery, задался вопросом, стоит ли разбираться в "безбиблиотечной" работы в, первую очередь, с DOM? Конечно, олд-скульный программист в меня кинет помидор, но хотелось бы взвесить все "за" и "против", так как не знаю уже в чем разбираться (взялся за node.js, но так как он не востребован, пока что он входит в ряд "развлечений"). Итак, отличия (привожу только плюсы).
Нативный Яваскрипт + Такой программист крут в глазах соответствующих сообществ + Может сделать свою библиотеку с блекджеком и хукерами (смысл?) jQuery + jQuery может изучить даже идиот + Разработка на jQuery достаточно проста и требует в разы меньше времени (что является плюсом для заказчиков и исполнителей, так как деньги всё те же, а платят за результат) + Прост в дебаге из-за меньшего количества кода + Не нужно париться о кроссбраузерности + Больше заказов (примерно в Inf раз, сужу по буржуйскому фрилансу) |
Цитата:
|
Что то плюсов нативного js вы мало увидели. Причем какие то загадочные.
Я например вообще не разделяю особенно понятия jquery и js. JS - это все, а jquery - просто некая помощь, обертка по программированию DHTML Если, в качестве дальнейшего саморазвития, хотите вглубь копнуть, можете посмотреть как данный фреймворк сделан. Будет проще чем с jq. Можете extJS начать изучать, но он больше не для сайтов, а для web-приложений. Бывает востребован. |
Цитата:
Если какой-то метод jQuery работает чуть чуть не так, как надо, пишем ещё тонну кода, чтобы и jQuery использовать, и так, как нам надо. А вообще странная тема, изучайте, что хотите, кому какое дело. |
Цитата:
|
Цитата:
Я вот давно не могу понять, зачем в функцию передавать undefined в качестве аргумента. и в jQuery и в этой библиотеке есть такой момент. |
FINoM
Чтобы при запросе undefined интерпретатор не искал его во всех областях видимости, пока не дойдёт до window. Что-то в этом роде. Байтодрочерство, одним словом. |
Не хочется плодить тем с нубскими вопросами, объясните следующую вещь, пожалуйста:
Вот в jQuery можно написать $(nodes).method(); Как без оператора new и дополнения прототипов это сделать? |
FINoM
Только по-дурацки. В функции $ цеплять на объект-результат функции все нужные методы. function $(a) { var r = {}; for (var i = 0; i < a.length бла-бла-бла ... r[a[i]] = tratata(a, i); r.method = function () {...}; return r; } $([]).method(); |
Matre, а как в таком случае писать плагины?
В jQuery например они создаются так: $.prototype.newMethod = ... Я не могу понять, прототип чего именно. |
По сути я просто хочу повторить эффект jQuery, вызывать некую функцию (например, $), передавать туда htmlnode или nodelist, и вызывать методы работающие с содержимым параметра, с возможностью не лезя в код библиотеки добавить новые методы.
|
Цитата:
function $(...) { var r = {}; ... for (var i in $.prototype) r[i] = $.prototype[i]; ... } $.prototype.ddd = function () {...}; В-общем, бред. А чем же Вам неугодны обычные прототипы? |
Цитата:
Цитата:
|
Каждый раз заново инициализировать методы для каждого объекта — вот это плохо.
|
Точно.
Значит вопрос еще актуален. Спасибо. |
Тут всё просто. Перегоняем массив в создаваемый функцией объект, а в плагинах работаем с ним как с обычным массивом:
function $(...) { return new $.init(...); } $.init = function (...) { var I = 0; for (...) this[I++] = ... this.length = I; }; $.prototype.plugin = function () { for (var i = 0; i < this.length; i++) ... }; |
Цитата:
Цитата:
|
Matre, круто, спасибо. Только зачем это: this.length = I; ? Понимаю, если бы нужно было очищать список от излишних узлов, но функция $ вызывается единожды, при создании списка узлов, а фильтровать и модифицировать элементы списка будем через методы.
И зачем создавать методы $ через prototype? $.plugin не прокатит? Цитата:
Цитата:
Не знаю как это позиционировать, но возьму себе за правило. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 23:18. |