jQuery – Javascript нового поколения
От: Dmitrii 'Mamut' Dimandt Швеция http://dmitriid.com
Дата: 25.04.07 14:09
Оценка: 2521 (67) +2
Статья:
jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


Авторы:
Dmitrii 'Mamut' Dimandt

Аннотация:
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: _Oleg_ Украина  
Дата: 25.04.07 20:45
Оценка: +1
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>Статья:

DMD>jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


DMD>Авторы:

DMD> Dmitrii 'Mamut' Dimandt

DMD>Аннотация:

DMD>В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.

Ссылка не открывается.

Внутренняя ошибка сервера

Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 26.04.07 07:34
Оценка:
_O_>Ссылка не открывается.
_O_>

_O_>Внутренняя ошибка сервера


Уже открывается. На серевер какие-то проблемы были


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: 12345_ Россия http://javascript.aho.ru
Дата: 26.04.07 16:05
Оценка:
Где там отрицательные оценки ставить? : ) Выложено только начало, ссылки на коды нет. (Тут — немного полнее: http://ouch.kiev.ua/2007-04-17/1299.html#more-1299 , http://ajaxian.com/by/topic/jquery/ ) По одному примеру — я тоже могу определить функцию F(), которая весь сайт выведет.
Re[4]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.04.07 06:17
Оценка:
Здравствуйте, 12345_, Вы писали:

_>Где там отрицательные оценки ставить? : ) Выложено только начало, ссылки на коды нет. (Тут — немного полнее: http://ouch.kiev.ua/2007-04-17/1299.html#more-1299 , http://ajaxian.com/by/topic/jquery/ ) По одному примеру — я тоже могу определить функцию F(), которая весь сайт выведет.


Не надо мне отрицательные оценки ставить

Это фича РСДНа. Полная версия статьи появляется где-то через месяц после выхода печатной версии журнала. Это — как бы анонс


dmitriid.comGitHubLinkedIn
Re[5]: jQuery – Javascript нового поколения
От: _Oleg_ Украина  
Дата: 27.04.07 09:39
Оценка: :))
Здравствуйте, Mamut, Вы писали:

M>Здравствуйте, 12345_, Вы писали:


_>>Где там отрицательные оценки ставить? : ) Выложено только начало, ссылки на коды нет. (Тут — немного полнее: http://ouch.kiev.ua/2007-04-17/1299.html#more-1299 , http://ajaxian.com/by/topic/jquery/ ) По одному примеру — я тоже могу определить функцию F(), которая весь сайт выведет.


M>Не надо мне отрицательные оценки ставить


M>Это фича РСДНа. Полная версия статьи появляется где-то через месяц после выхода печатной версии журнала. Это — как бы анонс


Точно фича, не глюк ?
Re[6]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.04.07 11:21
Оценка: :)
M>>Это фича РСДНа. Полная версия статьи появляется где-то через месяц после выхода печатной версии журнала. Это — как бы анонс

_O_>Точно фича, не глюк ?


Фича Зуб даю


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 04.07.07 09:33
Оценка:
На сайте теперь полная версия. Поднимаю наверх в надежде на оценки


dmitriid.comGitHubLinkedIn
Re[2]: jQuery – Javascript нового поколения
От: kpumuk Украина http://kpumuk.info/
Дата: 04.07.07 11:01
Оценка:
Здравствуйте, Mamut, Вы писали:

M>На сайте теперь полная версия. Поднимаю наверх в надежде на оценки


Окей. Сразу же первый пример некорректен

$$("table").each(function(table){
  Selector.findChildElements(table, ["tr"])
    .findAll(function(row,i){ return i % 2 == 1; })
    .invoke("addClassName", "odd");
});


Во первых, чтобы получить элемент #table, нужно юзать функцию $, а не $$. Во-вторных, к чему такие извращения?

$$('#xxx tr:nth-child(odd)').each(function(el) {
    el.addClassName("odd");
});


Пример с JQuery сразу делает не то, что делает прототайповский

$("tr:nth-child(odd)").addClass("odd");


Здесь для всех таблиц добавляется "зебра".
Re[3]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 04.07.07 11:19
Оценка: :)
M>>На сайте теперь полная версия. Поднимаю наверх в надежде на оценки

K>Окей. Сразу же первый пример некорректен


Мопед не мой.. кхм

На момент написания статьи он был корректен

K>Во первых, чтобы получить элемент #table, нужно юзать функцию $, а не $$. Во-вторных, к чему такие извращения?


K>Пример с JQuery сразу делает не то, что делает прототайповский


K>
K>$("tr:nth-child(odd)").addClass("odd");
K>


K>Здесь для всех таблиц добавляется "зебра".


В прототайповском — тоже. $$("table") выбирает все таблицы в документе: http://prototypejs.org/api/utility/dollar-dollar Правда, сейчас в него добавили полную поддержку CSS 2.1, так что да, пример становится некорректным


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: kpumuk Украина http://kpumuk.info/
Дата: 04.07.07 11:20
Оценка:
Здравствуйте, kpumuk, Вы писали:

K>Здравствуйте, Mamut, Вы писали:


M>>На сайте теперь полная версия. Поднимаю наверх в надежде на оценки


K>Окей. Сразу же первый пример некорректен


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

Но пример на прототайпе все равно слишком длинный Прямой эквивалент JQuery-варианта будет такой:

$$('tr:nth-child(odd)').each(function(el) {
el.addClassName("odd");
});

В общем не очень удачную иллюстрацию мощи JQuery Вы выбрали
Re[4]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 04.07.07 11:30
Оценка:
K>Но пример на прототайпе все равно слишком длинный Прямой эквивалент JQuery-варианта будет такой:

K>$$('tr:nth-child(odd)').each(function(el) {

K> el.addClassName("odd");
K>});

K>В общем не очень удачную иллюстрацию мощи JQuery Вы выбрали


Ага. Увы Но пусть будет. Потому что "внушаить"


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: Borg  
Дата: 05.07.07 03:28
Оценка:
Здравствуйте, Dmitrii 'Mamut' Dimandt

Здраствуйте я вот пошёл на сайт http://jquery.com/ что бы скачать сию приблуду, и был немало удивлён вот чем, там доступны 2 версии для скачивания сжатая и нет. Меня заинтресовала сжатая версия, так как в ней совершенно не понятный JavaScript код, вернее там используется какая-то система сжатия.... кто-нибудь может просветить на этот счёт как она работает и где такую взять?
Re[2]: jQuery – Javascript нового поколения
От: Fenrir  
Дата: 05.07.07 05:23
Оценка: +1
B>Здраствуйте я вот пошёл на сайт http://jquery.com/ что бы скачать сию приблуду, и был немало удивлён вот чем, там доступны 2 версии для скачивания сжатая и нет. Меня заинтресовала сжатая версия, так как в ней совершенно не понятный JavaScript код, вернее там используется какая-то система сжатия.... кто-нибудь может просветить на этот счёт как она работает и где такую взять?

"Сжатая" версия просто прогнана через обфускатор. Конкретно jQuery пакована этим: http://dean.edwards.name/packer/ (кажется).
Re: jQuery – Javascript нового поколения
От: vt_vitus  
Дата: 06.07.07 05:50
Оценка: -1
>Как видно из этого примера, библиотека jQuery позволяет находить простые и изящные решения для, казалось бы, сложных задач.

Из этого примера, хорошо видно как понятно работающие решения заменяют решениями из разряда _фиг_поймёшь_как_это_работает.
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 06.07.07 07:05
Оценка: +3
>>Как видно из этого примера, библиотека jQuery позволяет находить простые и изящные решения для, казалось бы, сложных задач.

_>Из этого примера, хорошо видно как понятно работающие решения заменяют решениями из разряда _фиг_поймёшь_как_это_работает.


Чем это:
$('#myid').css({
    backgroundColor: "#888",
    color: "gray",
    width: "100px"
})


непонятнее, чем

var el = document.getElementById('myid');
el.style.backgroundColor = "#888";
el.style.color = "gray";
el.style.width = "100px";


?

Для того, чтобы понять, как работает тот пример, достаточно хотя бы взшялнуть на справочник CSS-селекторов: http://rsdn.ru/article/inet/jQuery.xml#ESVAE
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.
и на главу "элементарно, ватсон": http://rsdn.ru/article/inet/jQuery.xml#EOD
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.
В этой главе подробно описано, как работает этот пример.

ЗЫ. Если хочется узнать, как же оно на самом деле работает, достаточно посмотреь в код jQuery, благо его там немного и он предельно понятен


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: chardex Россия  
Дата: 07.07.07 14:02
Оценка:
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


Сайт http://interface.eyecon.ro/ коряво отображается и потом вешает IE7. Хотя в мозилле все работает.
Re[2]: jQuery – Javascript нового поколения
От: Блудов Павел Россия  
Дата: 08.07.07 07:16
Оценка: +3
Здравствуйте, vt_vitus, Вы писали:

_>Из этого примера, хорошо видно как понятно работающие решения заменяют решениями из разряда _фиг_поймёшь_как_это_работает.

В этом-то сама суть. Конечному пользователю хочется декларативно затать что конкретный элемент или группа элементов должны делать.
Как это реализовано им, конечным пользователям, совершенно безразлично.
И сила jQuery именно в том, что неискушённый web-мастер, посмотрев на парочку примеров лёгким и ненавязчивым движением получает у себя на странице закладки или приличное дерево. Раньше для этого нужны были глубокие познания в javascript и большой опят в борьбе с самостийностью браузеров.
Re: jQuery – Javascript нового поколения
От: Аноним  
Дата: 08.07.07 18:27
Оценка:
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>Статья:

DMD>jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


DMD>Авторы:

DMD> Dmitrii 'Mamut' Dimandt

DMD>Аннотация:

DMD>В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.

Есть одно довольно таки неприятное "НО" в IE происходит утечка памяти при анонимных функция которые очень часто используются в подобного типа библиотеках
Re[2]: jQuery – Javascript нового поколения
От: SeLarin Россия http://selarin.livejournal.com
Дата: 08.07.07 20:28
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Есть одно довольно таки неприятное "НО" в IE происходит утечка памяти при анонимных функция которые очень часто используются в подобного типа библиотеках

Ну что ж тут поделать. Если в МС написали кривой браузер, в котором течёт память при использовании анонимных функций, то это не повод для веб-разработчиков не пользоваться анонимными функциями.
... << RSDN@Home 1.2.0 alpha rev. 685>>
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 09.07.07 10:28
Оценка:
DMD>>В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.

C>Сайт http://interface.eyecon.ro/ коряво отображается и потом вешает IE7. Хотя в мозилле все работает.


Хм. У меня такого не наблюдается

Хотя в случае с ИЕ все может быть


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: Tomahawk  
Дата: 09.07.07 16:15
Оценка:
Подскажите пожалуйста, как используя jQuery динамически создать несколько элементов (скажем текстбоксов) и затем к ним обращаться как к массиву?

Т.е. сделать примерно следующее:


$("<input id='textBox' type='text'/>" +
  "<input id='textBox' type='text'/>" +
  "<input id='textBox' type='text'/>").insertAfter("#something");

$("#textBox")[0].val("one");
$("#textBox")[1].val("two");
$("#textBox")[2].val("three");


Последние 3 строки не работают, но то что мне нужно, думаю, отражают.
Re[2]: jQuery – Javascript нового поколения
От: Блудов Павел Россия  
Дата: 10.07.07 02:11
Оценка: 2 (1) +1
Здравствуйте, Tomahawk, Вы писали:

T>Подскажите пожалуйста, как используя jQuery динамически создать несколько элементов (скажем текстбоксов) и затем к ним обращаться как к массиву?


Во-первых,
$("#textBox")[1].val("two");
есть бессмыслица, т.к. "#" подразумевает вызов getElementById, который всегда возвращает один элемент.
Вообще, наличие нескольких элементов с одинаковым ID на одном уровне иерархии никакого смысла не имеет. Здесь нужно использовать css:
$("<input class='textBox' type='text'/>" +
  "<input class='textBox' type='text'/>" +
  "<input class='textBox' type='text'/>");

alert($(".textBox").length); // 3 штуки.


Для того, чтобы обратиться к n-ному элементу, нужно использовать функцию nth или eq. Окончательный результат будет примерно таким:

$("<input class='textBox' type='text'/>" +
  "<input class='textBox' type='text'/>" +
  "<input class='textBox' type='text'/>").insertAfter("#something");

$(".textBox:first").val("one");
$(".textBox:eq(1)").val("two");
$(".textBox:nth(2)").val("three");
Re[3]: jQuery – Javascript нового поколения
От: c-smile Канада http://terrainformatica.com
Дата: 11.07.07 01:02
Оценка:
Здравствуйте, Mamut, Вы писали:

DMD>>>В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


C>>Сайт http://interface.eyecon.ro/ коряво отображается и потом вешает IE7. Хотя в мозилле все работает.


M>Хм. У меня такого не наблюдается


Замечательный сайтик. Блокирует весь UI на XP.
Что ж там эти умельцы наваяли то...

M>Хотя в случае с ИЕ все может быть


IE7 особенно.
Re[4]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 11.07.07 08:37
Оценка:
C>>>Сайт http://interface.eyecon.ro/ коряво отображается и потом вешает IE7. Хотя в мозилле все работает.
M>>Хм. У меня такого не наблюдается
CS>Замечательный сайтик. Блокирует весь UI на XP.

Аааа. Я просто с Windows Server'а смотрел. На нем все нормально

CS>Что ж там эти умельцы наваяли то...


Просто доманстрации различных возможностей... Надо будет им отписать по жтому поводу.


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 24.07.07 11:17
Оценка:
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>Статья:

DMD>jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


Пара замечаний.

Нельзя параграф в параграф вкладывать. Понимаю, что пример, но всё ж.

В результате мы получим вот такой HTML:

<p><span>Ahoy</span>, how are you?<p>I'm fine</p></p>


Не верно. Правильно будет: "Любой элемент".
*Элемент Е, являющийся n-ым дочерним элементом своего родительского элемента.
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 24.07.07 11:49
Оценка:
A>Нельзя параграф в параграф вкладывать. Понимаю, что пример, но всё ж.
A>

A>В результате мы получим вот такой HTML:
A>

A><p><span>Ahoy</span>, how are you?<p>I'm fine</p></p>
A>


Это я стандарты не люблю

A>Не верно. Правильно будет: "Любой элемент".

A>
A>
A>
A>
A>
A>
* Элемент Е, являющийся n-ым дочерним элементом своего родительского элемента.


Спасибо! Вот, что копи-паст делает


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 24.07.07 12:02
Оценка:
Здравствуйте, Mamut, Вы писали:

M> Это я стандарты не люблю


Это ты плохой пример подаёшь. (:
Re[4]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 24.07.07 12:47
Оценка:
M>> Это я стандарты не люблю

A>Это ты плохой пример подаёшь. (:




Доберусь до дома, исправлю, вышлю редакции исправленный вариант


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 24.07.07 18:28
Оценка: 19 (2)
Здравствуйте, Mamut, Вы писали:

A>>Нельзя параграф в параграф вкладывать. Понимаю, что пример, но всё ж.

A>>

A>>В результате мы получим вот такой HTML:
A>>

A>><p><span>Ahoy</span>, how are you?<p>I'm fine</p></p>
A>>

M> Это я стандарты не люблю

Кстати, интересно. Если подсунуть Gecko вот такую разметку:
<p>
  <p>text</p>
</p>

то она будет исправлена для соответствия стандарту, и в итоге в DOM попадёт следующая разметка:
<p/>
<p>text</p>
<p/>

А вот манипулируя методами DOM параграф в параграф вполне можно вставить. Как в твоём примере.
Re: jQuery – Javascript нового поколения
От: ionicman  
Дата: 25.07.07 10:08
Оценка:
эээ ребяты.... а зачем это все? расскажите? ну мне просто интересно нахрена уменьшать скорость и так медленного js? или вы хотите сказать что синтаксис этой библиотеки проще чем стандартный? не, действительно реально ктото это использует и оно ему удобно?

обычно у программистов уже есть свой оверлей со всеми стандартными функциями, а переделывать синтаксис орбражений в DOM зачем? XPath? реализуется если надо простым регспом, причем на стандартном сайте имхо такие извраты абсолютно не зачем.

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

Я не критикую мне просто интересно — реально удобно чтоли? вот не понимаю я зачем изобретать все вермя велосипед. использовать различные СВОИ шаблонизаторы вместо xslt+xml, использовать фреймворки для JS. зачем?
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 25.07.07 14:33
Оценка: 8 (1) +2
I>эээ ребяты.... а зачем это все? расскажите? ну мне просто интересно нахрена уменьшать скорость и так медленного js? или вы хотите сказать что синтаксис этой библиотеки проще чем стандартный? не, действительно реально ктото это использует и оно ему удобно?

Я это реально пользую и это мне реально удобно.

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


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

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


Что такое стандартные контролы в стандартной обвязке?
Некоторые плагины приведены, как примеры того, что может являться плагином в jQuery

I>Я не критикую мне просто интересно — реально удобно чтоли? вот не понимаю я зачем изобретать все вермя велосипед. использовать различные СВОИ шаблонизаторы вместо xslt+xml, использовать фреймворки для JS. зачем?


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

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

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

Что такое jQuery? Это невероятно маленький (последняя версия — 20KB в сжатом виде) и один из самых быстрых доступных JS-фреймворков. То есть jQuery предлагает набор функций, облегчающих жизнь программисту.

Например, вот некоторые из проблем, вставшие перед разработчиками и решенные на jQuery:
http://rsdn.ru/forum/message/2589354.aspx
Автор: Mamut
Дата: 18.07.07

http://www.rsdn.ru/forum/message/2319225.aspx
Автор: Mamut
Дата: 25.01.07
(сравни объем кода на голом JS и на jQuery)
http://www.rsdn.ru/Forum/?mid=2508833
Автор: Mamut
Дата: 31.05.07

http://www.rsdn.ru/Forum/?mid=2321225
Автор: Mamut
Дата: 26.01.07

http://www.rsdn.ru/Forum/?mid=2334773
Автор: Mamut
Дата: 05.02.07

и т.п.

Эти всё короткие примеры, но они показывают, что даже самые непонятные запросы (чего, например, стоит вот этот
Автор: Mamut
Дата: 13.07.07
) на jQuery решаются легко и весело. Потому что набор функций в jQuery гениален до неприличия.

Пример. Код используется у меня в примерах по jQuery (надо бы их обновить...):
// находим все элементы с class="ex" (это ссылки)
// и присваиваем им в onclick функцию
$(".ex").click(
    function() // при клике по ссылке с class=".ex" будет вызвана эта функция
    {
        var a = $(this);

        // показываем элемент с id="loader"
        $("#loader").show("fast");      

        // находим элемент с id="example"
        $("#example") 
            .animate({height: "hide"}, "fast") // прячем его
            .find("#anchors").empty()          // в нем находим элемент с id="anchors" и очищаем его контент
            .end()                             // возвращаемся к элементу с id="anchors"
            .find("div").remove()              // находим все div'ы (внутри элемента с id="example") и удаляем их
            .end()                             // возвращаемся к элементу с id="anchors"
            .animate(                          // прячем (опять? видать баг в коде :) )
                {height: "hide"},          //   схлопываем по высоте
                "fast",                    //   быстро
                function()                 //   по завершении вызываем функцию, в которой
                {
                    // берем значение из аттрибута href кликнутой ссылки
                    // и подгружаем с этой ссылке контент с помощью ajax'а
                    $.get(a.attr("href") + "?" + Math.random(), handleResponse);
                }
            );

        return false;
    }
);


Этот пример показывает некоторые проблемы, которые на голом JS решаются неудобно:
// находим все элементы с классом ex и присваиваем им onclick
$(".ex").click(...

// аналог
var a = getElementsByTagName("a");
for(i = 0; i < a.length; i++)
{
    if(a.className == "ex")
    {
        a.onclick = ...
    }
}


Или:
// находим все элементы div внутри элемента с id="example"
$("#example").find("div")

// аналог
?????????


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

Например, один мой товарищ получает списки цен в виде HTML. Ему надо выводить сумму. Решение? Простейше на jQuery. См. http://dmitriid.com/jquery — "Excel руками". Решение занимает четыре строчки. Для того, чтобы его написать, мне понадобилось меньше пяти минут. И так — во всем


dmitriid.comGitHubLinkedIn
Re[2]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.07.07 02:38
Оценка:
Здравствуйте, chardex, Вы писали:
C>Сайт http://interface.eyecon.ro/ коряво отображается и потом вешает IE7. Хотя в мозилле все работает.
XP Prof SP2; IE 7.0 — всё ок.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.07.07 03:12
Оценка: +1
Здравствуйте, ionicman, Вы писали:

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

Не уменьшает.
I> или вы хотите сказать что синтаксис этой библиотеки проще чем стандартный?
Проще.
I>не, действительно реально ктото это использует и оно ему удобно?
Конечно.

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

Не смеши мои тапочки. XPath он регекспом реализовал. Для некоторых частных примитивных случаев действительно можно применить регексп. (хотя даже аналог p[class="content"] ты уже заколебешься регекспом воспроизводить). А дальше что? Напомню, регексп работает с текстом, а не с DOM. Как ты собрался доступ к элементу получать? Ну вот покажи мне, как на регекспах спрятать (display=none) все P c классом content.
I> причем на стандартном сайте имхо такие извраты абсолютно не зачем.
Что есть "стандартный сайт"? Вот это что ли?
Современные сайты далеко ушли от "хранилищ гипертекстовых документов". Кроме того, jQuery — скорее не для сайтов, а для веб-приложений. Для них специфичны повышенные требования к интерактивности.
I>Деревья, табы, ajax? обычно это стандартные контролы на стандартной обвязке там где оно надо — проинклюдили скрипт вызвали функцию и все.
Во-первых, "обычно" стандартные контролы представляют собой малопригодный отстой, нуждающийся в существенном обтачивании напильником.
Во-вторых, что ты будешь делать, когда не найдешь готового контрола?
В-третьих, на основе чего пишутся эти контролы? Ты же не думаешь, что их в капусте находят?
I>Я не критикую мне просто интересно — реально удобно чтоли?
Реально.
I>вот не понимаю я зачем изобретать все вермя велосипед. использовать различные СВОИ шаблонизаторы вместо xslt+xml, использовать фреймворки для JS. зачем?
А что, уже все фреймворки написаны?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: jQuery – Javascript нового поколения
От: _JoKe_  
Дата: 26.07.07 09:31
Оценка: 68 (2) +1
А>Есть одно довольно таки неприятное "НО" в IE происходит утечка памяти при анонимных функция которые очень часто используются в подобного типа библиотеках

дело вовсе не в анонимных функциях, а в том что в контекст замыканий кладется ссылка на DOM объект.
решается очень просто везде где пользуются ссылки на ДОМ заменить на строки с id, а где надо к объектам обратится делать
getElementByID(), давно так делаю нигде ничего ни капельки не течет
... << RSDN@Home 1.1.4 @@subversion >>
Re[3]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 26.07.07 09:57
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, ionicman, Вы писали:


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

S>Не уменьшает.
Дорогой мой, я те расскужо кой что — тока ты не обижайся :D
Есть у меня контрол самописный, небольшой — строчек 50-60. в нем динамически создаются элементы очень простецкой функцией на JS, типа createElement — примеров полно — если надо сорец кину. так вот на страничке таких контролов 10-12 штук, и если заменить вызов этой простецкой функции на более гемороидальное и большое document.createElement & тупое присваивание attributeNode скорость вырастает % на 35-40. Ты в jQuery.js заходил? зайди погляди. подумай, действительно ли не уменьшает. ну или можь мелкий бенчмарк забацать и проверить разницу getById.getById несколько раз и запросм jQuery.

I>> или вы хотите сказать что синтаксис этой библиотеки проще чем стандартный?

S>Проще.
Сугубо ИМХО — ну да ладно :D

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

S>Не смеши мои тапочки. XPath он регекспом реализовал.

Для простых случаев достаточно легко, для более сложных делается цепочка регспов, и при работе они в нужной последовательности перещелкиваются.
НЕ, я просто в шоке, человек использующий jQuery видимо даже ни разу в листинг ее не лазил — не ужто не интересно было?
Там кстати так и сделано. для быстроты правда коечто выкинуто из рекспов и реализовано через методы string, но суть таже.

S>собрался доступ к элементу получать? Ну вот покажи мне, как на регекспах спрятать (display=none) все P c классом content.

Кстати очень тупой вариант могу предложить — бежать тупо вперед по DOM, брать каждый объект-примитив — когда все в строчку засовывается и пробегать тупо аля /.*tagName='P'.*className='content'.*/ для примера вполне сгодится. тока надо глянуть что впереди в примитиве идет tagName или className

I>> причем на стандартном сайте имхо такие извраты абсолютно не зачем.

S>Что есть "стандартный сайт"? Вот это что ли?
За ответом что это есть походи по сайтам любых контор сайто девелопперских. Там разжовано 300 раз.

S>Во-первых, "обычно" стандартные контролы представляют собой малопригодный отстой, нуждающийся в существенном обтачивании напильником.

S>Во-вторых, что ты будешь делать, когда не найдешь готового контрола?
напишу сам достаточно быстро либо же воспользуюсь готовым паттерном, скаченным из библиотеки

S>В-третьих, на основе чего пишутся эти контролы? Ты же не думаешь, что их в капусте находят?

ээээ.....
"обычно у программистов уже есть свой оверлей со всеми стандартными функциями" типо выше написано было

S>А что, уже все фреймворки написаны?

Ну их достаточно на самом деле. Если уж ты так офигенно любишь fw — юзай Ruby-on-rails. Че, неужели плохой? :D
Re[3]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 26.07.07 10:30
Оценка:
Здравствуйте, Mamut, Вы писали:

I>>эээ ребяты.... а зачем это все? расскажите? ну мне просто интересно нахрена уменьшать скорость и так медленного js? или вы хотите сказать что синтаксис этой библиотеки проще чем стандартный? не, действительно реально ктото это использует и оно ему удобно?


M>Я это реально пользую и это мне реально удобно.

очень может быть. я по этому и написал чтобы выяснить кто и зачем пользуется.

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


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

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

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


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

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

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

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

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


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

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


M>Что такое jQuery? Это невероятно маленький (последняя версия — 20KB в сжатом виде) и один из самых быстрых доступных JS-фреймворков. То есть jQuery предлагает набор функций, облегчающих жизнь программисту.



M>Этот пример показывает некоторые проблемы, которые на голом JS решаются неудобно:

M>
M>// находим все элементы с классом ex и присваиваем им onclick
M>$(".ex").click(...

M>// аналог
M>var a = getElementsByTagName("a");
M>for(i = 0; i < a.length; i++)
M>{
M>    if(a.className == "ex")
M>    {
M>        a.onclick = ...
M>    }
M>}
M>


Ну почемуж:
вот кусок очень старой фии:

 function GetElementByProp( o, prop, propval ) {
  GetElementByProp.GEBarr = [];
  GetElementByProp.GEBprop = prop;
  GetElementByProp.GEBpropval = null;
  return GetElementByProp.internal( o )
 }

 function GetElementByProp.internal( o ) {
  if ( o.getAttribute && o.getAttribute( GEBprop ) == GEBpropval ) GetElementByProp.GEBarr.push( o );
  o = o.firstChild;
  while ( o != null ) {
   GetElementByProp.internal( o );
   o = o.nextSibling;
  }
 }


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

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

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

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

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


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

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

ну список цен в виде HTML — это по моему самый простой пример неправильного "дизайна" — не считаете? :D
Хотя если с таким столкнуться, я бы не стал загружать спсиок в DOM — зачем? проще пропарсить регспами будет в данном случае — и быстрей гораздо? я не прав?

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

Спс, хоть один человек толково объяснить смог. а не затруднит ответить на вопрос?
всежтаки в серъезных проэктах очень критично две вещи — быстродействие и долгое незакрыти браузера ( у ff кстати есть офигенная привычка разрастаться от этого в памяти при использовании объектов, у IE + к этому — начинаются тормоза и он в конце концов умирает — в 6-ке было так 7 не мучал еще ), что можно сказать в отчношении jQuery?
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
Re[5]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 26.07.07 11:40
Оценка:
M>
M>$("#myid > div")
M>$(".articles div:nth(odd)")
M>

Согласен, частенько бывает.
M>и т.п.

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


есть полная реализация на js XPath 1.0 100k


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

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

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

ага, оно самое


M>Не в случае с 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>>но второй медленнее

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

но быстрее jQuery :D


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


Вот здесь кстати интересно очень. Щас объясню почему — у моего движка в качестве шаблонов используется XSLT+XML.
Т.е. мне не надо в кажлдом tr чтото дпроисывать — я в шаблоне в ставлю в один tr, остальное все сделает XSLT — и при этом никакой работы на стороне клиента — по моему гораздо более проще и быстрей. Правда конечнр, если такое ДЕЙСТВИТЕЛЬНО требуется на стороне клиента — тогда jQuery конечно выручает, согласен.

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

I>>Хотя если с таким столкнуться, я бы не стал загружать спсиок в DOM — зачем? проще пропарсить регспами будет в данном случае — и быстрей гораздо? я не прав?
M>сложно сказать. в той его ситуации было легче использовать jQuery. Потому что парсинг HTML — все же нетривиальная вещь.
ну я так понимаю там были ячейки с цифрами — можно было бы чтото типа <td>([0-9]*)</td> — врядли чтото еще надо было.

M>Не знаю. У меня ни проблем с быстродействием ни проблем с закрытием браузера не было

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

Согласен, но всеж таки если не затруднит — я так понимаю что Вы плотно рабоатет на jQ, засечь начальный объем памяти браузера а затем в конце дня. Просто очень интересно. Я так понимаю стоит FF?
Re[6]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 26.07.07 12:27
Оценка:
M>>Полный XPath поддерживать сложно, потому что все это — эмуляция, так как браузеры не обеспечивают нативную поддержку ни XPath ни CSS selectors

I>есть полная реализация на js XPath 1.0 100k


Ого

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>>>но второй медленнее

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

I>но быстрее jQuery :D

Не думаю, чтобы настолько, чтобы это было заметно пользователю А выигрыш в скорости разработки налицо:
$('#example > div')
// vs.
GetElementByProp( document.body, "id", "example" )[0].getElementsByTagName("div")



I>Вот здесь кстати интересно очень. Щас объясню почему — у моего движка в качестве шаблонов используется XSLT+XML.

I>Т.е. мне не надо в кажлдом tr чтото дпроисывать — я в шаблоне в ставлю в один tr, остальное все сделает XSLT — и при этом никакой работы на стороне клиента — по моему гораздо более проще и быстрей. Правда конечнр, если такое ДЕЙСТВИТЕЛЬНО требуется на стороне клиента — тогда jQuery конечно выручает, согласен.

Это не всегда выгодно. Все же сотня записей onmouseover='что-то там' против одного вызова $('tr').hover опять же проиграет просто ценой размера страницы (и, как следствие, скоростью загрузки)

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

I>>>Хотя если с таким столкнуться, я бы не стал загружать спсиок в DOM — зачем? проще пропарсить регспами будет в данном случае — и быстрей гораздо? я не прав?
M>>сложно сказать. в той его ситуации было легче использовать jQuery. Потому что парсинг HTML — все же нетривиальная вещь.
I>ну я так понимаю там были ячейки с цифрами — можно было бы чтото типа <td>([0-9]*)</td> — врядли чтото еще надо было.

Ему надо было выводить сумму по колонкам. Или в какой-то определенной колонке. Там простыми регэкспами не отмахаешься.

I>Согласен, но всеж таки если не затруднит — я так понимаю что Вы плотно рабоатет на jQ, засечь начальный объем памяти браузера а затем в конце дня. Просто очень интересно. Я так понимаю стоит FF?


Это сложно сделать Это надо выделить машину, на которой надо запустить ФФ и ничего не делать Просто у меня и ФФ и Опера активно используются, они постепенно растут в памяти и сами Поэтому доля jQuery там будет незаметна (если она есть)

На самом деле сама задача поставлена не совсем корректно. Потому что есть, грубо говоря, пассивное использование яваскрипта и активное (применительно к документу).

Например:
$('a.clicker').click(
    function(){
        alert('yo');
    }
)

Это пассивное использование. Он один раз сделал attachEventListener и все — дальше все зависит от браузера (IE по-моему тек на этом, но не уверен)

С другой стороны есть активное манипулирование состоянием объектов и/или DOM'ом. Repaint and reflow: http://dev.opera.com/articles/view/efficient-javascript/?page=3

Это когда, например, по таймауту раз в десять секунд с сервера приодят данные и имзеняют, например, количесвто элементов на странице и их положение. Здесь уже Это зависит как от браузеров, так и от библиотеки. С этим активно борятся

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


dmitriid.comGitHubLinkedIn
Re[5]: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 26.07.07 13:24
Оценка:
Здравствуйте, Mamut, Вы писали:

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


Это не совсем так: http://developer.mozilla.org/en/docs/DOM:document.evaluate

А ты не знаешь, как организована поддержка XPath в jQuery? Она эмулируется для всех браузеров, или всё таки используется нативная реализация там, где это возможно?
Re[6]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 26.07.07 15:04
Оценка:
A>Это не совсем так: http://developer.mozilla.org/en/docs/DOM:document.evaluate

A>А ты не знаешь, как организована поддержка XPath в jQuery? Она эмулируется для всех браузеров, или всё таки используется нативная реализация там, где это возможно?


Эмулирует: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/selector/selector.js
Надо будет им подсказать


dmitriid.comGitHubLinkedIn
Re[6]: jQuery – Javascript нового поколения
От: Аноним  
Дата: 26.07.07 17:37
Оценка:
Здравствуйте, ionicman, Вы писали:

M>>
M>>$("#myid > div")
M>>$(".articles div:nth(odd)")
M>>

I>Согласен, частенько бывает.
M>>и т.п.

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


I>есть полная реализация на js XPath 1.0 100k


Можешь дать ссылку? Я как раз ищу реализацию стандартного XPath, которая будет работать в IE, Opera. (в Firefox она и так уже есть)
Re[4]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 02:44
Оценка:
Здравствуйте, ionicman, Вы писали:


I>Для простых случаев достаточно легко, для более сложных делается цепочка регспов, и при работе они в нужной последовательности перещелкиваются.

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

S>>собрался доступ к элементу получать? Ну вот покажи мне, как на регекспах спрятать (display=none) все P c классом content.

I>Кстати очень тупой вариант могу предложить — бежать тупо вперед по DOM, брать каждый объект-примитив — когда все в строчку засовывается и пробегать тупо аля /.*tagName='P'.*className='content'.*/ для примера вполне сгодится.
Ты примерчик-то напиши. А то языком молоть все горазды.
I>тока надо глянуть что впереди в примитиве идет tagName или className
О да. а также глянуть нащот наличия вложенных тегов и прочей ерунды.
За то время, как ты этот аналог на регекспах пишешь, я тебе весь сайт на jQuery сваяю

I>За ответом что это есть походи по сайтам любых контор сайто девелопперских. Там разжовано 300 раз.

О, спасибо великий гуру. Я, вишь ли, эти сайты не читаю. Я их пишу.

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

Паттерном чего?

I>ээээ.....

I>"обычно у программистов уже есть свой оверлей со всеми стандартными функциями" типо выше написано было


S>>А что, уже все фреймворки написаны?

I>Ну их достаточно на самом деле. Если уж ты так офигенно любишь fw — юзай Ruby-on-rails. Че, неужели плохой? :D
При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 03:07
Оценка:
А>Можешь дать ссылку? Я как раз ищу реализацию стандартного XPath, которая будет работать в IE, Opera. (в Firefox она и так уже есть)

Да есть в принципе много вариантов, ну например http://mcc.id.au/xpathjs/
Re[7]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 03:09
Оценка:
M>Эмулирует: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/selector/selector.js
M>Надо будет им подсказать
К сожелению, evaluate более менее держит только опера и ff и то с небольшими глюками.... IE держит лишь маааленький кусочек — можно сказать там этого нет
Re[5]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 03:14
Оценка: -2
S>О да. а также глянуть нащот наличия вложенных тегов и прочей ерунды.
Если ты не в состоянии в голове это вооброзить — херовый то программер однако Задачу то помнишь?
типа надо найти элемент у которого есть два св-ва определенных tagname & classname, там похер на вложенные теги — приметив возвращает текстовые св-ва ОДНОГО DOM объекта — смысл лишь рекспом проверить присутствие у него этих двух св-в — если они есть — значит объект НАШ. Все. программер блин ) подика на дельфи программишь? :D

I>>За ответом что это есть походи по сайтам любых контор сайто девелопперских. Там разжовано 300 раз.

S>О, спасибо великий гуру. Я, вишь ли, эти сайты не читаю. Я их пишу.
Ога, оно и видно, бугага, писатель ))

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

S>Паттерном чего?
Эээ... мож тебе еще и все термины разжовывать,а? Может обучение провести? на вики посмотри code pattern че такое. не ну полный писец

S>При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь?

У RoR отличный фрейворк написан КАК серверный ТАК и клиентский.
Re[7]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 03:21
Оценка:
А вот такое интересное дело — когда глядел jQuery — они там создают при вызове екземпляры — оно и понятно — надо же както в chain передавать данные. Так вот вопрос меня мучит — создание екземпляра каждый раз — ни есть хорошо — я согласен что особых ограничений на это нет, но всеже прикольно было бы обойтись статикой.

Так вот вопрос собсно — можно ли? chain на статике организвать вполне можно, осатлось выяснить можно ли каким либо оброзом при вызове n+1 фии передать ей хотя бы один параметр из n? я чето поковырялся и ниче таолкового не придумал :D

Но если так сделать — то скорость работы библиотеки должна подняться на %15-30 а утечка памяти в старом добром IE и FF сократится в разы — не будет он толстеть — т.к. статика — екземпляры не создаются. Есть идеи?
Re[6]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 03:49
Оценка:
Здравствуйте, ionicman, Вы писали:

S>>О да. а также глянуть нащот наличия вложенных тегов и прочей ерунды.

I>Если ты не в состоянии в голове это вооброзить — херовый то программер однако Задачу то помнишь?
Я помню.
I>типа надо найти элемент у которого есть два св-ва определенных tagname & classname, там похер на вложенные теги — приметив возвращает текстовые св-ва ОДНОГО DOM объекта — смысл лишь рекспом проверить присутствие у него этих двух св-в — если они есть — значит объект НАШ. Все.
о, круто. То есть пишем полный перебор дом-дерева всякий раз руками. Ты код-то напиши, не стесняйся. Пальцы гнуть все горазды.
I>программер блин ) подика на дельфи программишь? :D
Раньше программил. А теперь все больше веб приложения.

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

S>>Паттерном чего?
I>Эээ... мож тебе еще и все термины разжовывать,а? Может обучение провести? на вики посмотри code pattern че такое. не ну полный писец
Да я обучение-то и сам могу провести.
S>>При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь?
I>У RoR отличный фрейворк написан КАК серверный ТАК и клиентский.
А как это Руби на клиенте оказался? На клиенте, окромя JS, ничего интересного не поддерживается.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 27.07.07 04:47
Оценка:
Здравствуйте, ionicman, Вы писали:

M>>Эмулирует: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/selector/selector.js

M>>Надо будет им подсказать
I>К сожелению, evaluate более менее держит только опера и ff и то с небольшими глюками.... IE держит лишь маааленький кусочек — можно сказать там этого нет

В любом случае его использование там, где это возможно, может дать значительный прирост скорости.
Re[7]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 05:40
Оценка: -1 :)
Какой сложный перец, а? Исходник то в голове представить ну никак. Ну на 3 минуты ушло:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>

<div><div><div class="ext">asasd</div></div></div>
<div class="ext"></div>

<script language="javascript">
    function TreeGo( o, func ) {
        while ( o != null ) {
            func( o );
            if ( o.firstChild != null ) TreeGo( o.firstChild, func );
            o = o.nextSibling;
        }
    }

    TreeGo(
        document.body, 
        function( o ) {
            o.toString;
        }
    );

    function getPrimitive( o ) {
        var t = "";
        for ( var i in o ) i != "innerHTML" && i != "outerHTML" && ( ""+o[i] ).indexOf("function") < 0 ? t += i + "=" + o[i] + "," : "";
        return t;
    }

    var arr = [];
    TreeGo( 
        document.body,
        function( o ) {
            if ( /(classname *?= *?ext.*?tagname *?= *?div)|(tagname *?= *?div.*classname *?= *?ext)/i.test( getPrimitive( o ) ) ) arr.push( o );
        }
    );


    for ( i = 0; i < arr.length; i++ ) alert( arr[i].tagName + " " + arr[i].className );
</script>


</body>
</html>


getPrimitive платформо — зависимая, поэтому для нее затычка, если хошь получить список примитива быстро какпай либо мелкомягких либо Gecko тама написано все.

рекспами разгребается всё кстати, прикинь, неверующий :D

I>>программер блин ) подика на дельфи программишь? :D

S>Раньше программил. А теперь все больше веб приложения.
Оно и видно

S>Да я обучение-то и сам могу провести.

ага, я понял уже :D

S>>>При чем тут RoR? Ты точно серверную сторону с клиентской не путаешь?

I>>У RoR отличный фрейворк написан КАК серверный ТАК и клиентский.
S>А как это Руби на клиенте оказался? На клиенте, окромя JS, ничего интересного не поддерживается.
А rails это ЧО? А на чем наваяна клиентская часть? :D


Короче, иди учи матчасть — с тобой говорить что против ветра.
Re[9]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 05:42
Оценка:
согласен
Re[8]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 05:45
Оценка:
а, да — первый вызов TreeGo — это от отладки осталось — можно убить — все равно не работает ))
Re[8]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 06:22
Оценка: 12 (1) +2
Здравствуйте, ionicman, Вы писали:

I>Какой сложный перец, а? Исходник то в голове представить ну никак. Ну на 3 минуты ушло:

Ай малацца. Ну, не все условия задачи запомнил, но это не страшно.
I>рекспами разгребается всё кстати, прикинь, неверующий :D
Обожаю общаться с людьми, которые думают, что я ламер.
А теперь протести свой говнокод на вот таком контенте:
<div><div><div class="myclass ext">asasd</div></div></div>
<div class="ext"></div>
<div class="extile"></div>

S>>Да я обучение-то и сам могу провести.
I>Короче, иди учи матчасть — с тобой говорить что против ветра.
Ну что, знаток матчасти, попробуешь свой код поправить?
В принципе, можешь не трудиться.

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

Вот, на всякий случай, полное решение исходной задачи:
$('p.content').hide();

Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.
Небольшое усложнение или изменение исходной задачи — и ты снова день потратишь на отладку. А в jQuery можно за тридцать секунд справиться.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 07:01
Оценка:
I>А вот такое интересное дело — когда глядел jQuery — они там создают при вызове екземпляры — оно и понятно — надо же както в chain передавать данные. Так вот вопрос меня мучит — создание екземпляра каждый раз — ни есть хорошо — я согласен что особых ограничений на это нет, но всеже прикольно было бы обойтись статикой.

I>Так вот вопрос собсно — можно ли? chain на статике организвать вполне можно, осатлось выяснить можно ли каким либо оброзом при вызове n+1 фии передать ей хотя бы один параметр из n? я чето поковырялся и ниче таолкового не придумал :D


I>Но если так сделать — то скорость работы библиотеки должна подняться на %15-30 а утечка памяти в старом добром IE и FF сократится в разы — не будет он толстеть — т.к. статика — екземпляры не создаются. Есть идеи?


Это ты все об чем? Я что-то не понял


dmitriid.comGitHubLinkedIn
Re[9]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 07:33
Оценка:
M>Это ты все об чем? Я что-то не понял

В смысле chain вызовы организовать на static классах, так как щас при каждом обращении к $ динамически создается объект jQuery.
Это я в смысле о том как можно jQuery оптимизировать :D
Re[9]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 07:42
Оценка: +1 -3
S>Обожаю общаться с людьми, которые думают, что я ламер.
S>А теперь протести свой говнокод на вот таком контенте:
S>
S><div><div><div class="myclass ext">asasd</div></div></div>
S><div class="ext"></div>
S><div class="extile"></div>
S>


Вот ты приколист однако. А может те сразу сайт написать — я те сделал пример, чтобы показать что ты нихрена в рекспах не разбираешься. Добавить и хайд и все остально 5 сек — не более. Обойти данную ситуацию — это добавить всего ОДИН символ в regexp. Угадай какой? правильно — делиметр.
S>Ну что, знаток матчасти, попробуешь свой код поправить?
см, выше. Опять доказываешь что ты ламер.


S>Я думаю, всем заинтересованным и так видно, что написать 1 (одну) строчку jQuery, которая будет еще и делать именно то что надо, гораздо быстрее, чем отладить regex-based ужос, который ты пропагандируешь.


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

S>Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.


Хехе... вот по этому ты и хреновый программер. во первых все делается но ООП, и если грамотно — то при малом числе функций в коде гораздо проще разобраться, нежели учить синтаксис фреймворка, isn't it? Другое дело — если при плохом код-дизайне функции и их количство разрастается до невообразимого — тогда да.

S>Небольшое усложнение или изменение исходной задачи — и ты снова день потратишь на отладку. А в jQuery можно за тридцать секунд справиться.

Я те по секрету расскажу: если мне надо чтото скрывать или показывать часто — то 90% это контрол а не контент — контейнер. А если же это контент — контейнер — то на его собачатся id, и делается потом getElementById — и все.

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

А если ты в случае простых страничек с 2-3 контент контейнерами бужешь jQuery юзать — то это примерно тоже самое что в ларек за пивом на ракете лететь, умник.
Re[10]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 07:51
Оценка:
M>>Это ты все об чем? Я что-то не понял

I>В смысле chain вызовы организовать на static классах, так как щас при каждом обращении к $ динамически создается объект jQuery.

I>Это я в смысле о том как можно jQuery оптимизировать :D

Какие такие static классы в JS?

В jQuery динамиически создаются объекты jQuery, потому что единственная альтернатива — расширять DOM, что не есть хорошо.


dmitriid.comGitHubLinkedIn
Re[10]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 08:00
Оценка:
Здравствуйте, ionicman, Вы писали:
I>Вот ты приколист однако. А может те сразу сайт написать — я те сделал пример, чтобы показать что ты нихрена в рекспах не разбираешься.
Ну, ради такого не стоило стараться. Вот если бы ты что умное показал...
I>По моему спор не про это был, а про возможности регспа. Письмо свеже первое погляди, умник.
Нет. Я поясню, специально для ограниченных: я не утверждал, что воспроизвести XPath/CSS selector на регекспах нельзя.
Я утверждал, что заколебешься ты это воспроизводить. И ты образцово-показательно заколебался. ЧиТД.

З.Ы. одим символом ты проблему не решишь

S>>Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.


I>Хехе... вот по этому ты и хреновый программер.

Да куда уж мне, сирому. Вот ионикман, который в одном регекспе три ошибки допустил — тот крут. Не хотел бы я такого в своем отделе иметь — как же ты более сложную задачку решить сможешь?
I>во первых все делается но ООП, и если грамотно — то при малом числе функций в коде гораздо проще разобраться, нежели учить синтаксис фреймворка, isn't it?
Это какой-то пеарный булшит пошел. Вот я тебе дал пример задачи, на которой jQuery полезен — ты же этого просил? Я тебя никак не ограничивал ни ООП, ни функции писать не заставлял.
А почти весь jQuery — это функция $(). Куда как проще с ней один раз разобраться, чем в твоих TreeGo ковыряться, кои на каждой страничке уникальны.
Ты там еще и массив глобальный завел — вообще кросавчег Вот уж где разгул безудержного ООП.

I>Другое дело — если при плохом код-дизайне функции и их количство разрастается до невообразимого — тогда да.

Ну, ты вот только что пример плохого дизайна привел. Приведи пример хорошего.

I>Я те по секрету расскажу: если мне надо чтото скрывать или показывать часто — то 90% это контрол а не контент — контейнер.

Да наздоровье. Я этих контролов видел в ассортименте. Большинство генерят совершенно чудовищный клиентский код. Который еще и работает медленно.
I> А если же это контент — контейнер — то на его собачатся id, и делается потом getElementById — и все.
Я в курсе про getElementById. Даже он, кстати, записывается в jQuery куда как компактнее. Впрочем, чего это я? Не нравится — не ешь.
Если ты предпочитаешь вручную педалить страницы кода вокруг простых задач, или брать готовый контрол (ты, кстати, не с Delphi начинал?), который сгенерит весь этот булшит автоматичкески — велком в лагерь неудачников.

I>А вот внутри контрола если надо хитро бегать — там да, может пригодится jQuery — ибо с помощью нее это сделать быстрее, но работать будет медленнее если контрол шибко большой или шибко динамический.


I>А если ты в случае простых страничек с 2-3 контент контейнерами бужешь jQuery юзать — то это примерно тоже самое что в ларек за пивом на ракете лететь, умник.

А, ну да. Я вообще в веб программировании мало понимаю, так, погулять вышел. Ты ссылку на образцы своего творчества не дашь? Чтобы я мог припасть, так сказать, к истокам мудрости.

Правда пока от тебя кроме пальцев ниче не видать. Где она, мудрость-то?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[11]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 08:05
Оценка: -1
Хорошо пальцы гнешь — мне нравится )

Я те так отвечу:
почитай webmascon.com / xpoint.ru / xhtml.ru
Потом перевари это все, наберись опыта — и поболтаем )

Менеджер из тебя хороший бы получился — гонора много :D
Re[10]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 08:08
Оценка: +1
I>Вот ты приколист однако. А может те сразу сайт написать — я те сделал пример, чтобы показать что ты нихрена в рекспах не разбираешься. Добавить и хайд и все остально 5 сек — не более. Обойти данную ситуацию — это добавить всего ОДИН символ в regexp. Угадай какой? правильно — делиметр.
S>>Ну что, знаток матчасти, попробуешь свой код поправить?

Дело в том, что нет универсального регэкспа. Любое нетривиальное измиенение в структуре документа — и? Регэкспы рулят, да, но поиска по DOM документа они сильно уступают универсальному решению типа jQuery. Да, внутри jQuery тоже используются регэкспы, но они используются там намного хитрее, чем в лоб.

Например, чего стоит только вот этот комментарий в коде, да и сам код:
// Do a quick check for the existence of the actual ID attribute
// to avoid selecting by the name attribute in IE
// also check to insure id is a string to avoid selecting an element with the name of 'id' inside a form

if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && typeof oid.id == "string" && oid.id != m[2] )
    oid = jQuery('[@id="'+m[2]+'"]', elem)[0];


Более того, у решения jQuery есть один гениальный момент — расширяемость. Так, jQuery предлагает стандартный набор селекторов типа :last, :first, :nth и так далее. Есть возможность расширить этот набор своими селекторами, что нельзя сделать с жестко зашитым регэкспом.

Ну и так далее

I>см, выше. Опять доказываешь что ты ламер.


На RSDN есть правило — не оскорблять собеседников. Особенно, если собеседник — модератор

S>>Я думаю, всем заинтересованным и так видно, что написать 1 (одну) строчку jQuery, которая будет еще и делать именно то что надо, гораздо быстрее, чем отладить regex-based ужос, который ты пропагандируешь.


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


В оригинале было несколько вопросов:

Не смеши мои тапочки. XPath он регекспом реализовал. Для некоторых частных примитивных случаев действительно можно применить регексп. (хотя даже аналог p[class="content"] ты уже заколебешься регекспом воспроизводить). А дальше что? Напомню, регексп работает с текстом, а не с DOM. Как ты собрался доступ к элементу получать? Ну вот покажи мне, как на регекспах спрятать (display=none) все P c классом content.


Ключевой момент выделен. Этот кусок говорит не о том, что регэкспы сакс, а о том, что все покрыть регэкспами нельзя. Вернее, можно, но код сопровождать потом будет невозможно. Причем приведенный тобой код не использует XPath вообще

S>>Кроме того, в отличие от твоего кода этот можно читать. А ты через неделю и не вспомнишь, что именно у тебя в этих TreeGo делается. Тем более этого не поймет другой программист.


I>Хехе... вот по этому ты и хреновый программер. во первых все делается но ООП, и если грамотно — то при малом числе функций в коде гораздо проще разобраться, нежели учить синтаксис фреймворка, isn't it? Другое дело — если при плохом код-дизайне функции и их количство разрастается до невообразимого — тогда да.


Рассказываю про синтаксис фреймворка jQuery.

Программист думает: Надо найти элемент с id="i", в нем найти второй div с class="t" и скрыть его
Программист пишет: $("#i").find("div.t").hide()



В этом сила jQuery — как думается, так и пишется

S>>Небольшое усложнение или изменение исходной задачи — и ты снова день потратишь на отладку. А в jQuery можно за тридцать секунд справиться.

I>Я те по секрету расскажу: если мне надо чтото скрывать или показывать часто — то 90% это контрол а не контент — контейнер. А если же это контент — контейнер — то на его собачатся id, и делается потом getElementById — и все.

I>А вот внутри контрола если надо хитро бегать — там да, может пригодится jQuery — ибо с помощью нее это сделать быстрее, но работать будет медленнее если контрол шибко большой или шибко динамический.


10ms пользователь не заметит. ВОт у нас есть и шибко большие контролы и шибко динамические — у нас shopping cart построен на jQuery + Taconite. Ничего. Все летает

I>А если ты в случае простых страничек с 2-3 контент контейнерами бужешь jQuery юзать — то это примерно тоже самое что в ларек за пивом на ракете лететь, умник.


Эээ нет. $("#elem").hide() во-первых проще, во-вторых быстрее в написании, в третьих на .01ms медленнее, чем, скажем, getElementById('elem').style.display = 'none'. Зачем мне использовать второе, если можно использовать первое?

Кстати. О простых страничках. http://dmitriid.com/jquery Очень простая страничка. Примеры там тоже тривиальные (видно из кода). Кода на plain js там будет раз в нцать больше, чем с jQuery. А "медленный" jQuery во-первых летает, как реактивный самолет и, во-вторых, позволил слабать ту страничку за полчаса (при том, что я написал свой собственный загрузчик из XML файла со своей структурой)


dmitriid.comGitHubLinkedIn
Re[11]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 08:08
Оценка:
M>Какие такие static классы в JS?
Не правильно видимо я выразился. Короче имел ввиду на объектах без создания экземпляра ) Я их статическим называю — поскольку Сишник с детства — а там они static обзываются :D
Re[11]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 08:21
Оценка:
Здравствуйте, Mamut, Вы писали:

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

Согласен, но большинство базовых задач они позволяет вполне реализвать безо всяких проблем )

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

О, вот это согласен — ребята очень потрудились — я когда код смотрел — очень понравилось. факт

M>Более того, у решения jQuery есть один гениальный момент — расширяемость. Так, jQuery предлагает стандартный набор селекторов типа :last, :first, :nth и так далее. Есть возможность расширить этот набор своими селекторами, что нельзя сделать с жестко зашитым регэкспом.

Ага, я еще вчера доку осилил — нормально так. тока не понравилась как с аргументами плагин — ну да можно привыкнуть.

I>>см, выше. Опять доказываешь что ты ламер.


M>На RSDN есть правило — не оскорблять собеседников. Особенно, если собеседник — модератор

Да я просто не люблю когда люди понты кидают, а модератор он или нет — мне все равно — забанит — перерегистрируюсь ))

M>В оригинале было несколько вопросов:


Я имел ввиду что на регспе можно сделать выборку элементов — не такую универсальную — но вполне приемлимую. На ней же можно сделать и XPath — я сслыку кидал выше там реализвано на Strings + Regexp — да и в jQuery также )

M>В этом сила jQuery — как думается, так и пишется

Дак не об этом спор то был ) против jQury ниче не имею )) наоброт кое что уяснил — во всяком случае область применения )

M>10ms пользователь не заметит. ВОт у нас есть и шибко большие контролы и шибко динамические — у нас shopping cart построен на jQuery + Taconite. Ничего. Все летает

а поглядеть бы? можно?

I>>А если ты в случае простых страничек с 2-3 контент контейнерами бужешь jQuery юзать — то это примерно тоже самое что в ларек за пивом на ракете лететь, умник.


M>Эээ нет. $("#elem").hide() во-первых проще, во-вторых быстрее в написании, в третьих на .01ms медленнее, чем, скажем, getElementById('elem').style.display = 'none'. Зачем мне использовать второе, если можно использовать первое?

Ну хотябы для экономии размеров загружаемых данных — 20 кб при страничке в 10кб?

M>Кстати. О простых страничках. Очень простая страничка. Примеры там тоже тривиальные (видно из кода). Кода на plain js там будет раз в нцать больше, чем с jQuery. А "медленный" jQuery во-первых летает, как реактивный самолет и, во-вторых, позволил слабать ту страничку за полчаса (при том, что я написал свой собственный загрузчик из XML файла со своей структурой)


просто обычно это начинает быть заметным при разростании проекта, при усложнении страниц на нем. хотя как знать — может быть jQuery, хотя я пытаюсь как можно больше облегчить страницу и js на ней. Да приходится за это расплачиавться необходимым временем. но всеж таки?
Re[12]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 08:26
Оценка:
I>Не правильно видимо я выразился. Короче имел ввиду на объектах без создания экземпляра ) Я их статическим называю — поскольку Сишник с детства — а там они static обзываются :D

Хм. А что ты имеешь в виду?

Например:
$('.className') // один набор элементов
$('div > p') // другой набор элементов

$('#myelem').find('span :nth(odd)') // третий и четвертый набор


Как их можно найти без создания экземпляра? На самом деле, там создается не по одному экземпляру на каждый объект, а один объект jQuery на каждый набор, который содержит массив найденных элементов.

Что дает объект jQuery? Он дает возможность моментально применять к массиву выбранных элементов все фнкции как jQuery, так и любых плагинов.

Единственная альтернатива — это расширять DOM дополнительными функциями (как делает Prototype). Но это довольно грязно и мешает функциям, которые работают с DOM напрямую.


dmitriid.comGitHubLinkedIn
Re[13]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 08:30
Оценка:
Здравствуйте, Mamut, Вы писали:


I>>Не правильно видимо я выразился. Короче имел ввиду на объектах без создания экземпляра ) Я их статическим называю — поскольку Сишник с детства — а там они static обзываются :D


M>Хм. А что ты имеешь в виду?


M>Например:

M>
M>$('.className') // один набор элементов
M>$('div > p') // другой набор элементов

M>$('#myelem').find('span :nth(odd)') // третий и четвертый набор
M>


M>Как их можно найти без создания экземпляра? На самом деле, там создается не по одному экземпляру на каждый объект, а один объект jQuery на каждый набор, который содержит массив найденных элементов.


Да, это и имел ввиду. Так вот попытаться реализовать передачу данных на статике. Это сложно так как возможен конфлик данных если внутри одной из фй чейна организуется тоже чейн. Но вот сдается мне что можно. :D

M>Что дает объект jQuery? Он дает возможность моментально применять к массиву выбранных элементов все фнкции как jQuery, так и любых плагинов.


Это то понятно

M>Единственная альтернатива — это расширять DOM дополнительными функциями (как делает Prototype). Но это довольно грязно и мешает функциям, которые работают с DOM напрямую.


Не, ну это уже совсем грустно.
Re[12]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 08:34
Оценка:
Здравствуйте, ionicman, Вы писали:

I>Я те так отвечу:

I>почитай webmascon.com / xpoint.ru / xhtml.ru

I>Потом перевари это все, наберись опыта — и поболтаем )
Интересно, а каким способом ты оценил мой нынешний опыт? Наверное, в профиле подглядел, да?

I>Менеджер из тебя хороший бы получился — гонора много :D

Спасибо. Я обязательно скажу об этом своему руководству на следующей аттестации.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 08:40
Оценка:
M>>Дело в том, что нет универсального регэкспа. Любое нетривиальное измиенение в структуре документа — и? Регэкспы рулят, да, но поиска по DOM документа они сильно уступают универсальному решению типа jQuery.
I>Согласен, но большинство базовых задач они позволяет вполне реализвать безо всяких проблем )

Задачи быстро перестают быть базовыми. Структура документа может быть изменена радикально (а что, прришел новый дизайнер и все переиграл ). Гораздо легче изначально использовать инструмент, требующий минимум усилий для изменения поведения. Сравним:
if ( /(classname *?= *?ext.*?tagname *?= *?div)|(tagname *?= *?div.*classname *?= *?ext)/i.test( getPrimitive( o ) ) )

и
$('.className')




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

I>О, вот это согласен — ребята очень потрудились — я когда код смотрел — очень понравилось. факт

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

M>>На RSDN есть правило — не оскорблять собеседников. Особенно, если собеседник — модератор

I>Да я просто не люблю когда люди понты кидают, а модератор он или нет — мне все равно — забанит — перерегистрируюсь ))

Он имеет право понты кидать, поверь

M>>В этом сила jQuery — как думается, так и пишется

I>Дак не об этом спор то был ) против jQury ниче не имею )) наоброт кое что уяснил — во всяком случае область применения )

Область применения — везде, где нужна работа с DOM'ом. Единственное, где его не стоит, наверное, применять — там, где суммарный вес сайта меньше, чем библиотека в зазипованном виде

M>>10ms пользователь не заметит. ВОт у нас есть и шибко большие контролы и шибко динамические — у нас shopping cart построен на jQuery + Taconite. Ничего. Все летает

I>а поглядеть бы? можно?

Ну, наш проект пока в разработке. А вообще можно посмотреть Sites Using jQuery

M>>Эээ нет. $("#elem").hide() во-первых проще, во-вторых быстрее в написании, в третьих на .01ms медленнее, чем, скажем, getElementById('elem').style.display = 'none'. Зачем мне использовать второе, если можно использовать первое?

I>Ну хотябы для экономии размеров загружаемых данных — 20 кб при страничке в 10кб?

Только тогда можно думать об экономии.

M>>Кстати. О простых страничках. Очень простая страничка. Примеры там тоже тривиальные (видно из кода). Кода на plain js там будет раз в нцать больше, чем с jQuery. А "медленный" jQuery во-первых летает, как реактивный самолет и, во-вторых, позволил слабать ту страничку за полчаса (при том, что я написал свой собственный загрузчик из XML файла со своей структурой)


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


Да не становится это при разрастании проекта Когда страница — 200 KB, а jQuery — 20 KB или когда скорость отрисовки страницы — 1-5 секунд, а скорость отработки jQuery — 200ms, это просто незаметно. При том, что очень редко функции в js работают настолько долго. Всякие .append, .hide и прочие работают в пределах 20ms.


dmitriid.comGitHubLinkedIn
Re[13]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 09:05
Оценка:
M>Задачи быстро перестают быть базовыми. Структура документа может быть изменена радикально (а что, прришел новый дизайнер и все переиграл ). Гораздо легче изначально использовать инструмент, требующий минимум усилий для изменения поведения. Сравним:

А я объяснял уже ) у меня например XML+XSLT ( на самом деле все равно какой движок лишь бы данные отдельно были ), ну и дизайнерам запрещено трогать id — в том смысле они могут его присвоить просто другому элементу но не изменить — и я еще ни разу не менял программинг изза дизайна. правда :D

На
M>
M>if ( /(classname *?= *?ext.*?tagname *?= *?div)|(tagname *?= *?div.*classname *?= *?ext)/i.test( getPrimitive( o ) ) )
M>


это кстати для IE & FF сделано такто она ровно в 2 раза меньше )
но на jQuery элегантней — не спорю.

M>Он имеет право понты кидать, поверь

Ну не знаю — тыже не кидаешь? :D На самом деле если человек достаточно знает — он никогда кидать понты не будет
— потому что он знает :D

Мне больше всего понравились заявления что пример написан плохо, что нет ООП и массив глобальный — ваще ржал. Пример на то и пример ) Видимо хотелось человеку шоб я ему сделал с fade эффектами, табами, и анимацией сразу :D

M>Область применения — везде, где нужна работа с DOM'ом. Единственное, где его не стоит, наверное, применять — там, где суммарный вес сайта меньше, чем библиотека в зазипованном виде


Ну не сайта — страничек уж тогда ))

M>>>Кстати. О простых страничках. Очень простая страничка. Примеры там тоже тривиальные (видно из кода). Кода на plain js там будет раз в нцать больше, чем с jQuery. А "медленный" jQuery во-первых летает, как реактивный самолет и, во-вторых, позволил слабать ту страничку за полчаса (при том, что я написал свой собственный загрузчик из XML файла со своей структурой)

Ну я бы и на plain я думаю сделал бы такое быстро. Там не никаких хитростей да и контент — контейнер всего один я так понимаю? если не считать табы.
Хотя я поглядел листинг — согласен — читается просто.

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


M>Да не становится это при разрастании проекта Когда страница — 200 KB, а jQuery — 20 KB или когда скорость отрисовки страницы — 1-5 секунд, а скорость отработки jQuery — 200ms, это просто незаметно. При том, что очень редко функции в js работают настолько долго. Всякие .append, .hide и прочие работают в пределах 20ms.


Просто в страничке обычно много весит графика нежели текст. Вообще на среднем сайте типа портальчика простого странички примерно по 50-70 кб идут -я имею ввиду контент + дизайн + js + css. это из того что я специально глядел — интересно было узнать средний размер.
Re[14]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 09:43
Оценка:
Здравствуйте, ionicman, Вы писали:

I>А я объяснял уже ) у меня например XML+XSLT ( на самом деле все равно какой движок лишь бы данные отдельно были ), ну и дизайнерам запрещено трогать id — в том смысле они могут его присвоить просто другому элементу но не изменить — и я еще ни разу не менял программинг изза дизайна. правда :D

а как ты борешься с множествами элементов? id же не могут повторяться.
I>Ну не знаю — тыже не кидаешь? :D На самом деле если человек достаточно знает — он никогда кидать понты не будет
I>- потому что он знает :D
Это наверное поэтому ты с понтов начал?

I>Мне больше всего понравились заявления что пример написан плохо, что нет ООП и массив глобальный — ваще ржал. Пример на то и пример ) Видимо хотелось человеку шоб я ему сделал с fade эффектами, табами, и анимацией сразу :D

Я сразу написал, с какими эффектами хотел пример. Ты вон языком молол-молол, а пример написать так и не сумел. Чтобы хотя бы работал, что уж там про архитектуру-то.

I>Ну не сайта — страничек уж тогда ))

Сайта, сайта. Ты, надеюсь, про 304 Not modified в курсе? т.е. jQuery.js загружается ровно 1 (один) раз для сайта. Все остальные использования берут готовую из кэша. Это в отличие от кода, сгенеренного серверным XSLT, где обработчики привязаны напрямую к каждому тегу. Поэтому и экономия.

I>Ну я бы и на plain я думаю сделал бы такое быстро.

Давай не будем проверять, да? А то опять смешно получится
I>Там не никаких хитростей да и контент — контейнер всего один я так понимаю? если не считать табы.
I>Хотя я поглядел листинг — согласен — читается просто.

I>Просто в страничке обычно много весит графика нежели текст. Вообще на среднем сайте типа портальчика простого странички примерно по 50-70 кб идут -я имею ввиду контент + дизайн + js + css. это из того что я специально глядел — интересно было узнать средний размер.

Вопрос, сколько из этого приезжает из кэша, а сколько — с сервера.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[15]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 10:06
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, ionicman, Вы писали:


I>>А я объяснял уже ) у меня например XML+XSLT ( на самом деле все равно какой движок лишь бы данные отдельно были ), ну и дизайнерам запрещено трогать id — в том смысле они могут его присвоить просто другому элементу но не изменить — и я еще ни разу не менял программинг изза дизайна. правда :D

S>а как ты борешься с множествами элементов? id же не могут повторяться.
А зачем мне с ними бороться? там где надо множество элементов в- ариантов много как их получить.
Если элементов не много — вполне можно обойтись навешиванием чего надо прямо в xslt — это увеличивает размер страницы, по этому надо обходиться экономно, но очень простО.
Во вторых есть функция мною написанная getElementByProp( collection, property, value ) — возвращает коллекцию объектов — collection либо array с коллекцией — тогда ведется поиск в ней, либо DOM элемент — тогда он является "контейнером", property — нужное свойство, value — его значение.

I>>Ну не знаю — тыже не кидаешь? :D На самом деле если человек достаточно знает — он никогда кидать понты не будет

I>>- потому что он знает :D
S>Это наверное поэтому ты с понтов начал?

I>>Мне больше всего понравились заявления что пример написан плохо, что нет ООП и массив глобальный — ваще ржал. Пример на то и пример ) Видимо хотелось человеку шоб я ему сделал с fade эффектами, табами, и анимацией сразу :D

S>Я сразу написал, с какими эффектами хотел пример. Ты вон языком молол-молол, а пример написать так и не сумел. Чтобы хотя бы работал, что уж там про архитектуру-то.
Пример работает. Любое решение не универсально — в данном примере работало все. Его достаточно несложно переделать в то чтобы обходить тот конфликт. Коль о тебе гн Mamut как оп рограммере хорошо отзывался — я думаю тебе не сложно понять как? :D

I>>Ну не сайта — страничек уж тогда ))

S>Сайта, сайта. Ты, надеюсь, про 304 Not modified в курсе? т.е. jQuery.js загружается ровно 1 (один) раз для сайта. Все остальные использования берут готовую из кэша. Это в отличие от кода, сгенеренного серверным XSLT, где обработчики привязаны напрямую к каждому тегу. Поэтому и экономия.

насчет 304 — большинство сайтов на данный момент динамические — и обычно чтобы нормально кэшировался контент — требуется нехилые напряги со стороны программинга ( выделение динамических частей и отдачи на кэш статики ). Так что обычно странички не кэшируются — факт. js скэшируется, согласен — но он требует накладных расходов при запуске — тут есть выбор — либо сделать на сервере — и увеличить таким образом трафик либо же сделать это на клиенте, повысив таким образом тормаза. Выбор всегда :D

I>>Ну я бы и на plain я думаю сделал бы такое быстро.

S>Давай не будем проверять, да? А то опять смешно получится
См выше, бодаться надоело.

I>>Просто в страничке обычно много весит графика нежели текст. Вообще на среднем сайте типа портальчика простого странички примерно по 50-70 кб идут -я имею ввиду контент + дизайн + js + css. это из того что я специально глядел — интересно было узнать средний размер.

S>Вопрос, сколько из этого приезжает из кэша, а сколько — с сервера.
и это тамже ) просто в БОЛЬШИНСТВЕ случаев достаточно стандартного js + шаблонизатор, нежели использовать fw и навешивать ( пусть удобно ) функционал на стороне клиента.

В БОЛЬШИНСТВЕ — это не значит всегда — если проект из себя представляет динамику — например прообраз экселя написан типа google spreadsheet, то там и так все тормозит — пользователь к этому готов, там для удобности, читаемости вполне закономерен fw, jQuery например. Уж больно понравилась мне гладкость кода у ребят :D
Re[16]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 10:51
Оценка: +2
Здравствуйте, ionicman, Вы писали:

I>Здравствуйте, Sinclair, Вы писали:

I>А зачем мне с ними бороться? там где надо множество элементов в- ариантов много как их получить.
Вот то-то и оно, что их много. А jQuery инкапсулирует 99% этих вариантов в один простой и компактный синтаксис.
I>Если элементов не много — вполне можно обойтись навешиванием чего надо прямо в xslt — это увеличивает размер страницы, по этому надо обходиться экономно, но очень простО.
Вот именно! Ты же только что тут боролся за производительность? Сильнее всего на производительность влияет вес HTTP Response. Поэтому jQuery реально офигенно ускоряет сайты.

I>Во вторых есть функция мною написанная getElementByProp( collection, property, value ) — возвращает коллекцию объектов — collection либо array с коллекцией — тогда ведется поиск в ней, либо DOM элемент — тогда он является "контейнером", property — нужное свойство, value — его значение.

Это я понял. Ну то есть ты воспроизвел маахонький кусочек jQuery у себя. Мы у себя тоже такие штуки делаем. Мне нравится jQuery именно тем, что он позволяет не изобретать велосипед каждый раз, когда что-то чуть-чуть поменялось. Я уже упоминал про взрыв сложности императивного кода при развитии требований. Mamut пишет о том же.
S>>Я сразу написал, с какими эффектами хотел пример. Ты вон языком молол-молол, а пример написать так и не сумел. Чтобы хотя бы работал, что уж там про архитектуру-то.
I>Пример работает. Любое решение не универсально — в данном примере работало все.
Ну давай не будем упираться? Я тебе привел тест пример, который ломает твой код. Если он был заточен на конкретный набор дивов, то можно было и списком id обойтись.
Вопрос в стоимости поддержки.
I>Его достаточно несложно переделать в то чтобы обходить тот конфликт. Коль о тебе гн Mamut как оп рограммере хорошо отзывался — я думаю тебе не сложно понять как? :D
Да знаю я, как его обойти. В этом как раз и проблема: я вижу, что регекспы получаются нечитаемыми, громоздкими, трудно отлаживаемыми и трудно поддерживаемыми.


I>>>Ну не сайта — страничек уж тогда ))

S>>Сайта, сайта. Ты, надеюсь, про 304 Not modified в курсе? т.е. jQuery.js загружается ровно 1 (один) раз для сайта. Все остальные использования берут готовую из кэша. Это в отличие от кода, сгенеренного серверным XSLT, где обработчики привязаны напрямую к каждому тегу. Поэтому и экономия.

I>насчет 304 — большинство сайтов на данный момент динамические — и обычно чтобы нормально кэшировался контент — требуется нехилые напряги со стороны программинга ( выделение динамических частей и отдачи на кэш статики ).

Гм. jsQuery.js — это статика. Для ее кэщирования делать обычно ничего не надо — любой вменяемый HTTP сервер отдаст 304 сам. Именно потому, что большинство сайтов сейчас динамические, и нельзя пользоваться раздувающими клиентский код методами.
Типичные "фреймворки", которые я вижу, совершенно необоснованно раздувают страницы до мегабайтов.
I>Так что обычно странички не кэшируются — факт. js скэшируется, согласен — но он требует накладных расходов при запуске — тут есть выбор — либо сделать на сервере — и увеличить таким образом трафик либо же сделать это на клиенте, повысив таким образом тормаза.
Несерьезно. Скачать раз в жизни 20kb куда как эффективнее, чем отдавать по 5к лишних на каждый реквест.


I>В БОЛЬШИНСТВЕ — это не значит всегда — если проект из себя представляет динамику — например прообраз экселя написан типа google spreadsheet, то там и так все тормозит — пользователь к этому готов, там для удобности, читаемости вполне закономерен fw, jQuery например. Уж больно понравилась мне гладкость кода у ребят :D

Ну почему обязательно ексель? Я тебе говорю — jQuery реально ускоряет работу, а) потому что позволяет писать меньше jScript кода и б) потому, что позволяет писать меньше разметки для биндинга событий.
Современные сайты чудовищно перегружены всякими onmouseover/onmouseleave, даже в простых случаях, где не нужна мегадинамика в стиле google spreadsheets или google maps.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 10:58
Оценка:
M>>Задачи быстро перестают быть базовыми. Структура документа может быть изменена радикально (а что, прришел новый дизайнер и все переиграл ). Гораздо легче изначально использовать инструмент, требующий минимум усилий для изменения поведения. Сравним:

I>А я объяснял уже ) у меня например XML+XSLT ( на самом деле все равно какой движок лишь бы данные отдельно были ), ну и дизайнерам запрещено трогать id — в том смысле они могут его присвоить просто другому элементу но не изменить — и я еще ни разу не менял программинг изза дизайна. правда :D


Поверь мне, придется Особенно интересно это выглядит, когда таблица вдруг заменяется табличной версткой. Тогда никакими id не отмашешься

I>На

M>>
M>>if ( /(classname *?= *?ext.*?tagname *?= *?div)|(tagname *?= *?div.*classname *?= *?ext)/i.test( getPrimitive( o ) ) )
M>>


I>это кстати для IE & FF сделано такто она ровно в 2 раза меньше )


Ключевое выделено. В том же jQuery очень много кода по борьбе с браузерами. Мое любимое место в коде вот:
// This may seem like some crazy code, but trust me when I say that this
// is the only cross-browser way to do this. --John
isFunction: function( fn ) {
    return !!fn && typeof fn != "string" && !fn.nodeName && 
        fn.constructor != Array && /function/i.test( fn + "" );
},




Плюс есть много мелких браузерных глюков по типу:
// IE elem.getAttribute passes even for style (getAttribute работает даже для стилей)

// IE actually uses filters for opacity

// IE has trouble with opacity if it does not have layout
// Force it by setting the zoom level

// Note that you can't set the name property of input elements in IE.
// Use $(html) or .append(html) or .html(html) to create elements
// on the fly including the name property.


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

M>>Он имеет право понты кидать, поверь

I>Ну не знаю — тыже не кидаешь? :D На самом деле если человек достаточно знает — он никогда кидать понты не будет
I>- потому что он знает :D

Разные люди по-рузному реагируют

M>>Область применения — везде, где нужна работа с DOM'ом. Единственное, где его не стоит, наверное, применять — там, где суммарный вес сайта меньше, чем библиотека в зазипованном виде


I>Ну не сайта — страничек уж тогда ))


Именно сайта. Вот, пожалуйста: http://www.osxcode.com/feedsearch/
Сраница полностью весит 98КБ, из них 62КБ — это яваскрипт. На plain js это делать? Не, увольте

M>>>>Кстати. О простых страничках. Очень простая страничка. Примеры там тоже тривиальные (видно из кода). Кода на plain js там будет раз в нцать больше, чем с jQuery. А "медленный" jQuery во-первых летает, как реактивный самолет и, во-вторых, позволил слабать ту страничку за полчаса (при том, что я написал свой собственный загрузчик из XML файла со своей структурой)

I>Ну я бы и на plain я думаю сделал бы такое быстро. Там не никаких хитростей да и контент — контейнер всего один я так понимаю? если не считать табы.
I>Хотя я поглядел листинг — согласен — читается просто.

Я имел в виду — сама страничка + примеры. Например, "excel руками" я очень смутно представляю, как делать на plain js

I>Просто в страничке обычно много весит графика нежели текст. Вообще на среднем сайте типа портальчика простого странички примерно по 50-70 кб идут -я имею ввиду контент + дизайн + js + css. это из того что я специально глядел — интересно было узнать средний размер.


Ну вот. 50-70 KB. 1 секунду он отображается, 20-200 миллисекунд отрабатывает, допустим $(document).ready (хотя я в нее стараюсь много функционала не пихать). И все. Ведь дальше jQuery не работает постоянно.


dmitriid.comGitHubLinkedIn
Re[15]: Поправка
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 11:04
Оценка:
I>>А я объяснял уже ) у меня например XML+XSLT ( на самом деле все равно какой движок лишь бы данные отдельно были ), ну и дизайнерам запрещено трогать id — в том смысле они могут его присвоить просто другому элементу но не изменить — и я еще ни разу не менял программинг изза дизайна. правда :D

M>Поверь мне, придется Особенно интересно это выглядит, когда таблица вдруг заменяется табличной версткой. Тогда никакими id не отмашешься


Выделенное читать как: когда таблица вдруг заменяется версткой на div'ах


dmitriid.comGitHubLinkedIn
Re[17]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 11:08
Оценка:
Насчет большинства fw согласен полностью. Один Zend чего стоит только чтобы в нем разобраться :D

насчет jQuery, че хочу сделать — писал, что очень не нравится порождение объекта на каждую коллекцию — лики будут изза этого даже в ff.

Во вторых по сути требуется лишь функция обеспечивающая беганье по DOM дереву — ВСЕ ОСТАЛЬНОЕ НАДО ПОДКЛЮЧАТЬ когда надо. Смысл мне в анимации если я ее не юзаю на странице. Идеально было бы некое подобие вот такого
$("здесь посиковый запрос").search("тожесамое применимо к коллекции").parent.next.prev.prevSearch.do(функция)
do — просто применение данной функции к одному элементу коллекции последовательно

Все! все остальное в отдельных js, и если надо — прикомпиливай, если не надо — не прикомпиливай.

собсвтенно у меня на данный момент к каждой странице приделывается js со следующим функционалом:

найтиDOMэлемент
создатьDOMэлемент
следующийDOMэлемент
предыдущийDOMэлемент
очиститьВнутриDOMэлемент
удалитьПереместитьDOMэлемент

это зависит от проекта но в моих часто попадается — поэтому сюдаже вынесено
получитьТекущуюДату
сформатироватьЧисловуюСтроку

Остальное Ajax / Sjax / Анимация / Контролы и др — отдельно. Они расширяют просто при подключении базовый функционал.
Причем могут и перегрыжать существующие функции

Т.е. на самом деле вся мощь jQuery это всего лишь ее поиск — этим она и удобна. Почему все остальное не вынесли на правах плагинов я не знаю. Может быть оттого что мало с ней работал :D Но то, что ОЧЕНЬ часто встречается я нарисовал. остальное должны быть опции.

Что на это думаете?
Re[15]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 27.07.07 11:18
Оценка:
M>Поверь мне, придется Особенно интересно это выглядит, когда таблица вдруг заменяется табличной версткой. Тогда никакими id не отмашешься
Ну я смутно вижу, чтобы чтото должно сильно поменяться при изменении типа верстки — если мы не берем в расчет контролы, то обычно что есть верстка для сайта — это некая разметка на области, в которые выплевывается контент, так?
Если данной области присвоен id="c1" например, то нет никакой разницы <td id="c1">...</td> либо же <div id="c1">...</div> я имею ввиду с программной точки зрения. По этому и не понимаю какие трудности. Конечно, если учавствуют в программе tagName тогда да, но зачем? таким образом ты привязываешь работу программы к каркасу дизайна. не есть хорошо. Тут мне кажется лучше уж везде числовые id повтыкать, чем так. По этому я и говорил что jQ хороша для контролов, нежели для просто страничек.

M>Ключевое выделено. В том же jQuery очень много кода по борьбе с браузерами. Мое любимое место в коде вот:

Так я этим имел ввиду сравнить этот кусочек с синтаксисом jQ — мы же про него а не про его листинг )
M>
M>// This may seem like some crazy code, but trust me when I say that this
M>// is the only cross-browser way to do this. --John
M>isFunction: function( fn ) {
M>    return !!fn && typeof fn != "string" && !fn.nodeName && 
M>        fn.constructor != Array && /function/i.test( fn + "" );
M>},
M>

Ага — весело :D

M>Разные люди по-рузному реагируют

Согласен.

Кстати а почему на RSDN нельзя сообщение отредактировать? или я плохо искал?
Re[18]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.07.07 11:26
Оценка:
Здравствуйте, ionicman, Вы писали:

I>Насчет большинства fw согласен полностью. Один Zend чего стоит только чтобы в нем разобраться :D


I>насчет jQuery, че хочу сделать — писал, что очень не нравится порождение объекта на каждую коллекцию — лики будут изза этого даже в ff.

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

I>Во вторых по сути требуется лишь функция обеспечивающая беганье по DOM дереву — ВСЕ ОСТАЛЬНОЕ НАДО ПОДКЛЮЧАТЬ когда надо. Смысл мне в анимации если я ее не юзаю на странице. Идеально было бы некое подобие вот такого

I>$("здесь посиковый запрос").search("тожесамое применимо к коллекции").parent.next.prev.prevSearch.do(функция)
Хм. А разве там не так работает???
I>Все! все остальное в отдельных js, и если надо — прикомпиливай, если не надо — не прикомпиливай.
Знаешь, при 20k .js это, наверное, не очень актуально. Грубо говоря, файл приезжает в одном IP пакете
Вот если jQuery вырастет раз в десяток, тогда будет иметь смысл ее попилить.
А так — подход к распиливанию приведет только к удорожанию рендера страницы, потому что за каждым из N кусков jQuery придется бегать на сервер за 304.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[16]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 27.07.07 12:16
Оценка:
M>>Поверь мне, придется Особенно интересно это выглядит, когда таблица вдруг заменяется табличной версткой. Тогда никакими id не отмашешься
I>Ну я смутно вижу, чтобы чтото должно сильно поменяться при изменении типа верстки — если мы не берем в расчет контролы, то обычно что есть верстка для сайта — это некая разметка на области, в которые выплевывается контент, так?
I>Если данной области присвоен id="c1" например, то нет никакой разницы <td id="c1">...</td> либо же <div id="c1">...</div> я имею ввиду с программной точки зрения. По этому и не понимаю какие трудности. Конечно, если учавствуют в программе tagName тогда да, но зачем? таким образом ты привязываешь работу программы к каркасу дизайна. не есть хорошо. Тут мне кажется лучше уж везде числовые id повтыкать, чем так. По этому я и говорил что jQ хороша для контролов, нежели для просто страничек.

Пример. Из нашего шоппинг карта:
<table id="checkout_grid">
    <tr>
        <td>
            <input type="checkbox" id="#ID#" value="#ID#" />
        </td>
        <td> ... описание и еще много td - с ценой и т.п.</td>
    </tr>
    <!--- еще много таких tr - по одному на каждый предмет --->
</table>
<input type="button" id="step2" value="Step 2 >>" style="display: none" />


// все равно, что body.onload, но круче.
// срабатывает, когда DOM уже готов, но прорисовка
// не обязательно завершилась
$document.ready(
    function() {
        // находим все checkbox'ы в checkout_grid
        // и присваиваем им onclick

        $("#checkout_grid input:checkbox").click(
        function() {
            // инициализируем счетчик
            var c = 0;

            // смотрим, сколько у нас отмеченных чекбоксов
            $("#checkout_grid input:checkbox").each(
                function(){
                    if(this.checked) c++;
                }
            )

            // если отмеченных чекбоксов нет, прячем кнопку "Step 2 >>"
            if(c > 0)
                $("#step2").show();
            else
                $("#step2").hide();
        }
    );
    }
);


Если вдруг таблицу заменят на div или на div без id, изменить код не составит труда. Сможет ли с этим справиться предложенный getProp или регэксп — не знаю. Я даже не представляю, как на них написать аналог $("#checkout_grid input:checkbox")




I>Кстати а почему на RSDN нельзя сообщение отредактировать? или я плохо искал?


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


dmitriid.comGitHubLinkedIn
Re[17]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 30.07.07 03:00
Оценка:
M>Пример. Из нашего шоппинг карта:
M>
M><table id="checkout_grid">
M>    <tr>
M>        <td>
M>            <input type="checkbox" id="#ID#" value="#ID#" />
M>        </td>
M>        <td> ... описание и еще много td - с ценой и т.п.</td>
M>    </tr>
M>    <!--- еще много таких tr - по одному на каждый предмет --->
M></table>
M><input type="button" id="step2" value="Step 2 >>" style="display: none" />
M>


M>Если вдруг таблицу заменят на div или на div без id, изменить код не составит труда.

Я выделил ключевой момент выше, если его заменят на div, но оставят ID ( а не оставить его нельзя — ибо это уже не разметка а часть логики ) — то на самом деле ничего не поменятся, так ведь? Ведь нет ни какой разницы что за элементь если его находят по ID, а потом внутри его ищут определенные элементы.

M>Сможет ли с этим справиться предложенный getProp или регэксп — не знаю. Я даже не представляю, как на них написать аналог $("#checkout_grid input:checkbox")


Ну на самом деле не сложно:
GetProp( document.getElementByID("checkout_grid"),["tagName", "type"],["input", "checkbox"] );

M>Особенности движка. Много раз обсуждалось в "обсуждении сайта", но общее решение было, что такая фича скорее не нужна, чем нужна


:D Ну как сказать, мне очень не хватает — бывает гдето чуть ошибешься, или забудешь чтонидь добавить. Да, я конечно знаю, что можно добьавить все это новыми сообщениями, но как то не удобно, хотя не смертельно есессно :D
Re[19]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 30.07.07 03:16
Оценка:
I>>насчет jQuery, че хочу сделать — писал, что очень не нравится порождение объекта на каждую коллекцию — лики будут изза этого даже в ff.
S>Черт его знает насчет ликов. Стоит, наверное, тест написать.
S>Собственно самих утечек там точно не будет. А вот потребление памяти может быть...
Так в том то и дело, что я не встречал грамотной реализайии trash garbager ни в IE ни в FF ( оперу и сафари не мучал ),
растет к сожелению память и очень сильно, причем по тому что я тестил получается так — очень мало увеличивается память при создании например обычных массивов — ну типа var a=[], самое что интересное {"abc":"1", "abcd":"2"} гораздо существеннее влияет на память нежели a=[]; a["abc"]=1; a["abcd"]=2. Не знаю почему :/ В принципе и то, и то — есть объект... Я на динамических контролах проверял. Тест очень простой был — там дерево было — при раскрытии ветки контрол динамически достраивался — как его DOM часть, так и объектная структура. Ну вот так побегав и пораскрывав ветки ( до 400-500 айтемов в одной ветке было сделано специально ) IE разарастался метров до 25-37! Потом в какойто момент он переставал отображать картинки, а затем переставал ворочатся JS. FF по другому ведет себя — разрастается до примерно 60 метров, но работает

I>>Во вторых по сути требуется лишь функция обеспечивающая беганье по DOM дереву — ВСЕ ОСТАЛЬНОЕ НАДО ПОДКЛЮЧАТЬ когда надо. Смысл мне в анимации если я ее не юзаю на странице. Идеально было бы некое подобие вот такого

I>>$("здесь посиковый запрос").search("тожесамое применимо к коллекции").parent.next.prev.prevSearch.do(функция)
S>Хм. А разве там не так работает???
I>>Все! все остальное в отдельных js, и если надо — прикомпиливай, если не надо — не прикомпиливай.
S>Знаешь, при 20k .js это, наверное, не очень актуально. Грубо говоря, файл приезжает в одном IP пакете
S>Вот если jQuery вырастет раз в десяток, тогда будет иметь смысл ее попилить.
S>А так — подход к распиливанию приведет только к удорожанию рендера страницы, потому что за каждым из N кусков jQuery придется бегать на сервер за 304.
Ну теоритичекси можно побить на функцилональные куски — их будет 2-3 штуки. Я обычно бью так: сервисные фии ( определение размеров элементов, их создание, некие манипуляции со стандартными типами ) — это мой оверлей — т.е. примитивы которые потом используют все остальные функции — грузится он почти всегда на странички, украшательства ( анимация, фильтры и т.д. ) и доп. функционал ( обычно различные контролы — например календарь, если страница того требует ).

Да, согласен, бегать будет чуть чаще, но по моему модульность добавляет удобства? Хотя конечно согласен, 20к не сильно напрчгает, но может есть смысл реализовать лучшую поддержку XPath в теже 20 кб, а остальное выкинуть?
Я погляждел листинг — достаточно сложно там завязаны внутренние функции и не так просто выдернуть будет поиск — там просто сложно читать — т.к. оптимизированно очень сильно — ну зато можно поучится интересным приемам

Хотя даже не знаю, может эти ребята сделают потом отдельно реализацию XPath? Было бы классно, потому как единственную полную реализацию XPath 1.0 я уже приводил 100k

Почему охота XPath — ну она более функциональна нежели CSS селекторы, хотя вот г-н Mamut говорит, что в основном пользуется именно CSS селекторами. Мне, может быть, XPath ближе так как большинство страниц на XSLT написано просто. В принципе очень функциональная штука.
Re[20]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.07.07 03:34
Оценка:
Здравствуйте, ionicman, Вы писали:
I>Так в том то и дело, что я не встречал грамотной реализайии trash garbager ни в IE ни в FF ( оперу и сафари не мучал ),
I>растет к сожелению память и очень сильно, причем по тому что я тестил получается так — очень мало увеличивается память при создании например обычных массивов — ну типа var a=[], самое что интересное {"abc":"1", "abcd":"2"} гораздо существеннее влияет на память нежели a=[]; a["abc"]=1; a["abcd"]=2. Не знаю почему :/ В принципе и то, и то — есть объект... Я на динамических контролах проверял. Тест очень простой был — там дерево было — при раскрытии ветки контрол динамически достраивался — как его DOM часть, так и объектная структура. Ну вот так побегав и пораскрывав ветки ( до 400-500 айтемов в одной ветке было сделано специально ) IE разарастался метров до 25-37! Потом в какойто момент он переставал отображать картинки, а затем переставал ворочатся JS. FF по другому ведет себя — разрастается до примерно 60 метров, но работает
А у тебя случайно не было ссылок на DOM изнутри JS объектов?

I>Да, согласен, бегать будет чуть чаще, но по моему модульность добавляет удобства?

Удобство должно быть измеримым. Сама по себе модульность ничего не значит. Слепое следование абстрактным ценностям прививают низкооплачиваемым кодерам, поскольку считается, что они не в состоянии самостоятельно ориентироваться в окружающем мире. Так и здесь — какой бенефит даст тебе возможность не включать, к примеру, анимацию? Кроме download size?
Тем более, что сам download size — тоже упрощенное правило. На самом деле пользователя интересует скорость подгрузки страницы, а на нее влияет далеко не только download size.

В других случаях модульность может действительно добавить удобства — там, к примеру, где модули могут быть взаимозаменяемыми. Но что-то я не вижу никакой взаимозаменяемости в jQuery.

I>Хотя конечно согласен, 20к не сильно напрчгает, но может есть смысл реализовать лучшую поддержку XPath в теже 20 кб, а остальное выкинуть?

А, собственно, зачем? У тебя есть какие-то реальные задачи, требующие неподдерживаемого в jQuery XPath? Или ты просто заранее боишься, что однажды такая задача возникнет, а отказаться от jQuery будет уже поздно?

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


I>Хотя даже не знаю, может эти ребята сделают потом отдельно реализацию XPath? Было бы классно, потому как единственную полную реализацию XPath 1.0 я уже приводил 100k

Ну, я так думаю, что пусть цветут все цветы. Вот у тебя есть полная реализация XPath. Если она тебе часто нужна, то никакой проблемы один раз ее отдать пользователю нету. Достаточно озаботиться грамотным кэшированием, и никто ничего не заметит.

I>Почему охота XPath — ну она более функциональна нежели CSS селекторы, хотя вот г-н Mamut говорит, что в основном пользуется именно CSS селекторами. Мне, может быть, XPath ближе так как большинство страниц на XSLT написано просто.

Я считаю CSS селекторы очень важными, и вот почему: сейчас CSS по факту используется гораздо чаще, чем XSLT. Поэтому как правило HTML уже верстается так, чтобы можно было применять CSS правила. Так что шанс на то, что нужные тебе элементы уже проидентифицированы каким-то CSS правилом, достаточно велик. И тебе не нужно переводить "#cart-content > td.amount" в XPath, можно просто его скопировать.

I>В принципе очень функциональная штука.

Угу. Я вообще всё больше начинаю верить в декларативные языки запросов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 30.07.07 04:48
Оценка:
S>А у тебя случайно не было ссылок на DOM изнутри JS объектов?
Ссылок — в смысле переменных, которые указывали бы на DOM элементы? конечно были, достаточно много. Знаю, знаю JS eff говорит о том, что надо юзать ID, но к сожелению присваивать ID находу куче элементов не есть хорошо и удобно (Ветка дерева содержит 500 элементов, каждый запоминается в структуре контрола, чтобы быстро обеспечивать выборку. Можно конечно родить енумератор для ID, но как то не комильфо). Или есть вариант?

I>>Да, согласен, бегать будет чуть чаще, но по моему модульность добавляет удобства?

S>Удобство должно быть измеримым. Сама по себе модульность ничего не значит. Слепое следование абстрактным ценностям прививают низкооплачиваемым кодерам, поскольку считается, что они не в состоянии самостоятельно ориентироваться в окружающем мире. Так и здесь — какой бенефит даст тебе возможность не включать, к примеру, анимацию? Кроме download size?
Ну у меня привычка есть — не включать на страницу то, что там не используется — чистота кода так сказать :D
Сам же ругаю FW здоровые — а они как раз и грузят все что можно на каждую страницу. Ведь кроме размера это добавляет времени и на рендеринг страницы — отсройка JS насколько я знаю тоже времени занимает?
Нет, ну в случае с jQuery, я согласен — можно еще мириться, но ведь все таки больше используется именно поисковые запросы, что мешает отделить все остальное на основе плагина? В конце концов если программист найдет нужным включить основные плагины в модуль jQ — это достаточно просто, а вот "вытаскивать" модули из сегодняшней сборки — достаточно проблематично. Я по этому и люблю модульность — не потому что "Так Сказали" :D "Так Сказали" мне говорили когда я на ДВК программил в Малой Академии наук ( оттуда начал я свой компьютерный путь когда было мне 12 лет... эххх ностальгия :D ), с тех пор прошло очень много времени, и опыта я набрался достаточно, и считаю как раз удобно имея функциональный набор комбинировать его так, как тебе необходимо. Просто очень многие как раз не делуют "чистые" страницы и зачастую весь набор библиотек гркзится на каждую страницу, даже если там нет ни одного их вызова — я частенько, расковыривая сайты, такое наблюдал. В принципе если пренебречь тем, что есть первичная нагрузка, и подготовка JS занимает малую толику времени, можно этим принебречь... Но я всегда не любил за это Microsoft :D ( они очень любят делать именно так — навтыкать что нужно и ненужно, расширять свою программу экстенисвно ), и боюсь быть похожими на них... Естественно, все что написал — ИМХО. Быть может я делую ненужную работу, делая страницы более "прозрачными" — не знаю.

S>В других случаях модульность может действительно добавить удобства — там, к примеру, где модули могут быть взаимозаменяемыми. Но что-то я не вижу никакой взаимозаменяемости в jQuery.

А вот тут бы поспорил — представь себе, что в одной форме можно было бы разделить два движка посиковых CSS селекторный и XPath-овый. Хочешь — используй одновремено оба, хочешь по отдельности. Хочешь — прикурвти свои собственные селекторы — ведь XPath & CSS селекторы — не есть конечная инстанция в поиске — можно былоб тотже регсповый прикрутить например. Сделав DOM пространствое единым текстовым полем с возможностью его парсить — есть задачи когда это удобней — опять же ИМХО конечно.

S>А, собственно, зачем? У тебя есть какие-то реальные задачи, требующие неподдерживаемого в jQuery XPath? Или ты просто заранее боишься, что однажды такая задача возникнет, а отказаться от jQuery будет уже поздно?

Ну во первых боюсь :D во вторых если честно — ОЧЕНЬ не хватает position, т.к. без этого часть логики, которую я бы хотел пренести с XSLT ( обычно раскраска данных и создание элементов в контроле ) не может быть перенесена. У меня часто используется определение позиции элементов внутри коллекции, они идут по порядку — и достаточно удобно их раскрашивать либо же перекладывать ориентируясь на их нумерацию в коллекции. Хотя быть может я не до конца просек все фишки jQ?

I>>Хотя даже не знаю, может эти ребята сделают потом отдельно реализацию XPath? Было бы классно, потому как единственную полную реализацию XPath 1.0 я уже приводил 100k

S>Ну, я так думаю, что пусть цветут все цветы. Вот у тебя есть полная реализация XPath. Если она тебе часто нужна, то никакой проблемы один раз ее отдать пользователю нету. Достаточно озаботиться грамотным кэшированием, и никто ничего не заметит. Ну положим 100к отдать — согласен — можно — но она еще и достаточно медленна, и к сожелению не так популярна, как тотже jQ, может быть тогда соптимизировали бы :D А копаться самому — нет, кончено можно — но шибко времени много уйдет + кто сказал что я знаю один лучше остальных :D

S>Я считаю CSS селекторы очень важными, и вот почему: сейчас CSS по факту используется гораздо чаще, чем XSLT. Поэтому как правило HTML уже верстается так, чтобы можно было применять CSS правила. Так что шанс на то, что нужные тебе элементы уже проидентифицированы каким-то CSS правилом, достаточно велик. И тебе не нужно переводить "#cart-content > td.amount" в XPath, можно просто его скопировать.


Быть может, если честно то давно уже очень хочется получить некую суперпозицию XPath и CSS селекторов — CSS селекторы — это некое подобие передвижения по дереву не путем а выборками как бы — и действительно — встречается такое чаще да и синтаксис не так сложен, как в xph, но есть такие моменты которые не решить ими, к сожелению. Я согласен выучить новый язык Я Даже согласен поучавствовать в его созждании, чтобы потом иметь удобный инструмент. А то что сейчас есть — тоже не плохо, но инструменты имеют тенденцию устаревать :/ Скока лет XPath у то :D

В принципе jQ итак сделала шаг в этом направлении — она объеденила CSS sel & XPh. Буду ждать дальнейших шагов. Вот кстати где и нужна будет модульность, о кторой выше говорилось. А то будет уже не 20 кил ) а кил 100 потом

I>>В принципе очень функциональная штука.

S>Угу. Я вообще всё больше начинаю верить в декларативные языки запросов.
Ага, удобно. Но синтаксис мутный к сожелению ) Хотя зная один легко осваиваешь другой
Re[22]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.07.07 05:32
Оценка:
Здравствуйте, ionicman, Вы писали:

S>>А у тебя случайно не было ссылок на DOM изнутри JS объектов?

I>Ссылок — в смысле переменных, которые указывали бы на DOM элементы? конечно были, достаточно много.
Ну вот оттуда и утечки. GC не может разрулить циклы, часть которых расположена в DOM, а часть — в JS.
I>Ну у меня привычка есть — не включать на страницу то, что там не используется — чистота кода так сказать :D
I>Сам же ругаю FW здоровые — а они как раз и грузят все что можно на каждую страницу. Ведь кроме размера это добавляет времени и на рендеринг страницы — отсройка JS насколько я знаю тоже времени занимает?
Что такое "отсройка JS"? Парсинг джаваскрипта? Ну, можно померить, но боюсь разница между 20k и 200k джаваскрипта будет тоньше комариного хвоста.

I>Нет, ну в случае с jQuery, я согласен — можно еще мириться, но ведь все таки больше используется именно поисковые запросы, что мешает отделить все остальное на основе плагина? В конце концов если программист найдет нужным включить основные плагины в модуль jQ — это достаточно просто, а вот "вытаскивать" модули из сегодняшней сборки — достаточно проблематично. Я по этому и люблю модульность — не потому что "Так Сказали" :D "Так Сказали" мне говорили когда я на ДВК программил в Малой Академии наук ( оттуда начал я свой компьютерный путь когда было мне 12 лет... эххх ностальгия :D ), с тех пор прошло очень много времени, и опыта я набрался достаточно, и считаю как раз удобно имея функциональный набор комбинировать его так, как тебе необходимо. Просто очень многие как раз не делуют "чистые" страницы и зачастую весь набор библиотек гркзится на каждую страницу, даже если там нет ни одного их вызова — я частенько, расковыривая сайты, такое наблюдал. В принципе если пренебречь тем, что есть первичная нагрузка, и подготовка JS занимает малую толику времени, можно этим принебречь... Но я всегда не любил за это Microsoft :D ( они очень любят делать именно так — навтыкать что нужно и ненужно, расширять свою программу экстенисвно ), и боюсь быть похожими на них... Естественно, все что написал — ИМХО. Быть может я делую ненужную работу, делая страницы более "прозрачными" — не знаю.

А чего тут знать — оптимизацию нужно делать с профайлером. Смотри на page load times. Если ты потратил день, а сэкономил 1ms из 790, то лучше заняться чем-то другим.

I>А вот тут бы поспорил — представь себе, что в одной форме можно было бы разделить два движка посиковых CSS селекторный и XPath-овый. Хочешь — используй одновремено оба, хочешь по отдельности.

Не понимаю, что значит "по отдельности"? В jQuery и XPath и CSS присутствуют одновременно. Хочешь — используй одновремено оба, хочешь по отдельности. Чего именно ты добъешся, распилив эту функциональность на jQueryCSS.js и jQueryXPath.cs?

S>>А, собственно, зачем? У тебя есть какие-то реальные задачи, требующие неподдерживаемого в jQuery XPath? Или ты просто заранее боишься, что однажды такая задача возникнет, а отказаться от jQuery будет уже поздно?

I>Ну во первых боюсь :D во вторых если честно — ОЧЕНЬ не хватает position, т.к. без этого часть логики, которую я бы хотел пренести с XSLT ( обычно раскраска данных и создание элементов в контроле ) не может быть перенесена.
Как раз раскраска данных и создание элементов делаются на jQuery просто офигенно.
I>У меня часто используется определение позиции элементов внутри коллекции, они идут по порядку — и достаточно удобно их раскрашивать либо же перекладывать ориентируясь на их нумерацию в коллекции. Хотя быть может я не до конца просек все фишки jQ?
Может быть. Приведи пример раскраски, которую ты делаешь в XPath, и не можешь в CSS/jQuery.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 30.07.07 06:07
Оценка:
Если не хранить ссылки, то как тогда быть — ID? :/

добавляет времени и на рендеринг страницы — отсройка JS насколько я знаю тоже времени занимает?
S>Что такое "отсройка JS"? Парсинг джаваскрипта? Ну, можно померить, но боюсь разница между 20k и 200k джаваскрипта будет тоньше комариного хвоста.
Ага, парсинг. Вот про здарежку не скажу — до такой проверки руки не доходили. Быть может она и мала.


похожими на них... Естественно, все что написал — ИМХО. Быть может я делую ненужную работу, делая страницы более "прозрачными" — не знаю.
S>А чего тут знать — оптимизацию нужно делать с профайлером. Смотри на page load times. Если ты потратил день, а сэкономил 1ms из 790, то лучше заняться чем-то другим.
Ну кроме page load существует такой параметр как рпеемтсвееность кода — т.е. "прозрачный" код гораздо легче править аутсорсеру либо же другому человеку в комнаде — т.к. не приходится вычленять что с кем и как работает — все что есть — значит работает. Если же один пишешь — может быть тогда только page load

I>>А вот тут бы поспорил — представь себе, что в одной форме можно было бы разделить два движка посиковых CSS селекторный и XPath-овый. Хочешь — используй одновремено оба, хочешь по отдельности.

S>Не понимаю, что значит "по отдельности"? В jQuery и XPath и CSS присутствуют одновременно. Хочешь — используй одновремено оба, хочешь по отдельности. Чего именно ты добъешся, распилив эту функциональность на jQueryCSS.js и jQueryXPath.cs?
Возможность использовать лишь то что надо и когда надо. Кроме того возможность добавялть свои парсеры.

S>>>А, собственно, зачем? У тебя есть какие-то реальные задачи, требующие неподдерживаемого в jQuery XPath? Или ты просто заранее боишься, что однажды такая задача возникнет, а отказаться от jQuery будет уже поздно?

S>Может быть. Приведи пример раскраски, которую ты делаешь в XPath, и не можешь в CSS/jQuery.
Ну типа такого например:
tr[position() mod 3 = 0 ]
так, на вскидку. У меня такой фигней раскрашиваются группы ячеек в таблице.
Re[18]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 30.07.07 08:27
Оценка:
M>>Сможет ли с этим справиться предложенный getProp или регэксп — не знаю. Я даже не представляю, как на них написать аналог $("#checkout_grid input:checkbox")

I>Ну на самом деле не сложно:

I>GetProp( document.getElementByID("checkout_grid"),["tagName", "type"],["input", "checkbox"] );

На самом деле это сложно Один вызов с ясным CSS против вызова функции (с неясным названием, кстати ) с тремя аргументами

M>>Особенности движка. Много раз обсуждалось в "обсуждении сайта", но общее решение было, что такая фича скорее не нужна, чем нужна


I>:D Ну как сказать, мне очень не хватает — бывает гдето чуть ошибешься, или забудешь чтонидь добавить. Да, я конечно знаю, что можно добьавить все это новыми сообщениями, но как то не удобно, хотя не смертельно есессно :D


Ну вот примерно такая же аргументация была — что это не смертельно Зато, когда длинное сообщение пишешь, часто сидишь, выверяешь текст, чтобы все было сразу — стройно и логично


dmitriid.comGitHubLinkedIn
Re[24]: jQuery – Javascript нового поколения
От: . Великобритания  
Дата: 30.07.07 09:01
Оценка:
ionicman wrote:

> Если не хранить ссылки, то как тогда быть — ID? :/

Да. Можно их генерить. Заведи глобальную функцию
function genId(){return 'id'+(++genId.currId)}

Или как вариант — разрушать ссылки вручную (например в window.onunload).
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[24]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 30.07.07 09:07
Оценка:
I>добавляет времени и на рендеринг страницы — отсройка JS насколько я знаю тоже времени занимает?
S>>Что такое "отсройка JS"? Парсинг джаваскрипта? Ну, можно померить, но боюсь разница между 20k и 200k джаваскрипта будет тоньше комариного хвоста.
I>Ага, парсинг. Вот про здарежку не скажу — до такой проверки руки не доходили. Быть может она и мала.

200KB у нас занимает 200ms. При том, что, на самом деле, это можно убить до 50ms максимум — мы оптимизацией еще не занимались

I>похожими на них... Естественно, все что написал — ИМХО. Быть может я делую ненужную работу, делая страницы более "прозрачными" — не знаю.

S>>А чего тут знать — оптимизацию нужно делать с профайлером. Смотри на page load times. Если ты потратил день, а сэкономил 1ms из 790, то лучше заняться чем-то другим.
I>Ну кроме page load существует такой параметр как рпеемтсвееность кода — т.е. "прозрачный" код гораздо легче править аутсорсеру либо же другому человеку в комнаде — т.к. не приходится вычленять что с кем и как работает — все что есть — значит работает. Если же один пишешь — может быть тогда только page load

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

S>>Не понимаю, что значит "по отдельности"? В jQuery и XPath и CSS присутствуют одновременно. Хочешь — используй одновремено оба, хочешь по отдельности. Чего именно ты добъешся, распилив эту функциональность на jQueryCSS.js и jQueryXPath.cs?

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

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

S>>>>А, собственно, зачем? У тебя есть какие-то реальные задачи, требующие неподдерживаемого в jQuery XPath? Или ты просто заранее боишься, что однажды такая задача возникнет, а отказаться от jQuery будет уже поздно?

S>>Может быть. Приведи пример раскраски, которую ты делаешь в XPath, и не можешь в CSS/jQuery.
I>Ну типа такого например:
I>tr[position() mod 3 = 0 ]
I>так, на вскидку. У меня такой фигней раскрашиваются группы ячеек в таблице.

Грузанул
В рассылке по jQuery подсказали: (не проверено) $('tr').filter(function(position) { return position % 3 == 0; });
Что, увы, не настолько же понятно


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: explode  
Дата: 06.08.07 13:57
Оценка: 34 (1)
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>Статья:

DMD>jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


DMD>Авторы:

DMD> Dmitrii 'Mamut' Dimandt

рассмотренный пример пример ajax с xml-документом не работает:


<html><head><script type="text/javascript" language="JavaScript" src="../jquery.pack.js"></script>
<script type="text/javascript" language="JavaScript">
$(document).ready(function () {
    $('#test').click(function () {
        $.post('ajaxtest2.php', {}, onAjaxSuccess);
        
        function onAjaxSuccess(xml) {
          items = $("item", xml);
          item = $("#1", xml);
          item2 = $("item[@id='2']", xml);
          alert(item2.html());  //undefined, также как и остальные свойства объекта item2
        }
    });
});
</script></head>
<body><form><input type="button" id="test" value="go" /></form></body></html>






ajaxtest2.php:


<?php
  header("Content-Type: text/xml; charset=utf-8");
?>
<list>
  <item id="1">
    Item 1 
  </item>
  <item id="2">
    Item 2 
  </item>
</list>
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 07.08.07 07:15
Оценка:
E>рассмотренный пример пример ajax с xml-документом не работает:

    alert(item2.html());  //undefined, также как и остальные свойства объекта item2



Спасибо за найденную ошибку. Сработает item2.text(). Это, видимо, связано с тем, что полученный xml не является частью DOM загруженного HTML-документа, поэтому у него нет свойства innerHtml


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 07.08.07 14:23
Оценка: :)
Размышляя о "простоте, изящности и т.д." jQuery хочу задать вопрос знатокам этого фреймворка. Во многих туториалах приводятся самые простейшие примеры, дескать, вот как легко и непринуждённо можно повесить клик на ссылку и т.п. Возьмём ещё более примитивный пример — нужно при загрузке просто показать идиотский алерт: "Превед вам, медведы, от jQuery!". Внимание, очень конкретный вопрос — сколько всего вызовов (всяких разных функций) будет сделано в ходе работы фреймворка, чтобы показать этот алерт?
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 08.08.07 07:36
Оценка:
Z>Размышляя о "простоте, изящности и т.д." jQuery хочу задать вопрос знатокам этого фреймворка. Во многих туториалах приводятся самые простейшие примеры, дескать, вот как легко и непринуждённо можно повесить клик на ссылку и т.п. Возьмём ещё более примитивный пример — нужно при загрузке просто показать идиотский алерт: "Превед вам, медведы, от jQuery!". Внимание, очень конкретный вопрос — сколько всего вызовов (всяких разных функций) будет сделано в ходе работы фреймворка, чтобы показать этот алерт?


Я немножко изменил условия. дело в том, что функция, вызывающая alert(), ждет, пока пользователь не кликнет OK, что сбивает с толку профайлер. То есть, профайлер показывает, что функция очень долго выполняется.

Поэтому http://dmitriid.com/files/rsdn/jquery/preved.html
Специально взята нескомпрессированная версия jQuery 1.1.2 (ага, старенькая)
<html>
    <head>
        <script language="Javascript" type="text/javascript" src="/js/jquery-latest.js"></script>

        <script>
            $(document).ready(
                function() {
                    $(document.body).append('preved');
                }
            );
        </script>
    </head>
    <body>
    </body>
</html>


Профайлер показывает: Profile (6.489ms, 98 calls)
Гигантское время, 6.489 миллисекунды. Это в 52 раза меньше, чем загрузка собственно страницы (и это при том, что 338ms занимала загрузка уже закешированного файла jquery-latest.js и 11ms — собственно html)

Количество вызовов внутри jQuery — это далеко не самая главная проблема в библиотеке


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: Аноним  
Дата: 08.08.07 09:30
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Профайлер показывает: Profile (6.489ms, 98 calls)

M>Гигантское время, 6.489 миллисекунды. Это в 52 раза меньше, чем загрузка собственно страницы (и это при том, что 338ms занимала загрузка уже закешированного файла jquery-latest.js и 11ms — собственно html)

У меня 139 calls (110 — при загрузке) на jquery-1.1.3.1.js. Дело-то совсем не во времени, а в кажущейся простоте, которую приписывают jQuery. Вот цитата из вашей статьи:

Для начала – решение на чистом Javascript:

var tables = document.getElementsByTagName("table");
for ( var t = 0; t < tables.length; t++ ) {
var rows = tables[t].getElementsByTagName("tr");
for ( var i = 1; i < rows.length; i += 2 )
if ( !/(^|s)odd(s|$)/.test( rows[i].className ) )
rows[i].className += " odd";
}

Ну а теперь – jQuery:

$("tr:nth-child(odd)").addClass("odd");

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


Я, конечно, понимаю, что пример натянут, но вы что, серъёзно считаете, что это корректное сравнение??? За этой 1-ой строчкой стоит полновесный скрипт, создание десятков функций, сто с лишним вызовов при загрузке, ещё с десяток, если не больше вызовов непосредственно при исполнении этой конкретной задачи. Я специально акцентирую внимание на "вызовах" и их количестве, чтобы подчеркнуть теневую активную работу скрипта, да и сам по себе вызов функции — не самое простое, что есть в javascript. В общем, по сравнению с приведённым вами примером "чистого" javascript-a, решение от jQuery намного сложнее, в тени остаётся масса работы (большая часть из которой не имеет вообще никакого отношения к вышеупомянутой задаче)... Я ещё понимаю, когда в плюс библиотекам пишут экономию времени на разработку или минимум кроссбраузерных проблем, но называть это более простым решением — несправедливо по отношению к "чистому" javascript. В результате таких вот "рекламных кампаний в массы о простоте" фреймворки начинают пользовать почём зря, тултипчики показать, раскрасить чего и т.п., то есть там, где 10-20-30 строк понятного кода были бы уже достаточным (идеальным) решением.
Re[4]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 08.08.07 09:33
Оценка:
Предыдущее сообщение от меня, прошу прощения, разлогинился случайно.
Re[5]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 08.08.07 10:53
Оценка: +1
Z>Предыдущее сообщение от меня, прошу прощения, разлогинился случайно.

Хорошо. Начинаем по-новой

Я, конечно, понимаю, что пример натянут, но вы что, серъёзно считаете, что это корректное сравнение??? За этой 1-ой строчкой стоит полновесный скрипт, создание десятков функций, сто с лишним вызовов при загрузке, ещё с десяток, если не больше вызовов непосредственно при исполнении этой конкретной задачи.


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

Потому что jQuery — это фреймворк, который действительно упрощает решение проблем. Ты же не будешь спорить с тем, что $('div.items :nth(odd)') проще, чем 5-10 килобайтов кода, пытающегося достигнуть той же функциональности?

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

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


Еще раз повторю — вызовы функций — это не самая большая проблема в jQuery. Они занимают хорошо, если 1/10 часть от всего другого на странице.

Насчет "намного сложнее". Попрошу привести мне, например, реализацию следующего кода на чистом JS:

http://codylindley.com/blogstuff/js/jquery/ (пример С)
$("div.contentToChange")  // находим div с class="contentToChange"
    .find("p")            // в этом div находим все p
    .not(".alert")        // которые не имеют class="alert"
    .append(              // добавляем текст
        "<strong class=\"addedtext\"> This text was just appended to this paragraph</strong>"
    )


Потом сравнить с jQuery. Если получится меньше кода, скажите мне, как.

Да, на фоне будут вызовы различных функций. Да, вызовов этих функций будет много. Но. Разве их будет меньше, если мы реализуем то же на "чистом" JS?

В результате таких вот "рекламных кампаний в массы о простоте" фреймворки начинают пользовать почём зря, тултипчики показать, раскрасить чего и т.п., то есть там, где 10-20-30 строк понятного кода были бы уже достаточным (идеальным) решением.


Покажи мне JS для показа тултипа например, вот такого: http://jquery.bassistance.de/tooltip/ Чтобы его можно было так же легко прикреплять к элементам и чтобы он был так же изменяем (см. пример "Two tooltips with extra classes"). Когда напишешь половину jQuery...


dmitriid.comGitHubLinkedIn
Re[6]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 08.08.07 12:12
Оценка: -1
M>Да. Для достижения той же функциональности мне придется написать столько же (если не больше), сколько во всем jQuery, кода ручками, если я хочу получить такую же функциональность.

LOL. Кому нужна такая же точно функциональность в полном объёме? Покажи мне всего один сайт, который использует ВСЮ функциональность jQuery разом. А если всё-таки кому-то и нужен гипер-мега-важный-яваскрипт-актив, то тем более стоит писать своё.

M>Потому что jQuery — это фреймворк, который действительно упрощает решение проблем. Ты же не будешь спорить с тем, что $('div.items :nth(odd)') проще, чем 5-10 килобайтов кода, пытающегося достигнуть той же функциональности?


Конечно буду, ты почему-то всё время демонстрируешь какой-то отдельно взятый левый вызов, хитро обзывая это простым кодом. This is передёргивание. Почему не пишешь ниже код всей т.н. фабрики рядом? А весь остальной код, что будет участвовать в решении задачи? Посмотри в профайлере, кто работает и рядышком их, рядышком, это и есть код, который можно справедливо противопоставлять 'чистому' javascript.

M>Еще раз повторю — вызовы функций — это не самая большая проблема в jQuery. Они занимают хорошо, если 1/10 часть от всего другого на странице.


Ну, значит, ещё хуже дела обстоят, чем я думал.

M>Попрошу привести мне, например, реализацию следующего кода на чистом JS

M>Покажи мне JS для показа тултипа

Беспроигрышная позиция — иди, Zeroglif, пиши тултипы и прочее, а я буду сидеть и оценивать, не напишешь — не доказал. Мне недосуг, написался уже выше головы, да и чего тут кодить, если и ёжику понятно, код отдельно взятой задачи всегда будет проще/адекватнее, чем весь код jQuery вместе взятый и прекратите уже, наконец, хитро популизировать jQuery, выдавая вызовы неких функций за весь его код, это вводит в заблуждение ньюбов. Почитал туториалы, "New JavaScript", "magic сhaining", дичь какая-то... Если и сравнивать, так библиотеку против библиотеки, где более-менее равная функциональность, это полезно для профи, делающего выбор. Отдельные же задачи всегда выиграют по всем статьям, или говоря лозунгами — "Чистый javascript рулит!"...

M>Да, вызовов этих функций будет много. Но. Разве их будет меньше, если мы реализуем то же на "чистом" JS?


Взгляни ещё раз на свою статью, где пример раскраски таблицы, что уж может быть проще. Неужели ты никогда не открывал страницы, где типа 2-3-4 красивых фишечки, и вся эта ерундистика стоит аж на prototype.js, это сделали люди, у которых a)нет времени; б)нет знаний; c)нет сил отказаться от лапши, что так проще...

p.s. prototype.js привёл просто как типичный пример бездумного использования популярного фреймворка
Re[4]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.08.07 04:05
Оценка: 32 (1) +1
Здравствуйте, <Аноним>, Вы писали:

А>У меня 139 calls (110 — при загрузке) на jquery-1.1.3.1.js. Дело-то совсем не во времени, а в кажущейся простоте, которую приписывают jQuery. Вот цитата из вашей статьи:

Налицо терминологическая путаница.
Под простотой обычно понимают простоту применения. Никто не пытался убедить, что jQuery сведет все NP-проблемы к P-проблемам.
Поэтому никакой "кажущести" нет. Простой код — он и есть простой. Простота кода обеспечивает скорость разработки и дешевизну отладки .

Если мы говорим о вычислительной сложности, то оперировать количеством вызовов — бессмысленно. Потому что нас интересуют наблюдаемые характеристики. Простота прикладного кода — одна из таких наблюдаемых характеристик. Ее наблюдает программист, тестер, и менеджер проекта.
Пользователь ничего этого не видит. Впрочем, он не видит и вызовов — все, что он видит — это производительность.
Производительность имеет очень мало общего с количеством вызовов. Она мерится в миллисекундах.

Неужели это неочевидно? Неужели есть иллюзия, что код с одним вызовом, который выполняется 1600ms, чем-то лучше, чем код с 200 вызовами, исполняющийся за 160ms?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 09.08.07 07:35
Оценка:
M>>Да. Для достижения той же функциональности мне придется написать столько же (если не больше), сколько во всем jQuery, кода ручками, если я хочу получить такую же функциональность.

Z>LOL. Кому нужна такая же точно функциональность в полном объёме? Покажи мне всего один сайт, который использует ВСЮ функциональность jQuery разом. А если всё-таки кому-то и нужен гипер-мега-важный-яваскрипт-актив, то тем более стоит писать своё.


90% функциональности jQuery указана в статье. Мы, например, ее всю используем. За 20KB исходников мы получили невероятно гибкий и удобный в использовании инструмент, покрывающий 100% наших нужд.

M>>Потому что jQuery — это фреймворк, который действительно упрощает решение проблем. Ты же не будешь спорить с тем, что $('div.items :nth(odd)') проще, чем 5-10 килобайтов кода, пытающегося достигнуть той же функциональности?


Z>Конечно буду, ты почему-то всё время демонстрируешь какой-то отдельно взятый левый вызов, хитро обзывая это простым кодом. This is передёргивание.


Ни в коем случае не передергивание. Я описываю фреймворк. С его использованием задачи решаются проще, чем написание того же ручками с нуля.

Z>Почему не пишешь ниже код всей т.н. фабрики рядом? А весь остальной код, что будет участвовать в решении задачи? Посмотри в профайлере, кто работает и рядышком их, рядышком, это и есть код, который можно справедливо противопоставлять 'чистому' javascript.


Зачем? Любой фреймворк — это всегда overhead. Цель люого фреймворка — упростить разработку, спрятав "чистый" код от разработчика. Кому надо, посмотрит в код фреймворка, благо в jQuery его не так уж и много. Заметь, что если ты будешь реализовывать ту же функциональность на чистом JS — то есть настолько же гибкую, легкую и т.п., то все равно ты придешь к тому же, если не большему, количеству кода и вызовов.

Ключевое здесь — гибкое и легкое. ЧТобы не пришлось для каждой отдельной страницы писать тонны кода такого типа:
// jQuery
$('a.ajax');

// аналог
var links = getElementsByTagName('a');
var selectedLinks = [];
for(i = 0; i < links.length; i++)
{
    // split потому что может быть class="ajax links other_class"
    elemClasses = links[i].className.split(/\s+/);
    if(inArray(elemClasses, "ajax") > -1)
    {
        selectedLinks.push(links[i]);
    }
}

// функция взята из jQuery
function inArray(a, и)
{
    for ( var i = 0, al = a.length; i < al; i++ )
        if ( a[i] == b )
            return i;

    return -1;
}


При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Что произойдет, когда "a.ajax" превратится в "#ajax a"?

M>>Еще раз повторю — вызовы функций — это не самая большая проблема в jQuery. Они занимают хорошо, если 1/10 часть от всего другого на странице.

Z>Ну, значит, ещё хуже дела обстоят, чем я думал.

Рассказываю саму большую проблему jQuery. http://dev.jquery.com/~john/speed/

На вырожденных запросах типа $('body > div.dialog div:nth-child(even)') выборка может идти достаточно долго. Хотя на новых версиях в тесте эта выборка длится умопомрачительное время — 34-35 тысячных секунды. Это быстрее, чем мы моргаем (один "морг" — это порядка 200-250 миллисекунд).

M>>Попрошу привести мне, например, реализацию следующего кода на чистом JS

M>>Покажи мне JS для показа тултипа

Z>Беспроигрышная позиция — иди, Zeroglif, пиши тултипы и прочее, а я буду сидеть и оценивать, не напишешь — не доказал. Мне недосуг, написался уже выше головы, да и чего тут кодить, если и ёжику понятно, код отдельно взятой задачи всегда будет проще/адекватнее, чем весь код jQuery вместе взятый


Нет такого понятия, как "отдельно взятая задача". Есть такое понятие, как "отдельно взятый проект". Прикажешь для каждой страницы писатьотдельно ручками с нуля? Это ж сколько кода ты понапишешь? Намного больше, чем 20 килобайт. И намного менее гибкого. И намного менее "reusable" (ключевое слово, кстати).

Тот же tooltip. Я не зря попросил его написать. Потому что изначально было

В результате таких вот "рекламных кампаний в массы о простоте" фреймворки начинают пользовать почём зря, тултипчики показать, раскрасить чего и т.п., то есть там, где 10-20-30 строк понятного кода были бы уже достаточным (идеальным) решением.


Я привел пример тултипа, написанного с помощью jQuery. Пожалуйста, вот "20-30 строчек" с похожей функциональностью: http://www.walterzorn.com/tooltip/tooltip_e.htm 36.8КБ
jQuery + предложенный мной тултип — 29.7КБ. Причем из них 20 — это jQuery, которая помимо помощи в показе тултипа позволяет мне еще много чего.

Z>и прекратите уже, наконец, хитро популизировать jQuery, выдавая вызовы неких функций за весь его код, это вводит в заблуждение ньюбов. Почитал туториалы, "New JavaScript", "magic сhaining", дичь какая-то... Если и сравнивать, так библиотеку против библиотеки, где более-менее равная функциональность, это полезно для профи, делающего выбор. Отдельные же задачи всегда выиграют по всем статьям, или говоря лозунгами — "Чистый javascript рулит!"...


См. выше про тултипы. Рулит не чистый javascript, а библиотеки, позволяющие быстро и эффективно достигать функциональности, которые с помощью чистого JS достижимы с трудом. Особенно для ньюбов.

Покажи мне ньюба, который сможет без подсказки написать приведенный в самом начале аналог $('a.ajax'). Или ньюба, который сможет написать кроссбраузерный Ajax. А если делать его грамотно, то меньше кода, чем здесь особо и не напишешь. Ты готов весь этот код писать сам, ручками? Я — нет. Мне достаточно того, что он есть в jQuery, и я им могу пользоваться.

M>>Да, вызовов этих функций будет много. Но. Разве их будет меньше, если мы реализуем то же на "чистом" JS?


Z>Взгляни ещё раз на свою статью, где пример раскраски таблицы, что уж может быть проще. Неужели ты никогда не открывал страницы, где типа 2-3-4 красивых фишечки, и вся эта ерундистика стоит аж на prototype.js, это сделали люди, у которых a)нет времени; б)нет знаний; c)нет сил отказаться от лапши, что так проще...


Z>p.s. prototype.js привёл просто как типичный пример бездумного использования популярного фреймворка


Ну так это — проблема тех, кто его так использует. Тот же jQuery можно с легкостью использовать на страницах с суммарным объемом (картинки+css+сама страница) от 15-20КБ и выше.

Кстати. Насчет раскраски таблицы. У нас в проекте есть страница, где таблица раскрашивается с помощью jQuery. Знаешь, почему? Потому что jQuery браузером кэшируется и потом сервером не дергается, а для каждого ряда передавать class="even" мы посчитали накладным. Тем более, что у нас не столько раскрашивается, сколько вот: http://dmitriid.com/files/rsdn/jquery/table.html

Почему? ПОтому что jQuery закэшировано, и браузер ее все равно из кэша поднимает. Код на подсветку рядов в таблице занимает 229 вызовов за гигантское время в 14 миллисекунд — все равно быстрее, чем я могу моргнуть.


dmitriid.comGitHubLinkedIn
Re[8]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 09.08.07 09:41
Оценка: -1
M>90% функциональности jQuery указана в статье. Мы, например, ее всю используем. За 20KB исходников мы получили невероятно гибкий и удобный в использовании инструмент, покрывающий 100% наших нужд.

Вопрос — если так нужно вовсю использовать javascript в ваших проектах, то где вы тогда потеряли javascript-программиста? Это принципиальная позиция (работать с чужим кодом), или вынужденная (не умеем, нет времени...)? А этими 20-тью KB исходников можно только гвозди забивать, для работы 60 KB будем читати (исходник, кстати, есть с комментами вдоль и поперёк?).

M>>>Потому что jQuery — это фреймворк, который действительно упрощает решение проблем. Ты же не будешь спорить с тем, что $('div.items :nth(odd)') проще, чем 5-10 килобайтов кода, пытающегося достигнуть той же функциональности?


Z>>Конечно буду, ты почему-то всё время демонстрируешь какой-то отдельно взятый левый вызов, хитро обзывая это простым кодом. This is передёргивание.


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


Ну, да, общие фразы... Термины "задачи" и "проще" не раскрыты. Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных). Чтобы я головой отвечал за свою работу на базе чужого фреймворка, я должен знать досконально не только все эти детско-садовские туториалы про нанизывание вызовов и проч., а предназначение каждой из 2345 строк jQuery, что и зачем там делается (потому что это javascript, стеклянные замки на зыбучем песке). К тому же мне нужно оттянуть время на изучение, потом на сопровождение развития всего этого дела, каждый фреймворк развивается и поддерживается по-разному, нужно следить, вычитывать, увольте. Мораль — не всем проще и удобнее с фреймворком.


Z>>Почему не пишешь ниже код всей т.н. фабрики рядом? А весь остальной код, что будет участвовать в решении задачи? Посмотри в профайлере, кто работает и рядышком их, рядышком, это и есть код, который можно справедливо противопоставлять 'чистому' javascript.


M>Зачем? Любой фреймворк — это всегда overhead. Цель люого фреймворка — упростить разработку, спрятав "чистый" код от разработчика. Кому надо, посмотрит в код фреймворка, благо в jQuery его не так уж и много. Заметь, что если ты будешь реализовывать ту же функциональность на чистом JS — то есть настолько же гибкую, легкую и т.п., то все равно ты придешь к тому же, если не большему, количеству кода и вызовов.


Кому надо посмотрит? И чего он там увидит? Если взгляд его будет осмыслен, то какого рожна он не потратил пару-тройку дней, чтобы этот смысл вложить в свой собственный код? Ну, не идеализируй пожалуйста, своего любимца, не такой уж он и гибкий, не такой уж и лёгкий и т.д. Если я буду реализовать такую же функциональность, то я приду совершенно к другому результату, он может быть и хуже, а может и лучше, who knows. Единственное, что меня раздражает в твоём посыле — это то, что jQuery позиционируется, как сгусток идеальных простых решений, дескать, проще уже не бывает. Рискну предположить обратное.

M>Ключевое здесь — гибкое и легкое.

M>При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Неправильно. Если подразумевается re-use, то нормальный программист всегда будет писать в таком ключе, ничего в этом нет революционного, он сделает себе пакет, под себя, без мусора и избыточной функциональности. И то, что он сделает, просто останется вне зоны твоего/моего/мирового внимания, что никак не говорит о том, что этот код хоть чем-то проигрывает в гибкости и т.п. фреймворкам.

Z>>Беспроигрышная позиция — иди, Zeroglif, пиши тултипы и прочее, а я буду сидеть и оценивать, не напишешь — не доказал. Мне недосуг, написался уже выше головы, да и чего тут кодить, если и ёжику понятно, код отдельно взятой задачи всегда будет проще/адекватнее, чем весь код jQuery вместе взятый


M>Нет такого понятия, как "отдельно взятая задача". Есть такое понятие, как "отдельно взятый проект". Прикажешь для каждой страницы писатьотдельно ручками с нуля? Это ж сколько кода ты понапишешь? Намного больше, чем 20 килобайт. И намного менее гибкого. И намного менее "reusable" (ключевое слово, кстати).


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

Z>>и прекратите уже, наконец, хитро популизировать jQuery, выдавая вызовы неких функций за весь его код, это вводит в заблуждение ньюбов. Почитал туториалы, "New JavaScript", "magic сhaining", дичь какая-то... Если и сравнивать, так библиотеку против библиотеки, где более-менее равная функциональность, это полезно для профи, делающего выбор. Отдельные же задачи всегда выиграют по всем статьям, или говоря лозунгами — "Чистый javascript рулит!"...


M>См. выше про тултипы. Рулит не чистый javascript, а библиотеки, позволяющие быстро и эффективно достигать функциональности, которые с помощью чистого JS достижимы с трудом. Особенно для ньюбов.


M>Покажи мне ньюба, который сможет без подсказки написать приведенный в самом начале аналог $('a.ajax'). Или ньюба, который сможет написать кроссбраузерный Ajax. А если делать его грамотно, то меньше кода, чем здесь особо и не напишешь. Ты готов весь этот код писать сам, ручками? Я — нет. Мне достаточно того, что он есть в jQuery, и я им могу пользоваться.


Что же за пренебрежение к ручкам-то? Я готов ко всему, было бы желание. Про "меньше кода не напишешь" повторюсь — сие нам не ведомо.
Re[5]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 09.08.07 10:26
Оценка: -2
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, <Аноним>, Вы писали:


А>>У меня 139 calls (110 — при загрузке) на jquery-1.1.3.1.js. Дело-то совсем не во времени, а в кажущейся простоте, которую приписывают jQuery. Вот цитата из вашей статьи:

S>Налицо терминологическая путаница.
S>Под простотой обычно понимают простоту применения. Никто не пытался убедить, что jQuery сведет все NP-проблемы к P-проблемам.
S>Поэтому никакой "кажущести" нет. Простой код — он и есть простой. Простота кода обеспечивает скорость разработки и дешевизну отладки .

Какая ещё терминологическая путаница, в каком месте код jQuery проще?

S>Если мы говорим о вычислительной сложности, то оперировать количеством вызовов — бессмысленно. Потому что нас интересуют наблюдаемые характеристики. Простота прикладного кода — одна из таких наблюдаемых характеристик. Ее наблюдает программист, тестер, и менеджер проекта.


А мы разве говорили о вычислительной сложности? Мой посыл был продемонстрировать, что за обыкновенным тупым алертом стоит работа многих-многих-многих функций, которые при этом 139!!! раз вызываются. Чтобы обсчитать фреймворк и показать 1 алерт. Налицо сумасшедший контраст между задачей отобразить алерт и работой интерпретатора. И самое смешное, что такие контрастные примеры неоптимальной работы приводят сами популяризаторы фреймворков, вместо того, чтобы в узком профессиональном кругу обсуждать плюсы/минусы и демонстрировать действительно многомерные примеры прикладного использования, идёт рекламная кампания, направленная прежде всего на непрофессиональную часть javascript-сообщества (ньюбов) в стиле "проще-проще-проще" с соответствующими примитивными копипастными примерами.

S>Пользователь ничего этого не видит. Впрочем, он не видит и вызовов — все, что он видит — это производительность.

S>Производительность имеет очень мало общего с количеством вызовов. Она мерится в миллисекундах.

ОК, ещё раз повторю, может кто и услышит — не во времени дело, а в соответствии кода задаче.

S>Неужели это неочевидно? Неужели есть иллюзия, что код с одним вызовом, который выполняется 1600ms, чем-то лучше, чем код с 200 вызовами, исполняющийся за 160ms?


Ой, мама, дорогая, мне нужно было только показать 1 алерт с текстом "Превед вам, медведы, от jQuery?", ты мне советуешь для этого использовать jQuery? А что, подумаешь, куча работы в фоне, зато милисекунды никто не заметит. Извращённое несоответствие кода задаче. По всем статьям: загрузка, излишняя работа интерпретатора, создание сотни объектов, 139 вызовов и проч. Этот пример — квинтэссенция бездумного javascript. C такими примерами нужно бороться, а не пропагандировать похожее примитивное использование библиотек. Так, как пока безуспешно стараются побороть с "bad practice" (eval, with и т.п.) в javascript, пользователь хреновый код без ошибок тоже не заметит, но это ж не отменяет тот факт, что код хреновый. Неужели это неочевидно?
Re[9]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 09.08.07 10:39
Оценка: +1
M>>90% функциональности jQuery указана в статье. Мы, например, ее всю используем. За 20KB исходников мы получили невероятно гибкий и удобный в использовании инструмент, покрывающий 100% наших нужд.

Z>Вопрос — если так нужно вовсю использовать javascript в ваших проектах, то где вы тогда потеряли javascript-программиста? Это принципиальная позиция (работать с чужим кодом), или вынужденная (не умеем, нет времени...)? А этими 20-тью KB исходников можно только гвозди забивать, для работы 60 KB будем читати (исходник, кстати, есть с комментами вдоль и поперёк?).


Ну я Javascript-программист. Я увидел, что у мнея появился инструмент, который позволяет мне без геморроя решать огромное количество задач.

Зачем мне читать исходник? Исходник я читал два раза — когда дебагил Ajax + XML (оказалось, проблема не в jQuery, а на серваке была) и когда смотрел, как реализована jQuery.extend.

Рассказываю по порядку. Это истина жизни, странно, что ее не все понимают.

Имеется, например, javascript-программист на зарплате за 1000 баксов в месяц. Нужна функциональность, равная по возможностям хотя бы половине jQuery. За сколько этот программист напишет подобную функциональность? За два месяца? За три? А выявлять ошибки? А тестировать на самых популярных браузерах? Еще, допустим месяц-полтора. Итого 4500 баксов вылетели в трубу.

За эти же 4,5 месяца я с помощью jQuery, используя только два сторонних плагина (datePicker и Taconite) написал всю требуемую мне админ-часть. С Аяксом, кучей интересных (и — главное! — нужных) формочек по сложным правилам и прочая и прочая.

Смотри. Что тебе нужно для любого проекта размером большего, чем домашняя страничка?

Тебе нужен кроссплатформенный Аякс. Гибкий в использовании, чтобы можно было писать:
ajaxPost(
    url,
    {params},
    callback
)


Для реализации этого ты напишешь ненамного меньше кода, чем http://jqueryjs.googlecode.com/svn/trunk/jquery/src/ajax/ajax.js и, возможно, даже больше.

Что еще нужно? Нужна быстрая выборка элементов. getElementById + getElementsByTagName — это неудобно, я показывал это на примере "a.ajax". Что-нибудь хитрее, вроде "#news div.items > h1" — и любой чистый JS в пролете. Как минимум, надо писать общие функции типа http://jqueryjs.googlecode.com/svn/trunk/jquery/src/selector/selector.js (ну или там DomQuery).

Простейшая анимация будет удобной. http://jqueryjs.googlecode.com/svn/trunk/jquery/src/fx/fx.js

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

Z>>>Конечно буду, ты почему-то всё время демонстрируешь какой-то отдельно взятый левый вызов, хитро обзывая это простым кодом. This is передёргивание.

M>>Ни в коем случае не передергивание. Я описываю фреймворк. С его использованием задачи решаются проще, чем написание того же ручками с нуля.
Z>Ну, да, общие фразы... Термины "задачи" и "проще" не раскрыты.

Реализацию тултипа на jQuery ты мне так и не привел Ну и поцитирую себя же:

// jQuery
$('a.ajax');

// аналог
var links = getElementsByTagName('a');
var selectedLinks = [];
for(i = 0; i < links.length; i++)
{
    // split потому что может быть class="ajax links other_class"
    elemClasses = links[i].className.split(/\s+/);
    if(inArray(elemClasses, "ajax") > -1)
    {
        selectedLinks.push(links[i]);
    }
}

// функция взята из jQuery
function inArray(a, и)
{
    for ( var i = 0, al = a.length; i < al; i++ )
        if ( a[i] == b )
            return i;

    return -1;
}


При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Что произойдет, когда "a.ajax" превратится в "#ajax a"?


Приведенный пример не надуманный. Что-то вроде "$('a.ajax')" используется у меня на http://dmitriid.com/jquery

Z>Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных).


Не завоевывают именно из-за таких людей, которые готовы тратить уймы времени и писать тонны кода, когда можно в десятки раз увеличить свою производительность

Z>Чтобы я головой отвечал за свою работу на базе чужого фреймворка, я должен знать досконально не только все эти детско-садовские туториалы про нанизывание вызовов и проч., а предназначение каждой из 2345 строк jQuery, что и зачем там делается (потому что это javascript, стеклянные замки на зыбучем песке).




Посмотри на список сайтов, которые пользуются jQuery: http://docs.jquery.com/Sites_Using_jQuery По-моему, это — достаточный аргумент в пользу библиотеки.
Исходников там не так уж и много, их можно наискосок, не вдаваясь в детали, прочитать минут за 15, а то и меньше. Почитай, советую. Потом посмотри на тонны своего собственного кода и задайся вопросом: а почему у меня не так.
Более того, цитирую
Автор: Sinclair
Дата: 21.07.06

Из всего этого следуют Правила большого пальца:
1. Все, что можно купить, нужно покупать (cюда же входит подбор бесплатных компонентов, при их наличии)
2. Все, что нельзя купить, нужно аутсорсить
3. Нельзя аутсорсить "core" — то, за что тебе платят деньги.

Т.е., если ты продаешь программу для бухгалтерии:
1. СУБД, компилятор, визуальные компоненты, инсталлер, хелп вьювер и т.п. — приобретаются
2. Документация, саппорт, скины, кастомные кофигурации — аутсорсятся.
3. Ядро пишется твоей командой высококлассных специалистов, проверяется твоей командой профессионального QA.

Сейчас большинство народу, не принявшего п.1, уже вышли из бизнеса. Сейчас идет освоение п.2.


И это — так. Пока ты на каждый чих пишешь 10-20-30 строк "чистого JS", мы уже написали весь необходимый функционал и продаем свой продукт

Еще советую здесь: http://www.rsdn.ru/Forum/?mid=2027495
Автор: Sinclair
Дата: 27.07.06


Z>К тому же мне нужно оттянуть время на изучение, потом на сопровождение развития всего этого дела, каждый фреймворк развивается и поддерживается по-разному, нужно следить, вычитывать, увольте. Мораль — не всем проще и удобнее с фреймворком.


Знаешь среднее время выучивания jQuery? 2-5 дней Проверено на 11 людях, включая меня
Учти, что твой код тоже надо учить. Особенно, если ты, напимер, уволишься или перейдешь на другой проект, а твой код кому-то придется сопровождать и/или править.

Более того, фреймворки не меняют по десять раз на дню. Раз выбрав один, разработка обычно продолжается, с использованием именно его. Твой собственный фреймворк и/или набор собственного кода тоже развивается, изменяется и проч. В команде из более, чем одного человека это значит, что кому-то все равно придется следить, вычитывать и проч.

Z>>>Почему не пишешь ниже код всей т.н. фабрики рядом? А весь остальной код, что будет участвовать в решении задачи? Посмотри в профайлере, кто работает и рядышком их, рядышком, это и есть код, который можно справедливо противопоставлять 'чистому' javascript.


M>>Зачем? Любой фреймворк — это всегда overhead. Цель люого фреймворка — упростить разработку, спрятав "чистый" код от разработчика. Кому надо, посмотрит в код фреймворка, благо в jQuery его не так уж и много. Заметь, что если ты будешь реализовывать ту же функциональность на чистом JS — то есть настолько же гибкую, легкую и т.п., то все равно ты придешь к тому же, если не большему, количеству кода и вызовов.


Z>Кому надо посмотрит? И чего он там увидит? Если взгляд его будет осмыслен, то какого рожна он не потратил пару-тройку дней, чтобы этот смысл вложить в свой собственный код?


Ну-ну. Я очнеь хочу посмотреть на того человека, который с нуля ручками за 2-3 дня напишет функционал, равный jQuery. Кстати, я из jQuery уже выдирал куски кода (типа extend, например), для использования в "чистом JS". Ничего, не умер. Во всех остальных случаях, когда надо было использовать хотя бы три-четыре функции, аналогичные jQuery, легче (и оправданнее) использовать jQuery.

Z>Ну, не идеализируй пожалуйста, своего любимца, не такой уж он и гибкий, не такой уж и лёгкий и т.д.


Аргументы, пожалуйста. Мой аргумент вот:
$("a.ajax").click(
    function(){
        $.get(
            $(this).attr("href"),
            {},
            callback
        )
    }
);

function callback(result){
    $("#mydiv").append(result);
}


Этот код понятен даже человеку, который jQuery в глаза не видел. Для того, чтобы написать такой код, надо прочитать статью — и все.
Аналог на JS я уже приводил: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/ajax/ajax.js, функция ajax. Попрошу обратить внимание на такие строчки, как:

// IE likes to send both get and post data, prevent this

// Create the request object; Microsoft failed to properly
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available

// Set the correct header, if data is being sent
// Set the If-Modified-Since header, if ifModified mode.


и так далее. Ты уверен, что твой код будет все это делать и делать правильно?

Z>Если я буду реализовать такую же функциональность, то я приду совершенно к другому результату, он может быть и хуже, а может и лучше, who knows. Единственное, что меня раздражает в твоём посыле — это то, что jQuery позиционируется, как сгусток идеальных простых решений, дескать, проще уже не бывает. Рискну предположить обратное.


Аргументируй, плиз. На данный момент по соотношению размер/качество jQuery действительно является таковым.

M>>Ключевое здесь — гибкое и легкое.

M>>При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Z>Неправильно. Если подразумевается re-use, то нормальный программист всегда будет писать в таком ключе, ничего в этом нет революционного, он сделает себе пакет, под себя, без мусора и избыточной функциональности. И то, что он сделает, просто останется вне зоны твоего/моего/мирового внимания, что никак не говорит о том, что этот код хоть чем-то проигрывает в гибкости и т.п. фреймворкам.


Правильно. И нанаписание и отладку такого кода у него уйдет сколько? Месяц? Два? А работать в это время кто будет?

M>>Нет такого понятия, как "отдельно взятая задача". Есть такое понятие, как "отдельно взятый проект". Прикажешь для каждой страницы писатьотдельно ручками с нуля? Это ж сколько кода ты понапишешь? Намного больше, чем 20 килобайт. И намного менее гибкого. И намного менее "reusable" (ключевое слово, кстати).


Z>Дружище, я же тебя не уговариваю писать код, завязанный на страницу, смешно право. У каждого, кто пишет много на javascript-е, есть свой собственный типа-фреймворк, он может быть в виде проверенных сниппетов, в виде алгоритмов внутри головы, в виде библиотеки и т.п. Вот где гибкость, взял, что нужно и используешь, и будет этого кода точно меньше, и будешь ты его точно знать, и не будешь лишний раз учить язык фреймворков, и не будешь рабом чужих кривых идей и т.д. и т.п.


Так вот. jQuery — это точно такой же "типа-фреймворк". Только его предложили использовать не только внутри отдельно взятой компании, а всему миру. Это — плохо? Учитывая, что этот фреймворк — компактный и быстрый.

M>>Покажи мне ньюба, который сможет без подсказки написать приведенный в самом начале аналог $('a.ajax'). Или ньюба, который сможет написать кроссбраузерный Ajax. А если делать его грамотно, то меньше кода, чем здесь особо и не напишешь. Ты готов весь этот код писать сам, ручками? Я — нет. Мне достаточно того, что он есть в jQuery, и я им могу пользоваться.


Z>Что же за пренебрежение к ручкам-то? Я готов ко всему, было бы желание. Про "меньше кода не напишешь" повторюсь — сие нам не ведомо.


А у тебя что за пренебрежение к фреймворкам? :

Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных)


Чем твой собственный фреймворк лучше, чем jQuery? Я тебе сразу скажу, чем он хуже:
— У тебя нет возможности протестировать его на всех комбинациях популярных браузераов
— У тебя нет возможности проводить интенсивное выявление ошибок: http://dev.jquery.com/report/16, потому что у тебя просто нет такого количества пользователей (например, у тебя есть закрытый баг репорт типа такого: http://dev.jquery.com/ticket/1341 ). Под пользователями я имею в виду не посетителей сайта, а разработчиков, использующих твой код.
— У тебя нет возможности привлечь к разработке других разработчиков: http://groups.google.com/group/jquery-dev

Чувствую, что что-то еще упустил.

ЗЫ. Разработчики всегда будут пользоваться сторонними библиотеками. Потому что это повышает производительность. Потому что обычно нет времени на разработку аналогичного функционала. Потому что проекты надо здавать завтра, а не через полгода. Потому что велосипеды интересно писать, когда только изучаешь технологию, потом велосипеды просто не оправдывают себя.


dmitriid.comGitHubLinkedIn
Re[9]: jQuery – Javascript нового поколения
От: ionicman  
Дата: 09.08.07 10:57
Оценка: 38 (2) +1 :))
Рыбята не ссортесь :D
to Zeroglif — я также тему начал, просто вы с разных сторон подходите. Ты подходишь как программер, т.е. тебе важен свой "гладкий" код. А господин Mamut подходит с точки зрения бизнеса. Ему не важно незначительное замедление, ему важно два самых главных в бизнесе программирвания задачи, а именно — ПРЕЕМСТВЕННОСТЬ и СКОРОСТЬ НАПИСАНИЯ.

Так вот, мы тут уже с г-ном Sincalir-ом вскользь затронули другие фреймворки — они обычно неповоротливые, со своим здоровым и разбухшим синтаксисом, в который требуется долго и трудно въезжать. Вот тут я готов поспорить что лучше — использовать эту гору, либо же написать самому, ибо последнее, на мой взгляд, гораздо лучше. Однако jQuery в данном случае не совсем фреймворк. Это по сути самые необходимые фии для аомфортной работы в JS, и на самом деле у каждого программера, долго работающего с JS прототипы этого есть. Так вот смысл в том, что он реально быстро учится, он реально дает выигрыш во времени и реально дает преемственность. А если ты поглядишь код его — то удивишься нсколь ко гладко написан :D
Но вот использовать его везде никтож не просит, однако если у тебя на 5 страничках исть вызов данной библиотеки и все равно пользвателю утянется 20 кил, то в этом случае им можно пользоваться и для остальных 5 ) даже в тривиальных случаях. Щас не принято ( к счастью или к сожелению ) заботится о миллисекундах — может оно и действительно не нужно при таких скоростях. И каждый выбирает свой вариант использования библиотек. Я например всегда стараюсь использоватьтолько то, что надо и не забивать лишние скрипты в страницы, но чувствую, что таких осталось мало :D Однако для хорошего коммерческого проекта, я думаю jQuery есть гуд — ибо ПРЕЕМСТВЕННОСТЬ И СКОРОСТЬ, ну а в тривиальных случаях... даже и не знаю что сказать... каждый по своему поступает. При работе в группе лучше придерживаться чегото одного, если Вы используете jQ, то наверное нет смысла пользоваться getElementById там, где не нужна оптимизация, а использовать jQ — так как гомогенный код лучше группируется и редактируется.

P.S. Я бы использовал getElementById все равно :D
P.P.S. я таки выдрал поисковый алгоритм из jQ, прикольный он :D
Re[10]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 09.08.07 12:21
Оценка:
M>Ну я Javascript-программист. Я увидел, что у мнея появился инструмент, который позволяет мне без геморроя решать огромное количество задач.

Программирование на javascript — это геморрой? Понятно. Легче внедрять да инклюдить. Тот же копипаст, только вид сбоку. Без обид, это в философском смысле.

M>Зачем мне читать исходник? Исходник я читал два раза — когда дебагил Ajax + XML (оказалось, проблема не в jQuery, а на серваке была) и когда смотрел, как реализована jQuery.extend.


Ага, то есть если даже ты не читал исходники, тогда чего знают о jQuery не-javascript-программисты? Выходит, что знают они, как чегой-то-там-куда-то вызвать...

M>Рассказываю по порядку. Это истина жизни, странно, что ее не все понимают.


Истины жизни не бывает. На то она и жизнь.

Z>>Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных).


M>Не завоевывают именно из-за таких людей, которые готовы тратить уймы времени и писать тонны кода, когда можно в десятки раз увеличить свою производительность


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

Z>>Чтобы я головой отвечал за свою работу на базе чужого фреймворка, я должен знать досконально не только все эти детско-садовские туториалы про нанизывание вызовов и проч., а предназначение каждой из 2345 строк jQuery, что и зачем там делается (потому что это javascript, стеклянные замки на зыбучем песке).


M>


M>Посмотри на список сайтов, которые пользуются jQuery: http://docs.jquery.com/Sites_Using_jQuery По-моему, это — достаточный аргумент в пользу библиотеки.


Достаточный? Посмотри на миллионы сайтов, где нет jQuery, но есть (ты не поверишь) javascript. Это достаточный аргумент, чтобы не использовать этот фреймворк? Или только вам открылось...


M>Исходников там не так уж и много, их можно наискосок, не вдаваясь в детали, прочитать минут за 15, а то и меньше. Почитай, советую. Потом посмотри на тонны своего собственного кода и задайся вопросом: а почему у меня не так.


Что ж ты мне всё на мои тонны намекаешь. Если кто-то не умеет писать "не тонны", от этого страдает и вынужден искать фреймворки — это его неотъемлемое право.

M>Более того, цитирую
Автор: Sinclair
Дата: 21.07.06

M>

M>Из всего этого следуют Правила большого пальца:
M>1. Все, что можно купить, нужно покупать (cюда же входит подбор бесплатных компонентов, при их наличии)
M>2. Все, что нельзя купить, нужно аутсорсить
M>3. Нельзя аутсорсить "core" — то, за что тебе платят деньги.

M>Т.е., если ты продаешь программу для бухгалтерии:
M>1. СУБД, компилятор, визуальные компоненты, инсталлер, хелп вьювер и т.п. — приобретаются
M>2. Документация, саппорт, скины, кастомные кофигурации — аутсорсятся.
M>3. Ядро пишется твоей командой высококлассных специалистов, проверяется твоей командой профессионального QA.

M>Сейчас большинство народу, не принявшего п.1, уже вышли из бизнеса. Сейчас идет освоение п.2.


M>И это — так. Пока ты на каждый чих пишешь 10-20-30 строк "чистого JS", мы уже написали весь необходимый функционал и продаем свой продукт


M>Еще советую здесь: http://www.rsdn.ru/Forum/?mid=2027495
Автор: Sinclair
Дата: 27.07.06


Так это бизнес-форум, не знал. Тогда это из серии, эй, твой код хреновый, избыточный и не в кассу. Ну и что, зато я его за минуту подцепил и продаю, продаю, продаю...

Z>>К тому же мне нужно оттянуть время на изучение, потом на сопровождение развития всего этого дела, каждый фреймворк развивается и поддерживается по-разному, нужно следить, вычитывать, увольте. Мораль — не всем проще и удобнее с фреймворком.


M>Знаешь среднее время выучивания jQuery? 2-5 дней Проверено на 11 людях, включая меня


Верю, вы ж в исходники не лезете.

M>Учти, что твой код тоже надо учить. Особенно, если ты, напимер, уволишься или перейдешь на другой проект, а твой код кому-то придется сопровождать и/или править.


Это правда, тут я согласен. Тогда контрвопрос. Работаете вы, 11 друзей Оушена, годами интенсивно с jQuery, потом вас неблагодарные бизнесмены увольняют и вы приходите, предположим, ко мне, где рай для javascript-программистов от сохи, чистых, стерильных. Внимание, вопрос, на кой ляд мне ваш jQuery-шный опыт?

Z>>>>Почему не пишешь ниже код всей т.н. фабрики рядом? А весь остальной код, что будет участвовать в решении задачи? Посмотри в профайлере, кто работает и рядышком их, рядышком, это и есть код, который можно справедливо противопоставлять 'чистому' javascript.


M>>>Зачем? Любой фреймворк — это всегда overhead. Цель люого фреймворка — упростить разработку, спрятав "чистый" код от разработчика. Кому надо, посмотрит в код фреймворка, благо в jQuery его не так уж и много. Заметь, что если ты будешь реализовывать ту же функциональность на чистом JS — то есть настолько же гибкую, легкую и т.п., то все равно ты придешь к тому же, если не большему, количеству кода и вызовов.


Z>>Кому надо посмотрит? И чего он там увидит? Если взгляд его будет осмыслен, то какого рожна он не потратил пару-тройку дней, чтобы этот смысл вложить в свой собственный код?


M>Ну-ну. Я очнеь хочу посмотреть на того человека, который с нуля ручками за 2-3 дня напишет функционал, равный jQuery. Кстати, я из jQuery уже выдирал куски кода (типа extend, например), для использования в "чистом JS". Ничего, не умер. Во всех остальных случаях, когда надо было использовать хотя бы три-четыре функции, аналогичные jQuery, легче (и оправданнее) использовать jQuery.


Подожди, средней руки javascript-программист написал jQuery, талантливый программист, но при этом плохой javascript-программист, написал Prototype.js, ты считаешь, что в мире нет людей, способных на такие "подвиги"? Есть. Только видимо это им не надо, у каждого свои смыслы жизни.

Z>>Ну, не идеализируй пожалуйста, своего любимца, не такой уж он и гибкий, не такой уж и лёгкий и т.д.


M>Аргументы, пожалуйста. Мой аргумент вот:

M>
M>$("a.ajax").click(
M>    function(){
M>        $.get(
M>            $(this).attr("href"),
M>            {},
M>            callback
M>        )
M>    }
M>);

M>function callback(result){
M>    $("#mydiv").append(result);
M>}
M>


M>Этот код понятен даже человеку, который jQuery в глаза не видел. Для того, чтобы написать такой код, надо прочитать статью — и все.


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

M>Аналог на JS я уже приводил: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/ajax/ajax.js, функция ajax. Попрошу обратить внимание на такие строчки, как:

M>

M>// IE likes to send both get and post data, prevent this

M>// Create the request object; Microsoft failed to properly
M>// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available

M>// Set the correct header, if data is being sent
M>// Set the If-Modified-Since header, if ifModified mode.


M>и так далее. Ты уверен, что твой код будет все это делать и делать правильно?


Не уверен. А ты уверен в jQuery, не читая исходников? И эта уверенность зиждется видимо на том, что сотня сайтов не докладывает об ошибках. Что ж, тоже подход.

Z>>Если я буду реализовать такую же функциональность, то я приду совершенно к другому результату, он может быть и хуже, а может и лучше, who knows. Единственное, что меня раздражает в твоём посыле — это то, что jQuery позиционируется, как сгусток идеальных простых решений, дескать, проще уже не бывает. Рискну предположить обратное.


M>Аргументируй, плиз. На данный момент по соотношению размер/качество jQuery действительно является таковым.


Проще чистого javascript нет ничего. Вспоминаем пример с алертом.

M>>>Ключевое здесь — гибкое и легкое.

M>>>При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Z>>Неправильно. Если подразумевается re-use, то нормальный программист всегда будет писать в таком ключе, ничего в этом нет революционного, он сделает себе пакет, под себя, без мусора и избыточной функциональности. И то, что он сделает, просто останется вне зоны твоего/моего/мирового внимания, что никак не говорит о том, что этот код хоть чем-то проигрывает в гибкости и т.п. фреймворкам.


M>Правильно. И нанаписание и отладку такого кода у него уйдет сколько? Месяц? Два? А работать в это время кто будет?


Отлаживать 2 месяца пару-тройку функций, раскрашивающих строки у таблицы???

M>>>Нет такого понятия, как "отдельно взятая задача". Есть такое понятие, как "отдельно взятый проект". Прикажешь для каждой страницы писатьотдельно ручками с нуля? Это ж сколько кода ты понапишешь? Намного больше, чем 20 килобайт. И намного менее гибкого. И намного менее "reusable" (ключевое слово, кстати).


Z>>Дружище, я же тебя не уговариваю писать код, завязанный на страницу, смешно право. У каждого, кто пишет много на javascript-е, есть свой собственный типа-фреймворк, он может быть в виде проверенных сниппетов, в виде алгоритмов внутри головы, в виде библиотеки и т.п. Вот где гибкость, взял, что нужно и используешь, и будет этого кода точно меньше, и будешь ты его точно знать, и не будешь лишний раз учить язык фреймворков, и не будешь рабом чужих кривых идей и т.д. и т.п.


M>Так вот. jQuery — это точно такой же "типа-фреймворк". Только его предложили использовать не только внутри отдельно взятой компании, а всему миру. Это — плохо? Учитывая, что этот фреймворк — компактный и быстрый.


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

M>>>Покажи мне ньюба, который сможет без подсказки написать приведенный в самом начале аналог $('a.ajax'). Или ньюба, который сможет написать кроссбраузерный Ajax. А если делать его грамотно, то меньше кода, чем здесь особо и не напишешь. Ты готов весь этот код писать сам, ручками? Я — нет. Мне достаточно того, что он есть в jQuery, и я им могу пользоваться.


Z>>Что же за пренебрежение к ручкам-то? Я готов ко всему, было бы желание. Про "меньше кода не напишешь" повторюсь — сие нам не ведомо.


M>А у тебя что за пренебрежение к фреймворкам? :

M>

M>Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных)


Это не пренебрежение, это сопротивление.

M>Чем твой собственный фреймворк лучше, чем jQuery? Я тебе сразу скажу, чем он хуже:

M>- У тебя нет возможности протестировать его на всех комбинациях популярных браузераов

Есть.

M>- У тебя нет возможности проводить интенсивное выявление ошибок: http://dev.jquery.com/report/16, потому что у тебя просто нет такого количества пользователей (например, у тебя есть закрытый баг репорт типа такого: http://dev.jquery.com/ticket/1341 ). Под пользователями я имею в виду не посетителей сайта, а разработчиков, использующих твой код.


Это верное замечание. Как jQuery пытается втащить в себя отутюженные решения, так и я при сомнениях оценю и воспользуюсь тем подходом в jas-сообществе, который считается наиболее безопасным, не вижу сложности.

M>- У тебя нет возможности привлечь к разработке других разработчиков: http://groups.google.com/group/jquery-dev


Не аргумент.

M>Чувствую, что что-то еще упустил.


M>ЗЫ. Разработчики всегда будут пользоваться сторонними библиотеками. Потому что это повышает производительность. Потому что обычно нет времени на разработку аналогичного функционала. Потому что проекты надо здавать завтра, а не через полгода. Потому что велосипеды интересно писать, когда только изучаешь технологию, потом велосипеды просто не оправдывают себя.


Тема велосипедов не раскрыта. Если ты в своих проектах пользуешься jQuery, которая абсолютно всё для тебя изобрела, то что тогда остаётся для твоего javascript-программирование? Что интересного осталось?
Re[10]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 09.08.07 12:38
Оценка:
Здравствуйте, ionicman, Вы писали:

I>Рыбята не ссортесь :D

I>to Zeroglif — я также тему начал, просто вы с разных сторон подходите. Ты подходишь как программер, т.е. тебе важен свой "гладкий" код. А господин Mamut подходит с точки зрения бизнеса. Ему не важно незначительное замедление, ему важно два самых главных в бизнесе программирвания задачи, а именно — ПРЕЕМСТВЕННОСТЬ и СКОРОСТЬ НАПИСАНИЯ.

Согласен, навeрное, про скорость написания (для привычных к jQuery), но преемственность может таковой совсем и не быть.

I>Так вот, мы тут уже с г-ном Sincalir-ом вскользь затронули другие фреймворки — они обычно неповоротливые, со своим здоровым и разбухшим синтаксисом, в который требуется долго и трудно въезжать. Вот тут я готов поспорить что лучше — использовать эту гору, либо же написать самому, ибо последнее, на мой взгляд, гораздо лучше.


Согласен. Последнее лучше.

I>Однако jQuery в данном случае не совсем фреймворк. Это по сути самые необходимые фии для аомфортной работы в JS, и на самом деле у каждого программера, долго работающего с JS прототипы этого есть. Так вот смысл в том, что он реально быстро учится, он реально дает выигрыш во времени и реально дает преемственность. А если ты поглядишь код его — то удивишься нсколь ко гладко написан :D


Да глядел я глядел. "Гладкость" подтвердить не могу, могу только предположить, что это такое (в моём предположении код такой же не гладкий, как и в большинстве либ). И скорее всего научиться обращаться к определённым функциям jQuery будет не сложно, но "вообще не учиться" будет ещё проще.

I>Но вот использовать его везде никтож не просит, однако если у тебя на 5 страничках исть вызов данной библиотеки и все равно пользвателю утянется 20 кил, то в этом случае им можно пользоваться и для остальных 5 ) даже в тривиальных случаях.


I>Щас не принято ( к счастью или к сожелению ) заботится о миллисекундах — может оно и действительно не нужно при таких скоростях.


Как это не принято, ещё как принято... и в отношении javascript, и в отношении самих фреймворков, вон они на слике друг с другом соревнуются.

I>И каждый выбирает свой вариант использования библиотек. Я например всегда стараюсь использовать только то, что надо и не забивать лишние скрипты в страницы, но чувствую, что таких осталось мало :D


Зачёт.
Re[11]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 09.08.07 13:47
Оценка: 1 (1) +1
M>>Ну я Javascript-программист. Я увидел, что у мнея появился инструмент, который позволяет мне без геморроя решать огромное количество задач.

Z>Программирование на javascript — это геморрой? Понятно. Легче внедрять да инклюдить. Тот же копипаст, только вид сбоку. Без обид, это в философском смысле.


Повторю еще раз:

// jQuery
$('a.ajax');

// аналог
var links = getElementsByTagName('a');
var selectedLinks = [];
for(i = 0; i < links.length; i++)
{
    // split потому что может быть class="ajax links other_class"
    elemClasses = links[i].className.split(/\s+/);
    if(inArray(elemClasses, "ajax") > -1)
    {
        selectedLinks.push(links[i]);
    }
}

// функция взята из jQuery
function inArray(a, и)
{
    for ( var i = 0, al = a.length; i < al; i++ )
        if ( a[i] == b )
            return i;

    return -1;
}


Так вот. Код на jQuery — это не геморрой. Код на чистом JS — это геморрой. Если я код на JS оберну в функцию/объект и засуну его в свой собственный фреймворк, то он перестанет быть "чистым JS". Он станет частью моего фреймворка.

M>>Зачем мне читать исходник? Исходник я читал два раза — когда дебагил Ajax + XML (оказалось, проблема не в jQuery, а на серваке была) и когда смотрел, как реализована jQuery.extend.


Z>Ага, то есть если даже ты не читал исходники, тогда чего знают о jQuery не-javascript-программисты? Выходит, что знают они, как чегой-то-там-куда-то вызвать...


Причем тут не-javascript-программисты? Да, jQuery иногда предлагается и не-программистам. И что из этого? Я исходники jQuery благодаря разным спорам уже вдоль и поперек изучил, благо их там мало.

M>>Рассказываю по порядку. Это истина жизни, странно, что ее не все понимают.

Z>Истины жизни не бывает. На то она и жизнь.

В области разработки ПО быстро понимаешь, что истина только одна — велосипеды себя не оправдывают и не окупают.

M>>Не завоевывают именно из-за таких людей, которые готовы тратить уймы времени и писать тонны кода, когда можно в десятки раз увеличить свою производительность


Z>Да, ты прав, из-за нас, мы тратим время, пишем код, учим других писать код, бизнесу не учим, виноваты.


При чем тут бизнес? Еще раз повторю, с нуля многое писать интересно, пока технологию только изучаешь. Если ты действительно хороший программист и можешь себе это позволить, то можно написать самому себе фреймворк типа jQuery, mochkit или любого другого (как это сделали John Resig (jQuery), Jack Slocum (Ext) и другие). В любом другом случае написание своего собственного, но аналогичного, функционала себя не оправдывает.

M>>Посмотри на список сайтов, которые пользуются jQuery: http://docs.jquery.com/Sites_Using_jQuery По-моему, это — достаточный аргумент в пользу библиотеки.


Z>Достаточный? Посмотри на миллионы сайтов, где нет jQuery, но есть (ты не поверишь) javascript. Это достаточный аргумент, чтобы не использовать этот фреймворк? Или только вам открылось...


Из этих миллионов весьма немногие ухитряются уложиться в 20КБ да еще работать под всеми браузерами.

M>>Исходников там не так уж и много, их можно наискосок, не вдаваясь в детали, прочитать минут за 15, а то и меньше. Почитай, советую. Потом посмотри на тонны своего собственного кода и задайся вопросом: а почему у меня не так.


Z>Что ж ты мне всё на мои тонны намекаешь. Если кто-то не умеет писать "не тонны", от этого страдает и вынужден искать фреймворки — это его неотъемлемое право.


Хорошо. Не тонны. Можешь оценить, сколько времени у тебя уйдет на написание своего собственного фреймворка, по возможностям не уступающего jQuery. Да, это будет твой собственный фреймворк, в котором ты бдешь уверен в каждой строчке кода. Пока ты его будешь писать, я сдам свой проект и начну новый

M>>Более того, цитирую
Автор: Sinclair
Дата: 21.07.06

M>>И это — так. Пока ты на каждый чих пишешь 10-20-30 строк "чистого JS", мы уже написали весь необходимый функционал и продаем свой продукт
M>>Еще советую здесь: http://www.rsdn.ru/Forum/?mid=2027495
Автор: Sinclair
Дата: 27.07.06


Z>Так это бизнес-форум, не знал. Тогда это из серии, эй, твой код хреновый, избыточный и не в кассу. Ну и что, зато я его за минуту подцепил и продаю, продаю, продаю...


Разработка ПО — это всегда бизнес, если только проект не пишется для себя и явно будет некоммерческим. Еще раз повторю:

— Предположим, ты работаешь в какой-нибудь компании. Зарплата у тебя — 1000 долларов в месяц.
— Ты решил не брать jQuery, а написать свой, похожий по функционалу, фреймворк
— Во главу угла ты ставишь скорость, кроссбраузерность, легкость в использовании

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

Месяц спустя тебя начальство спрашивает: "Этааа, чем ты последний месяц занимался". Что ты ответишь? Что проел 1000 долларов, реализуя что-то, что можно получить бесплатно и уже месяц тому назад?

Z>>>К тому же мне нужно оттянуть время на изучение, потом на сопровождение развития всего этого дела, каждый фреймворк развивается и поддерживается по-разному, нужно следить, вычитывать, увольте. Мораль — не всем проще и удобнее с фреймворком.

M>>Знаешь среднее время выучивания jQuery? 2-5 дней Проверено на 11 людях, включая меня
Z>Верю, вы ж в исходники не лезете.

При чем тут исходники? Ты не поверишь, но в любом фреймворке надо знать не исходники, а публично доступные функции. Это относится к любому фреймворку или библиотеке. В исходники лезут, когда библиотека работает некорректно. Для того, чтобы работать с jQuery достаточно документации по ее функциям.

В исходники можно залезть, чтобы посмотреть, не творит ли библиотека что-нибудь непотребное. На это в случае с jQuery уйдет максимум час.

M>>Учти, что твой код тоже надо учить. Особенно, если ты, напимер, уволишься или перейдешь на другой проект, а твой код кому-то придется сопровождать и/или править.


Z>Это правда, тут я согласен. Тогда контрвопрос. Работаете вы, 11 друзей Оушена, годами интенсивно с jQuery, потом вас неблагодарные бизнесмены увольняют и вы приходите, предположим, ко мне, где рай для javascript-программистов от сохи, чистых, стерильных. Внимание, вопрос, на кой ляд мне ваш jQuery-шный опыт?


В случае с jQuery все просто. Берется в руки документация и уже под конец рабочего дня новый программист, даже не глядя в туториалы, начинает активно работать как со старым кодом, так и начинает писать новый. У тебя к твоему фреймворку есть централизованная документация?

M>>Ну-ну. Я очнеь хочу посмотреть на того человека, который с нуля ручками за 2-3 дня напишет функционал, равный jQuery. Кстати, я из jQuery уже выдирал куски кода (типа extend, например), для использования в "чистом JS". Ничего, не умер. Во всех остальных случаях, когда надо было использовать хотя бы три-четыре функции, аналогичные jQuery, легче (и оправданнее) использовать jQuery.


Z>Подожди, средней руки javascript-программист написал jQuery, талантливый программист, но при этом плохой javascript-программист, написал Prototype.js, ты считаешь, что в мире нет людей, способных на такие "подвиги"? Есть. Только видимо это им не надо, у каждого свои смыслы жизни.


Я верю, что есть люди, способные написать второй jQuery/Prototype и.т.п. Но, как ты верно подметил, "видимо это им не надо, у каждого свои смыслы жизни". Поэтому они берут тот же jQuery и на его сонове творят... Ну, например Ext

Z>>>Ну, не идеализируй пожалуйста, своего любимца, не такой уж он и гибкий, не такой уж и лёгкий и т.д.


M>>Аргументы, пожалуйста. Мой аргумент вот:

M>>
M>>$("a.ajax").click(
M>>    function(){
M>>        $.get(
M>>            $(this).attr("href"),
M>>            {},
M>>            callback
M>>        )
M>>    }
M>>);

M>>function callback(result){
M>>    $("#mydiv").append(result);
M>>}
M>>


M>>Этот код понятен даже человеку, который jQuery в глаза не видел. Для того, чтобы написать такой код, надо прочитать статью — и все.


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


Читается так: Элементом A с классом ajax присвоить обработчик события "click" такой: вызвать ajax метод get к url'у, который берется из аттрибута href; по зваершению вызова вызвать функцию callback. В функции callback найти элемент с id="mydiv" и дописать ему в конец полученный с сервера ответ.

Для понятия этого кода максимум, что нужно, это документация по методам jQuery.

M>>Аналог на JS я уже приводил: http://jqueryjs.googlecode.com/svn/trunk/jquery/src/ajax/ajax.js, функция ajax. Попрошу обратить внимание на такие строчки, как:

M>>

M>>// IE likes to send both get and post data, prevent this

M>>// Create the request object; Microsoft failed to properly
M>>// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available

M>>// Set the correct header, if data is being sent
M>>// Set the If-Modified-Since header, if ifModified mode.


M>>и так далее. Ты уверен, что твой код будет все это делать и делать правильно?


Z>Не уверен. А ты уверен в jQuery, не читая исходников? И эта уверенность зиждется видимо на том, что сотня сайтов не докладывает об ошибках. Что ж, тоже подход.


Да, я уверен в jQuery хотя бы поэтому: http://dev.jquery.com/report/16
Я вижу активное исправление ошибок, связанных, в частности, с кроссбраузерностью.

M>>Аргументируй, плиз. На данный момент по соотношению размер/качество jQuery действительно является таковым.

Z>Проще чистого javascript нет ничего. Вспоминаем пример с алертом.

Не надо приводить синтетические примеры. Я привел пример с $("a.ajax") и его реализацию на чистом JS. Как только сложность кода вылазит за простой alert(), код на чистом JS начинает расти в геометрической прогрессии. Его приходится оборачивать в функции, объекты и т.п., получая такой же фреймворк, вид сбоку.

M>>>>Ключевое здесь — гибкое и легкое.

M>>>>При этом "ручками" мы теряем гибкость. Как только мы добавляем в код гибкость, мы получаем что? Правильно — jQuery, prototype.js, mochikit, dojo или какую иную библиотеку.

Z>>>Неправильно. Если подразумевается re-use, то нормальный программист всегда будет писать в таком ключе, ничего в этом нет революционного, он сделает себе пакет, под себя, без мусора и избыточной функциональности. И то, что он сделает, просто останется вне зоны твоего/моего/мирового внимания, что никак не говорит о том, что этот код хоть чем-то проигрывает в гибкости и т.п. фреймворкам.


Что будем делать, когда понадобится дополнительная функциональность? В jQuery я получаю всего 20KB кода и функциональность, которая покрывает до 90% моих нужд. Чем он плох?

M>>Правильно. И нанаписание и отладку такого кода у него уйдет сколько? Месяц? Два? А работать в это время кто будет?

Z>Отлаживать 2 месяца пару-тройку функций, раскрашивающих строки у таблицы???

Это он на одной странице таблицу раскрашивает. На другой — он оперирует многострочной формой на сложных правилах. Так как он и так закеширован браузером, не вижу смысла использовать самописный код на 2-3 из сотни страниц.

M>>Так вот. jQuery — это точно такой же "типа-фреймворк". Только его предложили использовать не только внутри отдельно взятой компании, а всему миру. Это — плохо? Учитывая, что этот фреймворк — компактный и быстрый.


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


Тьху. Если у каждого программиста и так есть свой "типа-фреймворк", то где же тут пропаганда?

А фреймворк jQuery действительно позволяет находить решения быстрее, чем аналогичные на чистом JS. Кстати, как только ты написал свой "типа фреймворк", то у тебя уже тоже не "чистый JS". В этом отношении jQuery ничем не грязнее твоего фреймворка — он тоже на JS написан.

M>>А у тебя что за пренебрежение к фреймворкам? :

M>>

M>>Лично мои задачи решаются проще мною же лично, как ты говоришь, ручками. И масса людей со мной солидарны, благо jQuery и проч. пока ещё не захватили мир (не удалось это ни DHTML библиотекам, не выйдет это и у нынешних новомодных)


Z>Это не пренебрежение, это сопротивление.


Чему сопротивляться, если у тебя такой же фреймворк написан, пусть и ручками?

M>>Чем твой собственный фреймворк лучше, чем jQuery? Я тебе сразу скажу, чем он хуже:

M>>- У тебя нет возможности протестировать его на всех комбинациях популярных браузераов

Z>Есть.


У тебя есть время протестировать его, скажем, на Konqueror 3.5? Тебе на это отдельно выделяют время и деньги? Если да, то тогда нельзя не порадоваться за тебя. У нас такой возможности нет. И у 90% прораммистов в целом тоже нет. Поэтому свои собственный фреймворки изобретать мы не просто не можем — мы не имеем права. Потому что есть такая вещь, как time to market.

M>>- У тебя нет возможности проводить интенсивное выявление ошибок: http://dev.jquery.com/report/16, потому что у тебя просто нет такого количества пользователей (например, у тебя есть закрытый баг репорт типа такого: http://dev.jquery.com/ticket/1341 ). Под пользователями я имею в виду не посетителей сайта, а разработчиков, использующих твой код.


Z>Это верное замечание. Как jQuery пытается втащить в себя отутюженные решения, так и я при сомнениях оценю и воспользуюсь тем подходом в js-сообществе, который считается наиболее безопасным, не вижу сложности.


На это нужно время. У нас же основное направление разработки — не разработка собственного js-фреймворка и его отладка.

M>>- У тебя нет возможности привлечь к разработке других разработчиков: http://groups.google.com/group/jquery-dev

Z>Не аргумент.

Вполне аргумент. В рассылке пробегали предложения, как увеличить скокрость селекторов на 3-5 миллисекунд от различных разработчиков. Эти изменения потом внедряются в jQuery

M>>ЗЫ. Разработчики всегда будут пользоваться сторонними библиотеками. Потому что это повышает производительность. Потому что обычно нет времени на разработку аналогичного функционала. Потому что проекты надо здавать завтра, а не через полгода. Потому что велосипеды интересно писать, когда только изучаешь технологию, потом велосипеды просто не оправдывают себя.


Z>Тема велосипедов не раскрыта. Если ты в своих проектах пользуешься jQuery, которая абсолютно всё для тебя изобрела, то что тогда остаётся для твоего javascript-программирование? Что интересного осталось?


Мое поле деятельности — не создание javascript фреймворков. Я пишу конкретный проект для конкретных целей. Нам jQuery позволил решить интереснейшие проблемы по созданию ajax-based shopping cart, и сложнейшую форму создания изменений цен.

Если бы я был именно javascript-разработчиком, я бы начал писать для себя легковесный аналог Ext.

jQuery — очень низкоуровневый фреймворк. Он позволяет мне обратить внимание на более приятные вещи, чем кросс-браузерный аякс, кросс-браузерная анимация или кросс-браузерная манипуляция DOM-ом. Последние три вещи мне предоставляет jQuery и мне нет смысла писать их заново с нуля.


dmitriid.comGitHubLinkedIn
Re[6]: jQuery – Javascript нового поколения
От: ddocker Россия www.codelab.ru
Дата: 10.08.07 07:14
Оценка: +3
Z>А мы разве говорили о вычислительной сложности? Мой посыл был продемонстрировать, что за обыкновенным тупым алертом стоит работа многих-многих-многих функций, которые при этом 139!!! раз вызываются....
Z>Ой, мама, дорогая, мне нужно было только показать 1 алерт с текстом "Превед вам, медведы, от jQuery?", ты мне советуешь для этого использовать jQuery? А что, подумаешь, куча работы в фоне, зато милисекунды никто не заметит. Извращённое несоответствие кода задаче. По всем статьям: загрузка, излишняя работа интерпретатора, создание сотни объектов, 139 вызовов и проч. Этот пример — квинтэссенция бездумного javascript. C такими примерами нужно бороться, а не пропагандировать похожее примитивное использование библиотек. Так, как пока безуспешно стараются побороть с "bad practice" (eval, with и т.п.) в javascript, пользователь хреновый код без ошибок тоже не заметит, но это ж не отменяет тот факт, что код хреновый. Неужели это неочевидно?

Так в чем проблема, думаю, вам тут совсем не пытаются навязать полностью заменить javascript на jquery и в этих вырожденных случаях показа alert-а например, когда в js-е мы делам одну операцию а через jq делается более сотни... — использовать jq, даже самые заядлые jq-щики напишут тут просто alert() без всяких фреймворков и все!
Действительно зачем, если на js это одна строчка кода, а на jq — хотя и тоже 1 (как обычно впрочем ), но под собой она дергает более сотни вызовов?
По-моему, до вас тут пытаются донести совсем другие случаи, типа хитрых выборок и итераций по сложному dom-у и т.д., когда на чистом js, у вас было бы ненамного меньшее количество вызовов чем в jq — только в jq это были бы интуитивные пара логических строк (+кроссбраузерный, оптимизированный код), а у вас бы вероятней всего была бы некая портянка на пару экранов, в которой затем ваши же коллеги пол-дня будут разбираться, при том, что если понадобится другая подобная хитрая выборка — будете писать еще одну подобную простыню...
А потом еще копипайстить из одного проекта в другой — если снова заходите использовать...

Странные посты против фрейворков вообще, вы вот и на сервер-сайд наверное никаких фреймворков не используете, сами GET/POST валидируете и популируете, постинг каждой формы по новой все этапы реализуете, различные утилитные функции, велосипеды изобретаете на каждом шагу наверное...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[12]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 10.08.07 08:30
Оценка: :))
Здравствуйте, Mamut, Вы писали:

M>Тьху. Если у каждого программиста и так есть свой "типа-фреймворк", то где же тут пропаганда?


Название Вашей статьи "jQuery – Javascript нового поколения" — это и есть "пропаганда". Причем с "отягчающими последствиями".

Поясню на своем примере. Я, интересуясь Javascript, сразу же обратил внимание на броское название в надежде прочесть действительно о чем-то новом. Не буду скрывать — я расчитывал найти в фреймворке нечто, похожее на эмуляцию нововведений для Javascript 1.6, только на этот раз думал, что Джон изобрел что-нибудь и для Javascript 1.8. Естественно я был разочарован — никакого "Javascript нового поколения" мне найти не удалось.

Так зачем вообще использовать такие громкие названия для статей? Это ни что иное, как пиар и пропаганда. И ничего более на ум не приходит, поскольку все, о чем здесь пишут, ни коим образом не относится к Javascript.

Как доказательство того, что JavaScript здесь лишь "мимо пробежал" — это пример обработки onmouseover/onmouseout/click на строках таблицы. В вашем случае на каждый ряд таблицы навешивается обработчики трех событий. Позвольте, но это совершенно бездумный подход. Достаточно обработать те же события на самой таблице. На пропиаренном фреймворке это делается так:

$(document).ready(
    function () {
        $('#blocks').mouseover(paintRow)
                    .mouseout(paintRow)
                    .click(paintRow);
    }
);

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

Напоследок хочу пожелать следующее. Пишите про свой любимый фреймворк и про то, как ловко Вы им пользуетесь. Но не пытайтесь, пожалуйста, спекулировать на модном нынче JavaScript — для того, чтобы о нем писать, придется познать его во всех ипостасях...
Re[13]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.07 10:18
Оценка:
M>>Тьху. Если у каждого программиста и так есть свой "типа-фреймворк", то где же тут пропаганда?

AKS>Название Вашей статьи "jQuery – Javascript нового поколения" — это и есть "пропаганда". Причем с "отягчающими последствиями".




AKS>Поясню на своем примере. Я, интересуясь Javascript, сразу же обратил внимание на броское название в надежде прочесть действительно о чем-то новом. Не буду скрывать — я расчитывал найти в фреймворке нечто, похожее на эмуляцию нововведений для Javascript 1.6, только на этот раз думал, что Джон изобрел что-нибудь и для Javascript 1.8. Естественно я был разочарован — никакого "Javascript нового поколения" мне найти не удалось.


"Яваскрипт нового поколения" — всего лишь перевод слогана jQuery "a new wave javascript". Если быть до конца честным, то jQuery — первая Javascript-библиотека, предлагающая, например, селекторы для выборки элементов. Аналогичные решения в других библиотеках, емнип, появились позже.

AKS>Так зачем вообще использовать такие громкие названия для статей? Это ни что иное, как пиар и пропаганда. И ничего более на ум не приходит, поскольку все, о чем здесь пишут, ни коим образом не относится к Javascript.


А, ну да, код на Яваскрипте, библиотека на Яваскрипте, но это никоим образом не Яваскрипт

AKS>Как доказательство того, что JavaScript здесь лишь "мимо пробежал" — это пример обработки onmouseover/onmouseout/click на строках таблицы. В вашем случае на каждый ряд таблицы навешивается обработчики трех событий. Позвольте, но это совершенно бездумный подход. Достаточно обработать те же события на самой таблице. На пропиаренном фреймворке это делается так:


AKS>
AKS>$(document).ready(
AKS>    function () {
AKS>        $('#blocks').mouseover(paintRow)
AKS>                    .mouseout(paintRow)
AKS>                    .click(paintRow);
AKS>    }
AKS>);
AKS>

AKS>Здесь paintRow — это небольшая функция, которая и будет в зависимости от типа события раскрашивать столбики...

Спасибо, учту.

AKS>Напоследок хочу пожелать следующее. Пишите про свой любимый фреймворк и про то, как ловко Вы им пользуетесь. Но не пытайтесь, пожалуйста, спекулировать на модном нынче JavaScript — для того, чтобы о нем писать, придется познать его во всех ипостасях...


По-моему, статья описывает именно фреймворк. Или не так? Возможно, следовало бы назвать статью типа "jQuery — новый фреймворк для JavaScript", но кого таким названием заинтересуешь? Этих фреймворков — как грязи. И от слова Javascript никуда не уйдешь — как ни крути, а jQuery — это все же фреймворк, написаный на Яваскрипте

Я все равно так и не понял, в чем выражается протест против статьи, фреймворков вообще и фреймворка jQuery в частности


dmitriid.comGitHubLinkedIn
Re[7]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 10:28
Оценка: -2
Здравствуйте, ddocker, Вы писали:

Z>>А мы разве говорили о вычислительной сложности? Мой посыл был продемонстрировать, что за обыкновенным тупым алертом стоит работа многих-многих-многих функций, которые при этом 139!!! раз вызываются....

Z>>Ой, мама, дорогая, мне нужно было только показать 1 алерт с текстом "Превед вам, медведы, от jQuery?", ты мне советуешь для этого использовать jQuery? А что, подумаешь, куча работы в фоне, зато милисекунды никто не заметит. Извращённое несоответствие кода задаче. По всем статьям: загрузка, излишняя работа интерпретатора, создание сотни объектов, 139 вызовов и проч. Этот пример — квинтэссенция бездумного javascript. C такими примерами нужно бороться, а не пропагандировать похожее примитивное использование библиотек. Так, как пока безуспешно стараются побороть с "bad practice" (eval, with и т.п.) в javascript, пользователь хреновый код без ошибок тоже не заметит, но это ж не отменяет тот факт, что код хреновый. Неужели это неочевидно?

D>Так в чем проблема, думаю, вам тут совсем не пытаются навязать полностью заменить javascript на jquery и в этих вырожденных случаях показа alert-а например, когда в js-е мы делам одну операцию а через jq делается более сотни... — использовать jq, даже самые заядлые jq-щики напишут тут просто alert() без всяких фреймворков и все!


Пример с алертом был утрирован СПЕЦИАЛЬНО! Чтобы продемонстрировать избыточность кода задаче. Очень похожие утрированные примеры (подвесить клик на якорь или добавить класс и т.п.) используются в большинстве туториалов. Общий посыл при этом — смотрите и учитесь, как просто и легко можно это сделать по сравнению с чистым javascript. Хотя на самом деле (вообще не понимаю, как можно об этом ещё и спорить) отдельная задача и даже несколько связанных задач решаются руками проще/оптимальнее/качественнее, чем с использованием большого избыточного (априори всегда избыточного) пакета. Тем более чужого. Тем более javascript-пакета. Тем более в исходники которого, как оказалось, никто и не смотрит.

Но если количество и объём многомерных задач таковы, что мы уже подходим к раскрытию возможностей jQuery по-максимому, то фреймворк можно (заметьте, я не выступаю против, я говорю, что можно) использовать, на то он и большой пакет. Но в этом смысле сразу возникает парадоксальная ситуация — программист делает большой суръёзный javascript-проект, что предполагает всё-таки владение предметом, и при этом он не в состоянии предложить свои собственные решения, которые бьют строго в заданную оптимальную точку. Почему так происходит? Само собой, ни один из нас не признается в своей слабой подготовке или в нехватке времени, или в нехватке браузеров, или в недостатке кросс-браузерного опыта, или в ещё в чём, не знаю , подозреваю, что именно отсюда и торчат уши заступничества за фреймворк, где оный и самый идеальный, и самый оптимальный и ваапще жесть, какой полезный, а все остальные — дураки полные, ничего не понимают, им бы только портянки писать и тонну кода вываливать, нам этого не надо, мы велосипеды уже наизобретались. Хех, прям чуть было не поверил.

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

D>По-моему, до вас тут пытаются донести совсем другие случаи, типа хитрых выборок и итераций по сложному dom-у и т.д., когда на чистом js, у вас было бы ненамного меньшее количество вызовов чем в jq — только в jq это были бы интуитивные пара логических строк (+кроссбраузерный, оптимизированный код), а у вас бы вероятней всего была бы некая портянка на пару экранов, в которой затем ваши же коллеги пол-дня будут разбираться, при том, что если понадобится другая подобная хитрая выборка — будете писать еще одну подобную простыню...


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

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


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

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


Это посты не против либ как таковых вообще, пользуйтесь, если нравится, а посты против того, что кто-то имеет смелость сравнивать javascript vs. jQuery или javascript-программирование vs. псевдо-программирование.
Re[14]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.08.07 10:56
Оценка: 2 (1) +3 :))) :)
Здравствуйте, Mamut, Вы писали:

M>Я все равно так и не понял, в чем выражается протест против статьи, фреймворков вообще и фреймворка jQuery в частности

Похоже, это все — когнитивный диссонанс. Ну как там хардкорные плюсовые программеры плевались (и до сих пор плюют) на джаву, потому как она противоречит всему их мировоззрению.
Я, честно говоря, от веб девелоперов этого не ожидал.
Ан нет — бывают всё же люди, которые привыкли к тому, что javascript — это ужос. Когда заради простейшей вещи трижды вспотеешь и восемь раз выматеришься. А потом тебе еще и пришлют что-то типа "а вот в FF 1.5.0.3 не работает". А потом наконец оно заработало — и вот оно щастье-то!

А тут какие-то негодяи делают из этого чудовищного приплясывания с жертвоприношениями вполне благопристойную среду! Конечно обидно понимать, что последние восемь мегабайт кода можно было вообще не писать. Конечно хочется доказать, что без тех восьми мегабайт ничего не получится. Что алерт можно вызвать и без jQuery (по секрету скажу: если у вас в приложении есть вызов alert — значит оно плохо спроектировано!). Что найти элемент можно и по ID. А если их несколько — то можно их найти через регексп. И вообще каждый уважающий себя джедай пишет себе фреймворк сам, и никогда не воспользуеся чужим фреймворком, потому что это то же самое, что и зубная щетка. Ну и вообще.

Ничего, из самых ярых противников обычно получаются самые активные сторонники
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: jQuery – Javascript нового поколения
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.08.07 10:56
Оценка:
Здравствуйте, Zeroglif, Вы писали:

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

Потрясающее нежелание понимать аргументы противной стороны. Кто сказал, что не в состоянии? Просто стоимость своего "собственного" решения слишком высока. По сравнению с применением чужих.

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

Из вас — это из кого? Я вот лично легко признаюсь: у нас не хватает ни времени, ни браузеров, ни подготовки. Причем всегда не хватает, и не будет хватать.

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

Почему плохому-то? Ты до сих пор не смог сформулировать свои претензии к jQuery. "Количество вызовов" — извини, это бред.

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

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

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

А в чем проблема?
Z>или javascript-программирование vs. псевдо-программирование.
А чем отличается псевдо-программирование от настоящего? Тем, что волосы и зубы не выпадают, что ли? Типа если не вспотел — значит не поработал?
Вообще, если лично тебе не нравится jQuery — никто ее тебе не навязывает. Пиши себе. Или у тебя страшная ревность к тому, что раньше ты брал за advanced javascript effects мегабабло, а теперь это доступно любому пионеру через два дня обучения jQuery? Может ты боишься, что веб программисты встрянут и разучатся биндить обработчики вручную, без jQuery? Ну, до этого ой как далеко...
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[12]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 11:01
Оценка:
M>А фреймворк jQuery действительно позволяет находить решения быстрее, чем аналогичные на чистом JS. Кстати, как только ты написал свой "типа фреймворк", то у тебя уже тоже не "чистый JS". В этом отношении jQuery ничем не грязнее твоего фреймворка — он тоже на JS написан.

Интересный довод. Честно говоря, не я предложил термин "чистый javascript". Согласись, что если на грязный и чистый не делить, то тогда нужно показывать в своих статьях и "мясо", которое стоит за вроде-как-бы-простым-с-виду-вызовом. Чистый должен встать против чистого. А иначе я могу сказать, что вот мой новый javascript — f(), вот там всё и делается.

Вот кстати, если ты облазил исходники вдоль и поперёк, то возьми любой отдельный кусок, допустим, манипуляцию классами, что ты там увидишь — неоптимальный код (inArray, each и т.п.), или возьмём твою любимую isFunction, её что можно использовать на низком уровне (в отрыве от фреймворка)? Она что переварит всё, что угодно корректно? Конечно, нет. Это просто сейчас попалось на глаза. Не сомневаюсь, что там куча таких тонких мест, по своей природе супер-динамический язык, помноженный на весёлые интерпретаторы не оставляет нам никаких надежд поиметь устойчивую (не fragile) либу. Чужую. Лучше делать своё. А там и опыт нарисуется. Боевой.
Re[14]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 10.08.07 11:18
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Я все равно так и не понял, в чем выражается протест против статьи, фреймворков вообще и фреймворка jQuery в частности


Да нет протеста — есть конкретное пожелание (я его высказал).
Для того чтобы меня было легче понять, напишу кое-что еще. Но перед этим — небольшая ремарка.
Мы с Вами прекрасно понимаем, что каждый из нас ведет свою игру — у Вас одна (в подробности из уважения не лезу), у меня — игра другая.
А теперь давайте рассмотрим гипотетическую ситуацию. Прихожу я, как соискатель вакантной должности javascript-программиста (той самой, о которой Вы писали чуть раньше, с интересной такой зарплатой в 1000$), ну, например, лично к Вам. Говорю:
— Готов взвалить на себя всю работу с клиентской частью проекта, т.к. JavaScript для меня — это открытая книга.
Тут Вы вспоминаете, что читали на днях интересную статью под названием "jQuery – Javascript нового поколения". Немного подумав и взвесив все "за" и "против" (прокалькулировав заодно фонд зарплаты в "новом свете", исходящем от jQuery), Вы мне отвечаете:
— Да вообще-то нам javascript-программист теперь скорее всего не понадобится — теперь нам его заменит jQuery.
На это я пытаюсь возразить:
— Но позвольте, неужели Вы собираетесь положиться на какую-то "дармовщинку" из инета?
— А почему бы и нет, — отвечаете Вы, — вот посмотрите статейку, люди рекомендуют!
Я, не оставляя попыток "зацепиться за штуку зеленых", продолжаю:
— Так Вы в самом деле думаете, что и авторам статей можно доверять?
— А почему бы и нет? Вот посмотрите, как удачно автор раскрашивает табличные строки, табличка реагирует на движения мыши, да и запросы к серверу он благодаря чудо-библиотеке обрабатывает легко и непринужденно. И все у него — буквально несколько строк.
И как Вы думаете, что мне останется напоследок? Да ничего более, как "перемыть кости" автору этой злополучной для меня статьи, не забыв отметить, что его знаний JavaScript пока не достаточно, чтобы давать советы направо и налево...

Надеюсь, Вы поймете меня верно — ничего личного, просто такое вот стечение обстоятельств...

Еще немного вот об этом:
M>А, ну да, код на Яваскрипте, библиотека на Яваскрипте, но это никоим образом не Яваскрипт

Я имел в виду то, что большинство попыток Zeroglif'а обсудить что-либо, касающееся непосредственно языка программирования, Вы просто "на корню" пресекали демонстрацией показателей экономии денег и времени...
Re[15]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.07 11:44
Оценка:
Здравствуйте, AKS., Вы писали:

AKS>Здравствуйте, Mamut, Вы писали:


M>>Я все равно так и не понял, в чем выражается протест против статьи, фреймворков вообще и фреймворка jQuery в частности


AKS>Да нет протеста — есть конкретное пожелание (я его высказал).

AKS>Для того чтобы меня было легче понять, напишу кое-что еще. Но перед этим — небольшая ремарка.
AKS>Мы с Вами прекрасно понимаем, что каждый из нас ведет свою игру — у Вас одна (в подробности из уважения не лезу), у меня — игра другая.
AKS>А теперь давайте рассмотрим гипотетическую ситуацию. Прихожу я, как соискатель вакантной должности javascript-программиста (той самой, о которой Вы писали чуть раньше, с интересной такой зарплатой в 1000$), ну, например, лично к Вам. Говорю:

дальше поскипано.

Вот ведь вам дался этот пример с таблицей Но это — в сторноу. Теперь рассказываю я, как работодатель. У меня есть программист, который за две недели напишет пользовательский интерфейс и программист, который за две недели только-только закончит выправлять ошибки (в основном, связанные с кроссбраузерностью, скорее всего) в своем, родном, с нуля написанном фреймворке. Второй программист в конце этой второй недели вылетит на улицу, потому что моя основная задача — это написание продукта, а не борьба с Яваскриптом.

Вообще фраза

Да вообще-то нам javascript-программист теперь скорее всего не понадобится — теперь нам его заменит jQuery.

показывает либо полное непонимание того, что от javascript-программиста требуется, либо полное непонимание того, что такое фреймворк, либо и того и другого.

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

— Но позвольте, неужели Вы собираетесь положиться на какую-то "дармовщинку" из инета?
— А почему бы и нет, — отвечаете Вы, — вот посмотрите статейку, люди рекомендуют!


Контрцитаты:

http://rsdn.ru/Forum/?mid=2015762
Автор: Sinclair
Дата: 21.07.06
и http://rsdn.ru/Forum/?mid=2027495:
Автор: Sinclair
Дата: 27.07.06

Из всего этого следуют Правила большого пальца:
1. Все, что можно купить, нужно покупать (cюда же входит подбор бесплатных компонентов, при их наличии)
2. Все, что нельзя купить, нужно аутсорсить
3. Нельзя аутсорсить "core" — то, за что тебе платят деньги.

Т.е., если ты продаешь программу для бухгалтерии:
1. СУБД, компилятор, визуальные компоненты, инсталлер, хелп вьювер и т.п. — приобретаются
2. Документация, саппорт, скины, кастомные кофигурации — аутсорсятся.
3. Ядро пишется твоей командой высококлассных специалистов, проверяется твоей командой профессионального QA.

Сейчас большинство народу, не принявшего п.1, уже вышли из бизнеса. Сейчас идет освоение п.2.




1. Определиться с основными требованиями к решению. Как правило, происходит на этапе написания SRS, который, вообще говоря, не зависит от того, собственный будет велосипед или готовое решение.
2. Пойти в инет и выбрать некоторое количество решений-кандидатов.
Это делается при помощи Google; как правило более 4х часов на поиски отводить смысла нет. Иногда, в особо запущенных случаях (не удается подобрать хороший запрос для гугла) кидается вопрос в тематический форум(ы). Это удешевляет данный шаг, но делает его дольше (надо дать хотя бы неделю, чтобы завсегдатаи ответили)ю
3. Полученный на предыдущем шаге список просеивается на предмет получения двух-трех кандидатов, которые похожи на то, что надо. Как правило, на это достаточно 8 часов
4. Для отобранных финалистов достаются демы/триалы, и выполняется некоторый набор тестов для проверки п.1. Опять же, жедательно ограничить это дело максимум 8 часов на кандидата.
5. По результатам отбирается лучший вариант. Он и идет в проект — покупается необходимая лицензия и в бой.

Примечания:
— если на шаге 4 ни один из финалистов не выдержал испытания, то надо вернуться на шаг 3 и выбрать других.
— если на шаге 3 не удалось ничего найти, возвращаемся на шаг 2.
— если и здесь нас ждет облом, заключаем, что выхода нет и пишем свой велосипед.

В большинстве случаев, мы получаем готовый результат за одну рабочую неделю одного разработчика. Возможны, конечно, варианты:
1. Если ищется готовое решение для большой проблемы, то имеет смысл умножить оценки для этапа 4 на эмпирический коэффициент.
2. Если ищется какая-нибудь экзотика, то нужно увеличить оценки для этапа 2, т.к. гугл хорошо ищет только популярный контент.
3. В некоторых случаях имеет смысл не делить на шаги, а делать "поиск с возвратами": пытаться зайти как можно дальше с каждым из вариантов, возвращаясь назад в случае обнаружения нерешаемой проблемы. Симптомы того, что у вас и есть некоторый случай:
— не требуется выбрать самое лучшее решение. Достаточно удовлетворительного.
— рынок завален готовыми решениями, и анализ всего списка будет потерей времени.


Так вот. Моя задача — построить сайт, включающий разветвленную и достаточно сложную админку и местами не менее сложный фронтенд. Каким боком мне уперлась разработка своего собственного фреймворка? У меня нет лишних n месяцев и n килобаксов, чтобы из собственного кармана финансировать разработку оного. Обзор рынка на определенный момент показал, что всем нашим требованиям удовлетворяет jQuery. Мы ее и выбрали. Мало того, на нее перешел и соседний офис, переписав внутренние сайты со своих поделок на нее и переведя один крупный сайт внешний на нее же. Обратно возвращаться никто не хочет, потому что нет смысла: производительность возросла в разы, проблемы с различными браузерами уменьшились так же в разы. И не только соседний офис

AKS>Надеюсь, Вы поймете меня верно — ничего личного, просто такое вот стечение обстоятельств...


AKS>Еще немного вот об этом:

M>>А, ну да, код на Яваскрипте, библиотека на Яваскрипте, но это никоим образом не Яваскрипт

AKS>Я имел в виду то, что большинство попыток Zeroglif'а обсудить что-либо, касающееся непосредственно языка программирования, Вы просто "на корню" пресекали демонстрацией показателей экономии денег и времени...


Я не видел попыток обсуждения чего-то, касающегося непосредственно языка программирования. Может, я что-то упустил, ткните меня.


dmitriid.comGitHubLinkedIn
Re[13]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.07 11:51
Оценка:
Здравствуйте, Zeroglif, Вы писали:

M>>А фреймворк jQuery действительно позволяет находить решения быстрее, чем аналогичные на чистом JS. Кстати, как только ты написал свой "типа фреймворк", то у тебя уже тоже не "чистый JS". В этом отношении jQuery ничем не грязнее твоего фреймворка — он тоже на JS написан.


Z>Интересный довод. Честно говоря, не я предложил термин "чистый javascript". Согласись, что если на грязный и чистый не делить, то тогда нужно показывать в своих статьях и "мясо", которое стоит за вроде-как-бы-простым-с-виду-вызовом. Чистый должен встать против чистого. А иначе я могу сказать, что вот мой новый javascript — f(), вот там всё и делается.


Синклер уже говорил
Автор: Sinclair
Дата: 09.08.07
о разнице в терминах.

Цитирую еще раз:

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


Z>Вот кстати, если ты облазил исходники вдоль и поперёк, то возьми любой отдельный кусок, допустим, манипуляцию классами, что ты там увидишь — неоптимальный код (inArray, each и т.п.),


чем он неоптимален?

Z>или возьмём твою любимую isFunction, её что можно использовать на низком уровне (в отрыве от фреймворка)?


можно. если где-то в своем коде необходимо узнать, функция ли передана в качестве параметра.

Z>Она что переварит всё, что угодно корректно? Конечно, нет.


Почему нет? У нее ровно одна задача — узнать, является ли передаваемый параметр функцией. Со своей задачей она справляется.

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


Волков бояться — в лес не ходить. Свой собственный фреймворк, помноженный на супер-динамический язык, помноженный на весёлые интерпретаторы даст гораздо более нестабильную либу. Причины такого я уже приводил
Автор: Zeroglif
Дата: 09.08.07
(в конце сообщения)

Z> Чужую. Лучше делать своё. А там и опыт нарисуется. Боевой.


Пока вы будете писать свою либу, я уже сдам свой проект и возьмусь за другой.


dmitriid.comGitHubLinkedIn
Re[15]: jQuery – Javascript нового поколения
От: ddocker Россия www.codelab.ru
Дата: 10.08.07 12:07
Оценка: +1
AKS>Тут Вы вспоминаете, что читали на днях интересную статью под названием "jQuery – Javascript нового поколения". Немного подумав и взвесив все "за" и "против" (прокалькулировав заодно фонд зарплаты в "новом свете", исходящем от jQuery), Вы мне отвечаете:
AKS>— Да вообще-то нам javascript-программист теперь скорее всего не понадобится — теперь нам его заменит jQuery.
Это был бы очень неадекватный работодатель.
Нормальный решил бы примерно так: "Да, нам конечно нужен js-программист, а вот чтобы он быстрее реализовал всю нашу функциональность и требования — мы считаем что ему следует активно использовать jq (т.к. вот мы почитали, посмотрели, взвесили, попробовали и т.д.)"
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
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
Re[14]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 13:14
Оценка: 35 (2)
Z>>Вот кстати, если ты облазил исходники вдоль и поперёк, то возьми любой отдельный кусок, допустим, манипуляцию классами, что ты там увидишь — неоптимальный код (inArray, each и т.п.),

M>чем он неоптимален?


A посмотреть и подумать, можно ли его упростить?

Z>>или возьмём твою любимую isFunction, её что можно использовать на низком уровне (в отрыве от фреймворка)?


M>можно. если где-то в своем коде необходимо узнать, функция ли передана в качестве параметра.


Ну-ну.

Z>>Она что переварит всё, что угодно корректно? Конечно, нет.


M>Почему нет? У нее ровно одна задача — узнать, является ли передаваемый параметр функцией. Со своей задачей она справляется.


Ну передай ей для начала значения этих переменных:

var a, b, c;

a = /^\dfunction\d/;
b = new String('Wow, J(ava)Script is soooo functional...');
c = ['method', 'function', 'object'];
c.constructor = 'Lego';


Re[9]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 13:46
Оценка: -1
Здравствуйте, Mamut, Вы писали:

Z>>Пример с алертом был утрирован СПЕЦИАЛЬНО!


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


M>Я привел тебе гораздо более реальный пример, который ты благополучно проигнорировал.

M>Тултип в 36КБ против jQuery + тултип в 29.7КБ

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


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


Я не игнорирую, я сознательно отказываюсь играть по вашим правилам и доказывать что-то, впрягаясь в программирование ради доказательства. Пример с алертом некорректен в такой же степени, как и все те примитивные примеры, на базе которых показывается лже-простота пропагандистами, как и твой пример с раскраской строк, такой же не оптимальный и не требующий jQuery по большому счёту. Это и есть разговор о javascript и о программировании (который ты не увидел), разговор, на которой я настроился, а не на "про скорость разработки, зарплаты, бизнес и проч".

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


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


Хочу, полный разбор исходников, узкие места, сравнение всего кода со всем кодом, а не передёргивание с вызовами. Может тогда меньше по javascript тусовкам будет бродить привидений, который задают вопросы вроде, "а что это за синтаксис такой $(), а то не могу его в доках найти".

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


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


M>Показываю в последний раз :

M>
M><a href="/test1.html" class="ajax">Ссылка 1</a>
M><a href="/test2.html" class="ajax">Ссылка 2</a>
M>

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

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


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


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

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


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


Хожу:

f();


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


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


Во-первых 60 скопейками, а не 20, но это модная манера такая сжатый код презентовать. И 20 много, если тебе нужно только то, что укладывается в 2-4-5-10...

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


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


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


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


Я с кем разговариваю? Ты менеджер, владелец, программист или всё вместе? Выдави из себя javascript-программиста и поговорим. А иначе я начинаю путаться в маркетологических смыслах.

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


Опять про бизнес, теперь Wordpress-ный.

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


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


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


Отучаемся передёргивать карты, я говорю не за всех, а о том, что всё зависит от ситуации. То есть говорю про то же, что и ты.

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


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


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


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


Псевдопрограммирование в смысле javascript — это то, что описывает твоя статья, это управление самодельным неоптимальным избыточным нетобойсделанным АРI от джона/пети/димы с отсутствующим прошлым и неясным будущим...
Re[9]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 13:59
Оценка:
S>Вообще, если лично тебе не нравится jQuery — никто ее тебе не навязывает. Пиши себе. Или у тебя страшная ревность к тому, что раньше ты брал за advanced javascript effects мегабабло, а теперь это доступно любому пионеру через два дня обучения jQuery? Может ты боишься, что веб программисты встрянут и разучатся биндить обработчики вручную, без jQuery? Ну, до этого ой как далеко...

Грубишь, конечно, но отвечу по пунктам:

— я нормально отношусь к jQuery, во всяком случае это не так плохо написано, как Prototype;
— я не ревную к мегабаблу, так как в жизни не зарабатывал программированием;
— пионеры с jQuery в руках меня не пугают, меня пугают невежественные пионервожатые;
— и я не боюсь, что кто-то там что-то разучится биндить, я боюсь, когда вообще перестают учиться по наущению.
Re[9]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 10.08.07 14:26
Оценка: -1
Здравствуйте, Mamut!

Что-то как-то не получается побеседовать. Вы, чуть что, сразу оправдываться: "Мне с jQuery хорошо, никогда раньше так не жил". Может хватит — ведь никто не собирается отнимать у Вас эту "игрушку". Более того, прочитав о ваших программерах, работающих с "черепашьей" скоростью (по две недели, да еще и оставляют Вас потом один-на-один с JavaScript, когда Вы их увольняете), я даже пустил скупую мужскую слезу из сочувствия, и решил — Вам jQuery сам бог послал!

Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!

Кстати, насчет тултипа — чем плоха, к примеру Соуденовско-Шуркаевская классика? Почему люди изобретают "тяжеленный велосипед с рамой от jQuery"?
Re[15]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 10.08.07 14:27
Оценка:
Z>>>Вот кстати, если ты облазил исходники вдоль и поперёк, то возьми любой отдельный кусок, допустим, манипуляцию классами, что ты там увидишь — неоптимальный код (inArray, each и т.п.),
M>>чем он неоптимален?
Z>A посмотреть и подумать, можно ли его упростить?

Зачем? Может, вместо того, чтобы "наискосок" читать код, может посмотришь, как и где эти функции используются? Вот неполюбившиеся тебе inArray и each:
    inArray: function( b, a ) {
        for ( var i = 0, al = a.length; i < al; i++ )
            if ( a[i] == b )
                return i;
        return -1;
    },

    each: function( obj, fn, args ) {
        if ( obj.length == undefined )
            for ( var i in obj )
                fn.apply( obj[i], args || [i, obj[i]] );
        else
            for ( var i = 0, ol = obj.length; i < ol; i++ )
                if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
        return obj;
    }


Что именно в них не нравится?

Z>>>или возьмём твою любимую isFunction, её что можно использовать на низком уровне (в отрыве от фреймворка)?

M>>можно. если где-то в своем коде необходимо узнать, функция ли передана в качестве параметра.

Z>Ну-ну.


Что ну-ну?(обожаю такую аргументацию) Вот она:
    // This may seem like some crazy code, but trust me when I say that this
    // is the only cross-browser way to do this. --John
    isFunction: function( fn ) {
        return !!fn && typeof fn != "string" && !fn.nodeName && 
            fn.constructor != Array && /function/i.test( fn + "" );
    }


Что мешает ее использовать в своем коде?

Z>>>Она что переварит всё, что угодно корректно? Конечно, нет.

M>>Почему нет? У нее ровно одна задача — узнать, является ли передаваемый параметр функцией. Со своей задачей она справляется.
Z>Ну передай ей для начала значения этих переменных:

Z>
Z>var a, b, c;

Z>a = /^\dfunction\d/;
Z>b = new String('Wow, J(ava)Script is soooo functional...');
Z>c = ['method', 'function', 'object'];
Z>c.constructor = 'Lego';
Z>


Z>




a — функция
b — не функция
c — не функция

Что и следовало ожидать. Почему a — функция? Читаем ECMA-262 пункт 15.10.2:

A regular expression pattern is converted into an internal function using the process described below.

Паттерн регулярного выражения конвертируется во внутреннюю функцию используя описанный процесс.


Так же пункт 15.10.2.2:

A Pattern evaluates ("compiles") to an internal function value. RegExp.prototype.exec can then apply this function to a string ...

Паттерн вычисляется ("компилирутся") во внутренне функциональное значение. RegExp.prototype.exec может потом применить эту функцию к строковому литералу...


Какие еще "аргументы" будут?


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

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


M>>Я привел тебе гораздо более реальный пример, который ты благополучно проигнорировал.

M>>Тултип в 36КБ против jQuery + тултип в 29.7КБ

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


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


Z>Я не игнорирую, я сознательно отказываюсь играть по вашим правилам и доказывать что-то, впрягаясь в программирование ради доказательства.


А почему мы должны играть по твоим правилам и упираться в приведенный тобою пример. Нет уж. Ты попросил нас, мы сделали. Мы попросили тебя... И? Ни ответа ни привета. Спор ради спора.

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


Блин. Что ты прикопался к этому примеру? Статья является введением в jQuery.

Существуют десятки, если не сотни, библиотек, позволяющих реализовывать такие вещи, как красочные графические эффекты и анимацию, перетягивание и сортировку предметов, общение с сервером без перезагрузки страницы и многое, многое другое. Большинство таких библиотек отличает некоторая монструозность и, зачастую, сложность в использовании. Особенно в сравнении с библиотекой, о которой пойдет речь в этой статье.


Или чукча не читатель?

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


Или чукча опять не читатель? Чем твоя собственная библиотека хуже/лучше jQuery? Если она лучше, пожалуйста, приводи код, пиши статью. Здесь так и делают (например, SObjectizer
Автор: Евгений Охотников
Дата: 30.12.05
одного из участников). Если нечего показать, а хочется опронента неаргументировано закидать какашками, то начинай свой топик в Священных Войнах...

Еще раз повторю. jQuery — это фреймворк. Библиотека. Она включает в себя функции для легкого и быстрого манипулирования DOM'ом, AJAX'ом и т.п. По сравнению с кодом на чистом (без библиотек) JS она позволяет писать более грамотный и понятный код, облегчая жизнь программисту. Таково свойство всех фреймворков — облегчать жизнь программисту, скрывая низкоуровневую работу. Если есть проблемы с пониманием того, что такое фреймворк или библиотека — то это не ко мне, это в гугл.

Z>>> Чтобы продемонстрировать избыточность кода задаче. Очень похожие утрированные примеры (подвесить клик на якорь или добавить класс и т.п.) используются в большинстве туториалов.


Ты понимаешь, что такое туториал? Или ты хочешь, чтобы тебе в туториале сказали: вот тебе Десептикон, он работает, разбирайся сам. Цель любого туториала — дать представление о библиотеке.

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


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


Z>Хочу, полный разбор исходников, узкие места,


Значит ты думаешь, что статья "Advanced jQuery" будет востребована. Так сразу и скажи. А то требуешь от 10-страничного введения в библиотеку полного разбора по косточкам. Почему тебя не коробит, например, что CSS Tutorial "пропагандирует" CSS, но при этом не дает разбора всех связанных с CSS проблем?

Z>сравнение всего кода со всем кодом, а не передёргивание с вызовами.


Иди кури поняти "библиотека". Библиотека/фреймворк предназначены для того, чтобы облегчить написание кода. поэтому я имею полное прав написать:

Раньше вы писали так:

100 строчек кода

А с этой библиотекой вы будете писать так:
10 строчек кода


Z>Может тогда меньше по javascript тусовкам будет бродить привидений, который задают вопросы вроде, "а что это за синтаксис такой $(), а то не могу его в доках найти".


"а что это за синтаксис такой $(), а то не могу его в доках найти" — это клиника, их и доки по JS не спасут.

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


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


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


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


Z>Хожу:


Z>
Z>f();
Z>


Не катит. Я привел конкретный пример с использование конкретной библиотеки, который можно пощупать и протестировать в любом браузере. Твой ответ можно охарактеризовать только как "слив защитан"

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


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


Z>Во-первых 60 скопейками, а не 20, но это модная манера такая сжатый код презентовать. И 20 много, если тебе нужно только то, что укладывается в 2-4-5-10...


Опять неаргументировано. Я уже приводил достаточно сложный код и предлагал сравнить его с jQuery. Ответа я так и не дождался. Вперед. Задачи я описал. Давай, реши их в 2-10 строчек кода. Я не шучу, кстати. Я привык аргументировать свои высказывания и ожидаю от оппонента того же. Задача 1. И задача 2. Они элементарны.

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


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


Z>Я с кем разговариваю? Ты менеджер, владелец, программист или всё вместе? Выдави из себя javascript-программиста и поговорим. А иначе я начинаю путаться в маркетологических смыслах.


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

У меня есть, например, таск:

- Есть список price patterns (правила изменения цен)
— Есть список отелей
— Есть список агентств и групп агентств

Надо:
Выбрать отель/отели, агентство/агентства, start date — end date
Нажать на manual apply

Для каждого отеля выпадает список комнат в периоды, пересекающиеся с start date — end date
Для каждой отдельной комнаты я должен мочь задать один из существующих паттернов или создать на лету свой собственный паттерн в модальном диалоге


С jQuery (+ Taconite + jqModal) у меня это заняло пару дней. Плюс пару дней на тестирование. Допустим, неделя.

Если бы у меня не было jQuery? Этот таск бы растянулся на месяц. Потому что надо же еще свой фреймворк написать... Да еще оттестировать...

Хорошо. Выделю из себя только javascript-программиста. Моя реакция на jQuery? "Ура, не надо больше низкоуровневый код писать! Давай-ка я сосредоточусь на более веселых вещах. Напишу ка я себе супер-навороченную админку." jQuery — это инструмент. причем очень эффективный инструмент.

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


Z>Опять про бизнес, теперь Wordpress-ный.


Пойми, что разработка ПО — это всегда бизнес (за очень редким исключением).

Предположим, у меня собственная контора программистов. Выделить n килобаксов на разработку собственного js-фреймворка или лучше их сэкономить?
Предположим, я работаю на кого-то. Мне никогда в жизни не дадут тратить время на изобретение собственных велосипедов (если контора вменяемая), потому что есть такая вещь, как дедлайны и сроки. Велосипеды обычно приводят к переносу этих сроков на более позднее время и потерю клиентуры.
Предположим, у меня (изначально)некоммерческий проект типа digg. Ключевое слово — time to market. Мне надо законченный продукт выпустить как можно быстрей, потому что хорошие идеи кто-то рано или поздно реализует.

и .т.п

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


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


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


Z>Отучаемся передёргивать карты, я говорю не за всех, а о том, что всё зависит от ситуации. То есть говорю про то же, что и ты.


Вот это называется говорить за всех:

Компании "A", построившей все свои проекты на базе JSLibrary №13 ваши jsQuery-наработки даром не нужны.


Я же сказал, что мне известно много случаев, когда...

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


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


Z>Псевдопрограммирование в смысле javascript — это то, что описывает твоя статья,


Моя статья является введением в библиотеку. Что ты хотел от введения?

Сейчас люди, которых я "подсадил" на jQuery проектирют сложные UI на яваскрипте и благодарят меня чуть ли не каждый день за то, что я избавил их от геморроя.

Z>это управление самодельным


Практически любой фреймворк в начале является самодельным. Ты же не боишься свой самодельный фреймворк использовать? И твои коллеги по работе не боятся использовать твой фреймворк? Чем jQuery отличается?

Z>неоптимальным


доказательства? только не на синтетических примерах типа alert() У меня есть более грамотные тесты: например, замеры скорости. Поверь, что 10-165 миллисекунд — это очень быстро.

Z>избыточным


определи избыточность.

Z>нетобойсделанным


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

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

Z>АРI от джона/пети/димы


Да от кого угодно.

Z>с отсутствующим прошлым


Библиотеке больше года. В вебе — это вечность. Скажу по секрету, что было время, когда у любого программного продукта не было прошлого

Z>и неясным будущим...


Будущее более, чем ясное: http://docs.jquery.com/JQuery_1.2_Roadmap


dmitriid.comGitHubLinkedIn
Re[16]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 10.08.07 17:35
Оценка: 32 (1)
Честно говоря, надоело ждать, пока кто-нибудь исправит вот это ложное утверждение:

a — функция
b — не функция
c — не функция

Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?
Хорошо, пишу я:

var a, b, c;

a = /^\dfunction\d/;
b = new String('Wow, J(ava)Script is soooo functional...');
c = ['method', 'function', 'object'];
c.constructor = 'Lego';

// ...trust me... --John :)
function isFunction(fn) {
    return !!fn && typeof fn != "string" && !fn.nodeName && 
        fn.constructor != Array && /function/i.test( fn + "" );
};

alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!


Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...
Re[13]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, Zeroglif, Вы писали:

[[ поскипано ]]

Z>Чужую. Лучше делать своё. А там и опыт нарисуется. Боевой.


Хм, а чем твой опыт лучше, чем John Resig и комьюнити, развивающий этот проект. А, я понял, у него есть один огромный недостаток — "его делали не мы"
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[10]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, AKS., Вы писали:

AKS>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


Цитаты можно в студию .
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[11]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, Mamut, Вы писали:

Я балдею, дорогая редакция. Человек — он же Zeroglif, не зарабатывающий на программировании, как сам признается топиком выше, учит программистов работать
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[10]: jQuery – Javascript нового поколения
От: rameel https://github.com/rsdn/CodeJam
Дата: 10.08.07 19:52
Оценка:
Здравствуйте, Zeroglif, Вы писали:

Z>Хожу:


Z>f();

Вау! Крутая библиотека, круче, чем я себе представлял . Где качать и под какой лицензии? И еще:

Хочу, полный разбор исходников, узкие места, сравнение всего кода со всем кодом, а не передёргивание с вызовами. Может тогда меньше по javascript тусовкам будет бродить привидений, который задают вопросы вроде, "а что это за синтаксис такой f(), а то не могу его в доках найти".


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


Z>Я с кем разговариваю? Ты менеджер, владелец, программист или всё вместе? Выдави из себя javascript-программиста и поговорим.


А смысл? От этого что, смысл вопроса изменится?

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


Z>Опять про бизнес, теперь Wordpress-ный.


Ага, он самый. А ты как думал?! Добро пожаловать в реальный мир.
... << RSDN@Home 1.2.0 alpha rev. 704 >>
Re[17]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:13
Оценка:
Здравствуйте, AKS., Вы писали:

AKS>Честно говоря, надоело ждать, пока кто-нибудь исправит вот это ложное утверждение:


AKS>

AKS>a — функция
AKS>b — не функция
AKS>c — не функция

AKS>Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


AKS>Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?


AKS, привет, спасибо за поддержку. Время — деньги.

AKS>Хорошо, пишу я:


AKS>
AKS>var a, b, c;

AKS>a = /^\dfunction\d/;
AKS>b = new String('Wow, J(ava)Script is soooo functional...');
AKS>c = ['method', 'function', 'object'];
AKS>c.constructor = 'Lego';

AKS>// ...trust me... --John :)
AKS>function isFunction(fn) {
AKS>    return !!fn && typeof fn != "string" && !fn.nodeName && 
AKS>        fn.constructor != Array && /function/i.test( fn + "" );
AKS>};

AKS>alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!
AKS>


AKS>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...


Вдвоём возможно быстрее достучимся, но похоже это тот случай, когда человек слабо представляет себе даже то, как работает любимая им функция из любимой им либы. Мне не поверил, сам не проверил и сел в лужу, выдержки из ECMAScript конечно же слегка невпопад, речь там идёт об "internal function", да и не имеет это отношение к алгоритму функции. Вообще никакого. Mamut, мои аргументы исходят от тебя самого, не жди их от меня, пиши ещё. AKS, к слову, напомню, в прошлом году здесь мы по наитию коротенько обсуждали то, что mozilla самостоятельно расширила нативный RegExp object так, что можно его вызвать /\d/('1') , но это их частное дело, согласно ES на таких объектах не должно висеть свойство [Call]], у них висит, уж очень это непростые объекты, перемудрили, отсюда и typeof /\d/ даёт function. И багом это особо не назовёшь, живёт до сих пор, подозреваю, что слишком много кода в сети завязано на таких проверках, как isFunction, и просто не стали трогать.

Несколько выдержек из ES для общего представления о том, чем по большому счёту отличается функция от не-функции (нативные объекты должны следовать этому, хостовым хорошо бы тоже, но могут врать, вроде того же alert-а в IE):

 7.8.5 Regular Expression Literals

    A regular expression literal is an input element that is converted to a RegExp object (section 15.10) when it is scanned.

8.6.2 Internal Properties and Methods

    <... из таблицы вырвал>

    [[Call]] - a list of argument values provided by the caller. Executes code associated with the object. 
    Invoked via a function call expression. Objects that implement this internal method are called functions.

11.4.3 The typeof Operator

    <...>

    5. Return a string determined by Type(Result(4)) according to the following table:
    
    <... из таблицы вырвал>
    
    Object (native and doesn't implement [[Call]]) - "object"    

15 Native ECMAScript Objects

    <... до кучи про [[Class]]>

    Unless specified otherwise, the [[Class]] property of a built-in object is "Function" if that built-in object 
    has a [[Call]] property, or "Object" if that built-in object does not have a [[Call]] property.


Ну, и дальше можно пойти непосредственно в ES15.10 поискать и не найти, положен ли таким объектам [Call]]... Повторюсь, к рассматриваемой isFunction это никаким боком не относится (но раз пошла такая пьянка), функция работает по очень простому алгоритму, который в определённых случаях просто врёт. Для jQuery и её внутренней логики такая функция может быть подходящей, но полагаться на неё отдельно для отдельных случаев я бы воздержался...
Re[12]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:20
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, Mamut, Вы писали:


R>Я балдею, дорогая редакция. Человек — он же Zeroglif, не зарабатывающий на программировании, как сам признается топиком выше, учит программистов работать


Ты по существу выстрели, а не мне лично в голову. Тем более, что я не человек.
Re[11]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:26
Оценка:
Z>>Опять про бизнес, теперь Wordpress-ный.

R>Ага, он самый. А ты как думал?! Добро пожаловать в реальный мир.


Не надейся, что мой образ, который ты там себе нафантазировал имеет что-то общее с реальностью. Я не собирался обсуждать бизнес, скорость разработки и проблемы с нехваткой ресурсов (о чём здесь, кстати, честно признались, за что мой поклон этому товарищу). Неожиданно для меня разговор ушёл в другую сторону. Хотите использовать js-либы — используйте на здоровье.
Re[14]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:30
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, Zeroglif, Вы писали:


R>[[ поскипано ]]


Z>>Чужую. Лучше делать своё. А там и опыт нарисуется. Боевой.


R>Хм, а чем твой опыт лучше, чем John Resig и комьюнити, развивающий этот проект. А, я понял, у него есть один огромный недостаток — "его делали не мы"


Должен же понимать, опыт хорош своей принадлежностью. Твой опыт у тебя выглядит органичней, чем твой же опыт, но у меня.
Re[11]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 10.08.07 20:32
Оценка:
Здравствуйте, rameel, Вы писали:

R>Здравствуйте, AKS., Вы писали:


AKS>>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


R>Цитаты можно в студию .


Не выуживай конфликты, говори по существу, мы подтянемся.
Re[12]: jQuery – Javascript нового поколения
От: vaad2  
Дата: 10.08.07 23:04
Оценка:
Не надаело лажу писать?
Самый основной вопрос при написании больших проектов — преемственность, кроссбраузерность. JQ с этим справляется. Помимо этого JQ — документирован, для него полно плагинов (которые тоже документированы), которые "джедай программизьма" наверное не смотрел. Анимация делается на ура. Вместо того чтобы обкакивать, сначало бы написал что нибудь кроме алерта, порылся в доках.
Я спокойно могу посадить новичка за уже написанную документацию, разжеванную на примерах, вместо того, чтобы самому его обучать. Опять же если руки не кривые — убери лишнее из библиотеки, благо это не прототайп, по размеру вполне компактная и читаемая.

А твой мегаджаваскрипт кроме тебя самого никто не поймет. Клепать в одиночку электронные магазины — этого, конечно, достаточно. Из-за таких перцев (которые пишут "круто") приходиться ковыряться в настоящем гуано.

Насчет миллисеккунд — это глум чтоли? Люди вы на javascript ядерные реакции рассчитываете?

Насчет статьи — автор показал что есть такая фича (ознакомил, и сделал это неплохо), хочешь узкие места — гугли, хочешь подробности — ссылки даны. Только пока ты будешь искать дыры, корявости, я буду продавать проекты.

Моя цель работы — прибыль, а в чем твоя цель, потащиться от красивости кода? Могу поспорить что через пару лет код написанный тобой не будет считаться крутым.

И вообще это такая национальная черта — обкакать то, что самим не дано? Я что-то не в одном из постов не заметил, что были предложены альтернативы. Может покажешь свой фреймворк?
Re[18]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 11.08.07 00:39
Оценка:
Здравствуйте, Zeroglif, Вы писали:

Z>...отсюда и typeof /\d/ даёт function. И багом это особо не назовёшь, живёт до сих пор, подозреваю, что слишком много кода в сети завязано на таких проверках, как isFunction, и просто не стали трогать.


Ну да — и у самого Брендана в Narcissus'е полно типа такого:

(this.scanNewlines ? /^[ \t]+/ : /^\s+/)(input);


Трогать уж точно не будут — нравятся им сокращения такие, и вообще страсть у них к shorthand'ам — вот и Джон ненарадуется нововведениям 1.8, говорит, что элегантно:

document.addEventListener("click", function() false, true);

elems.some(function(elem) elem.type == "text");
Re[13]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 11.08.07 00:47
Оценка:
Здравствуйте, vaad2, Вы писали:

V>Не надаело лажу писать?


V>И вообще это такая национальная черта — обкакать то, что самим не дано?


Да зачем-же Вы так? Ведь какие-то замечания могут оказаться полезными. Вроде автор статьи меня уже разочек поблагодарил на одну малюсенькую "наводочку" — значит хоть и маленькая, но в деле сгодится, значит не зря я писал. И вообще замечания ведь всегда можно "оформить" и отрапортовать автору библиотеки jQuery — разве же это плохо? Я бы, например, был благодарен за такой "разбор полетов"...
Re[13]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 11.08.07 04:13
Оценка: -1
Здравствуйте, vaad2, Вы писали:

V>Не надаело лажу писать?


Злобный флейм. Говори по существу.

V>Самый основной вопрос при написании больших проектов — преемственность, кроссбраузерность. JQ с этим справляется. Помимо этого JQ — документирован, для него полно плагинов (которые тоже документированы), которые "джедай программизьма" наверное не смотрел. Анимация делается на ура. Вместо того чтобы обкакивать, сначало бы написал что нибудь кроме алерта, порылся в доках.


Анимация делается на ура? Ну, что тут скажешь. Урааа! Сложно обкакивать то, где анимация. На всякий случай сообщу, что javascript, как это не покажется смешным, тоже документирован, а подробно описанный код легко читать любому js-программисту, для этого ему не нужно специально изучать JQ. Конечно, если предположить, что весь мир разом заболел jQuery, то твоя позиция про преемственность очевидна, с этим трудно не согласиться. Что касается кроссбраузерности, то это несомненный козырь любой либы, я с этим даже не спорю.

p.s. А кто это, "джедай программизьма"?

V>Я спокойно могу посадить новичка за уже написанную документацию, разжеванную на примерах, вместо того, чтобы самому его обучать. Опять же если руки не кривые — убери лишнее из библиотеки, благо это не прототайп, по размеру вполне компактная и читаемая.


Вместо того, чтобы обучать новичков на тех самых примитивных примерах, набери на работу спецов.

V>А твой мегаджаваскрипт кроме тебя самого никто не поймет. Клепать в одиночку электронные магазины — этого, конечно, достаточно. Из-за таких перцев (которые пишут "круто") приходиться ковыряться в настоящем гуано.


Злобный флейм 2.

V>Насчет миллисекунд — это глум чтоли? Люди вы на javascript ядерные реакции рассчитываете?


Javascript пока ещё был, есть и некоторое время будет языком, где миллисекунды играют роль, это связано с особенностью языка, как такового и особенностями отдельных интерпретаторов, если тебе это неизвестно, то для начала сходи на тот же слик и посмотри, как твои любимые библиотеки акцентируют своё внимание на скоростях. Потом просто почитай что-нибудь про оптимизацию и т.п. То же самое делает любой нормальный javascript-программист, бережёт чужие секунды. Но так как ты этого до сих пор не знаешь, то остаётся только надеяться на jQuery, это тебе строго показано к применению.

V>Насчет статьи — автор показал что есть такая фича (ознакомил, и сделал это неплохо), хочешь узкие места — гугли, хочешь подробности — ссылки даны. Только пока ты будешь искать дыры, корявости, я буду продавать проекты.


Статья как статья. Я вообще с удовольствием наблюдаю в этой ветке ваш позитивный настрой на бизнес. Могу только пожелать вам побольше проектов. Расстраивает только то, как вы безосновательно подозреваете всех, кто не с либами (не с вами) в... дырах, корявостях, портянках кода, тоннах кода и т.п. Господа продавцы, не судите по себе.

V>Моя цель работы — прибыль, а в чем твоя цель, потащиться от красивости кода? Могу поспорить что через пару лет код написанный тобой не будет считаться крутым.


"Протащиться от красивости кода"??? Ну, как с вами разговаривать... Да, моя цель — протащиться, успокойся только. Где-то близко к "Злобному флейму 3".

V>И вообще это такая национальная черта — обкакать то, что самим не дано? Я что-то не в одном из постов не заметил, что были предложены альтернативы. Может покажешь свой фреймворк?


А если не покажу, то ты меня, в натуре, не зауважаешь? LOL Лучше я останусь для тебя таким же пустым местом, как и ты для меня.
Re[17]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 12.08.07 07:46
Оценка:
AKS>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...

Спасибо. Отправлю багрепорт.

Какие еще замечания будут по другим функциям?


dmitriid.comGitHubLinkedIn
Re[17]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 12.08.07 08:02
Оценка:
AKS>

AKS>a — функция
AKS>b — не функция
AKS>c — не функция

AKS>Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


AKS>Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?


Протестировал в Firefox 2.0 под линуксом. Получил описанные мною результаты. В Опере и ИЕ тестировать было лень Под виндой получил описанные ниже результаты.


AKS>
AKS>alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!
AKS>


AKS>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...


Вывод? Ничего не стоит написать багрепорт http://dev.jquery.com/ticket/1480

Какие еще есть предложения по другим функциям?


dmitriid.comGitHubLinkedIn
Re[10]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 12.08.07 09:10
Оценка:
AKS>Что-то как-то не получается побеседовать. Вы, чуть что, сразу оправдываться: "Мне с jQuery хорошо, никогда раньше так не жил". Может хватит — ведь никто не собирается отнимать у Вас эту "игрушку". Более того, прочитав о ваших программерах, работающих с "черепашьей" скоростью (по две недели, да еще и оставляют Вас потом один-на-один с JavaScript, когда Вы их увольняете), я даже пустил скупую мужскую слезу из сочувствия, и решил — Вам jQuery сам бог послал!


Предположим, у меня есть программист Вася со своим "типа-фреймворком" (терминология не моя)
Еще у меня есть программист Петя со своим "типа-фреймворком"
И еще у меня есть программист Сережа тоже со своим "типа-фреймворком"

Эти фреймворки повторяют функциональность друг друга на 80-90-100%, но различаются в ключевых моментах.

У Васи методы, работающие с Ajax'ом, позволяют передавать callback-функции, но не генерируют никакх событий типа onAjaxStart, onAjaxEnd
У Пети такие события генерируются, но методы не принимают callback-функции.
А у Сережи есть и то и другое, но в порядке и количестве параметров, передаваемых в эти методы, не разобрался до конца сам Сережа.

А потом мы на работу берем программиста Женю, у которого тоже есть свой "типа-фреймворк", который повторяет функциональность других на 80-100%, но отличается от них в ключевых моментах.

Что будем использовать? Кто весь этот зоопарк будет стандартизировать и документировать?

У нас в сосднем офисе есть разработанный для них самих внутренний баг-трекер. Один из редких случаев, когда собственный велосипед был оправдан. До сих пор в неделю делается до сотни изменений в коде трекера, чтобы угодить всем желаниям клиентов. Но не в этом дело. Этот баг-трекер является побочным продуктом, так как есть еще и основные проекты.

В баг трекере вовсю используется яваскрипт — аякс, раскрывающиеся формочки и т.п. Пользоваться очень удобно. За одним но. Формы добавления тикетов/багов иногда подглюкивают в Опере. Иногда работает все нормально, а иногда — бац! и перестает форма открываться. Или отправляться.

Этот баг не закрывали полтора года по одной простой причине. Времени на поиск этого бага нет и не предвидится. Клиенты Оперой не пользуются, а в офисе можно привыкнуть ради багтрекера держать открытым, скажем, ФФ.

Недавно было специально выделено время на очистку кода этого самого багтрекера. Не мудрствуя лукаво весь яваскрипт перевели на jQuery. Тот же код (по логике) неожиданно стал работаь во всех браузерах, заявленных на сайте jQuery Фирма сэкономила время на тестах, программисты сэкономили нервы. Все довольны

AKS>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


Не вижу. Последний конструктив бы в http://rsdn.ru/forum/message/2616848.1.aspx
Автор: Zeroglif
Дата: 10.08.07
и в http://rsdn.ru/forum/message/2617158.1.aspx
Автор: AKS.
Дата: 10.08.07
. Все остальное сводилось к "а ведь ручками в 10-30 строчек кода легче было" без единого аргумента

AKS>Кстати, насчет тултипа — чем плоха, к примеру Соуденовско-Шуркаевская классика? Почему люди изобретают "тяжеленный велосипед с рамой от jQuery"?


Глядя наискосок вижу в этом тултипе сразу минимум одну проблему:
Array.prototype.in_array = ...


Встроенные объекты не рекомендуется расширять, потому что нарушается работа с этими элементами (например, JavaScript “Associative Arrays” Considered Harmful)

Вторая проблема. Обожаю, когда экономят два-три байта и называют это оптимизацией. Названия функций t, c, g, m просто таки говорят сами за себя.

Работа с document.all, причем весьма неэффективная. Тупо пробегается по всем DOM-элементам

В общем, неважно. На простеньком документе:
<div title="test tooltip">test tooltip</div>
<!--и еще 34 таких же дива, всего 35 штук-->

этот скрипт выдал мне 31.25 миллисекунд, 287 вызовов

То же самое с jQuery дало мне 62.5 миллисекунд, 1064 вызовов.

Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery


dmitriid.comGitHubLinkedIn
Re[11]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 12.08.07 11:37
Оценка:
M>Недавно было специально выделено время на очистку кода этого самого багтрекера. Не мудрствуя лукаво весь яваскрипт перевели на jQuery. Тот же код (по логике) неожиданно стал работаь во всех браузерах, заявленных на сайте jQuery Фирма сэкономила время на тестах, программисты сэкономили нервы. Все довольны

A если бы "неожиданно" не стал работать? Сколько лет вы бы ещё дожидались чужого дядю, который вам скрипт к опере привяжет? Я на самом деле рад, что jQuery вам там помог, раздражает то, что это объясняется невероятными способностями jQuery чудесного свойства, пусть бы они там и были. Я это вижу по-другому. Сначала вы набираете себе проектов по горло, затем разводите там свои зоопарки, с которыми не можете совладать, потом единый подход вырабатывать не хотите, к тому же ещё ошибки долго-долго поймать не получается... и в таком вот загнанном вспененном состоянии как-то само собой сразу тянет поэкономить время/деньги/нервы и тому подобное. В этом нет ничего плохого, вам было худо, вам дали таблетку, и вас отпустило. Только не надо всех поголовно считать больными и совать им в рот лекарство. Если кому-то вообще не нужна таблетка jQuery или она им нужна исключительно в наиболее тяжёлых случаях, то это и есть адекватный/оптимальный/точечный подход за который я и выступаю, в этом стиле и сам язык спроектирован. Если можешь, то сделай сам. А не можешь, то остаётся только верить в: "бросайте писать свой уродский "чистый javascript", идите в нашу церковь "другого чистого javascript-a", тут тепло и сухо" (цитата вымышлена).

AKS>>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


M>Не вижу. Последний конструктив бы в http://rsdn.ru/forum/message/2616848.1.aspx
Автор: Zeroglif
Дата: 10.08.07
и в http://rsdn.ru/forum/message/2617158.1.aspx
Автор: AKS.
Дата: 10.08.07
. Все остальное сводилось к "а ведь ручками в 10-30 строчек кода легче было" без единого аргумента


Если под конструктивом подразумевается то, что я буду тешить тебя кодом на каждый чих, то во-первых строках моего письма в этом было отказано. Да и потом смотри, я говорил о том, что не javascript плох и сложен, а где-то на уровне программистов проблема, в которой не каждый и признается. И опа, мои слова подтвердил один из собеседников (мало времени, много проектов и т.п.), спасибо ему за это. Я говорил, что чужую библиотеку нужно знать очень хорошо, иначе можно напороться, потому что это javascript, и опа, ты же сам это и подтвердил, показав своё незнание всего одной простейшей функции из либы, и объясняя мой пример цитатами из ECMAScript, да ещё и не к месту. Какие аргументы. Они сами собой рисуются, я не виноват.

AKS>>Кстати, насчет тултипа — чем плоха, к примеру Соуденовско-Шуркаевская классика? Почему люди изобретают "тяжеленный велосипед с рамой от jQuery"?


M>Глядя наискосок вижу в этом тултипе сразу минимум одну проблему:

M>
M>Array.prototype.in_array = ...
M>


M>Встроенные объекты не рекомендуется расширять, потому что нарушается работа с этими элементами (например, JavaScript “Associative Arrays” Considered Harmful)


Полностью с тобой согласен. Не с тем, что прототип нельзя расширять, наоборот, можно, для этого делегирование и вшито в javascript, чтоб нам было удобно, а согласен с тем, что даже "наискосок" сразу находятся проблемки. Где угодно. И в тултипе этом, и в jQuery, и тем более в плагинах к ней и т.д. и т.п. Любая либа, как и любой код на javascript местами "fragile", ты же сам это подтверждаешь.

M>Вторая проблема. Обожаю, когда экономят два-три байта и называют это оптимизацией. Названия функций t, c, g, m просто таки говорят сами за себя.


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

M>Работа с document.all, причем весьма неэффективная. Тупо пробегается по всем DOM-элементам


Вне всякого сомнения.

M>В общем, неважно. На простеньком документе:

M>
M><div title="test tooltip">test tooltip</div>
M><!--и еще 34 таких же дива, всего 35 штук-->
M>

M>этот скрипт выдал мне 31.25 миллисекунд, 287 вызовов

M>То же самое с jQuery дало мне 62.5 миллисекунд, 1064 вызовов.

M>Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery

Согласен, но я бы сказал так:

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

p.s. И кстати, вся эта ветка (за исключением моих тупейших постов, конечно) лично для меня необычайно конструктивна, я в некоторой степени скорректировал свою позицию в отношении javascript вообще и либ, в частности, это интересно.
Re[18]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 12.08.07 11:59
Оценка:
Здравствуйте, Mamut, Вы писали:

AKS>>

AKS>>a — функция
AKS>>b — не функция
AKS>>c — не функция

AKS>>Что и следовало ожидать. Почему a — функция? Читаем ECMA-262...


AKS>>Почему не протестирован этот ма-а-алюсенький кусочек кода? Нет времени и денег на тесты с одним alert'ом?


M>Протестировал в Firefox 2.0 под линуксом. Получил описанные мною результаты.


И там же в линухе нашёл этому точное объяснение в линуховском ECMASript. Ладно, проехали, не протестировал и бог с ним.

AKS>>
AKS>>alert([isFunction(a), isFunction(b), isFunction(c)]); // -> true, true, true!!!
AKS>>


AKS>>Причем в случае с регвыром спецификация здесь ни при чем! Уберите символ f из рега и результат выполнения isFunction(a) будет false...


M>Вывод? Ничего не стоит написать багрепорт http://dev.jquery.com/ticket/1480


Это не баг, это алгоритм такой, не сможет там Джон объять необъятное, как бы он не хотел, поэтому безоглядное использование функций не в русле общей работы в jQuery, а для себя отдельно требует их (функций) изучения, чтобы не напороться. Что и требовалось доказать. Если уж и отправлять туда что-то, то вопрос, почему изначально в этой функции не стоит проверка typeof, это весомая проверка для начала, а дальше уже по обстоятельствам...

M>Какие еще есть предложения по другим функциям?


У меня нет, jQuery закрыл, а вот AKS исследовать любит (подначиваю), делает это здорово, может чего и найдёт.

И у тебя ещё был вопрос про работу с классами, почему это кажется мне не оптимальным, достаточно представить себе частую ситуацию, где класс добавляется туда, где его раньше не было, просто посмотри, как несуществующий класс (значение), из типа в тип перелетая, шастает по разным функциям. Дело не во времени, а в алгоритме.
Re[19]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 13.08.07 05:00
Оценка:
Здравствуйте, Zeroglif, Вы писали:

Z>...а вот AKS исследовать любит (подначиваю)... может чего и найдёт...


Не-е-е, квалификации маловато, чтобы найти такие "дыры", какие видны Вам, как например в isFunction.
Re[11]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 13.08.07 05:07
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery


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

M>Какие еще есть предложения по другим функциям?


Это вроде лозунга: "Вступайте в ряды тестеров-добровольцев"? Думаю, что упомянутое здесь ранее одним из оппонентов коммьюнити прекрасно справится и без меня. Так что примите, пожалуйста, мой вежливый отказ.
Re[19]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 13.08.07 06:33
Оценка:
M>>Протестировал в Firefox 2.0 под линуксом. Получил описанные мною результаты.

Z>И там же в линухе нашёл этому точное объяснение в линуховском ECMASript. Ладно, проехали, не протестировал и бог с ним.


Ну дык. Увидел, что регэксп определяется, как функция, дай, думаю, посмотрю, что на этот случай стандарт говорит

M>>Вывод? Ничего не стоит написать багрепорт http://dev.jquery.com/ticket/1480


Z>Это не баг, это алгоритм такой, не сможет там Джон объять необъятное, как бы он не хотел,


На то и багтрекер есть Сейчас над jQuery не только Джон работает

M>>Какие еще есть предложения по другим функциям?


Z>У меня нет, jQuery закрыл, а вот AKS исследовать любит (подначиваю), делает это здорово, может чего и найдёт.


Z>И у тебя ещё был вопрос про работу с классами, почему это кажется мне не оптимальным, достаточно представить себе частую ситуацию, где класс добавляется туда, где его раньше не было, просто посмотри, как несуществующий класс (значение), из типа в тип перелетая, шастает по разным функциям. Дело не во времени, а в алгоритме.


Не понял


dmitriid.comGitHubLinkedIn
Re[12]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 13.08.07 06:50
Оценка:
M>>Недавно было специально выделено время на очистку кода этого самого багтрекера. Не мудрствуя лукаво весь яваскрипт перевели на jQuery. Тот же код (по логике) неожиданно стал работаь во всех браузерах, заявленных на сайте jQuery Фирма сэкономила время на тестах, программисты сэкономили нервы. Все довольны

Z>A если бы "неожиданно" не стал работать? Сколько лет вы бы ещё дожидались чужого дядю, который вам скрипт к опере привяжет?


Еще раз цитирую.

Из всего этого следуют Правила большого пальца:
1. Все, что можно купить, нужно покупать (cюда же входит подбор бесплатных компонентов, при их наличии)
2. Все, что нельзя купить, нужно аутсорсить
3. Нельзя аутсорсить "core" — то, за что тебе платят деньги.


По пункту 1:

1. Определиться с основными требованиями к решению. Как правило, происходит на этапе написания SRS, который, вообще говоря, не зависит от того, собственный будет велосипед или готовое решение.
2. Пойти в инет и выбрать некоторое количество решений-кандидатов.
Это делается при помощи Google; как правило более 4х часов на поиски отводить смысла нет. Иногда, в особо запущенных случаях (не удается подобрать хороший запрос для гугла) кидается вопрос в тематический форум(ы). Это удешевляет данный шаг, но делает его дольше (надо дать хотя бы неделю, чтобы завсегдатаи ответили)ю
3. Полученный на предыдущем шаге список просеивается на предмет получения двух-трех кандидатов, которые похожи на то, что надо. Как правило, на это достаточно 8 часов
4. Для отобранных финалистов достаются демы/триалы, и выполняется некоторый набор тестов для проверки п.1. Опять же, жедательно ограничить это дело максимум 8 часов на кандидата.
5. По результатам отбирается лучший вариант. Он и идет в проект — покупается необходимая лицензия и в бой.

Примечания:
— если на шаге 4 ни один из финалистов не выдержал испытания, то надо вернуться на шаг 3 и выбрать других.
— если на шаге 3 не удалось ничего найти, возвращаемся на шаг 2.
— если и здесь нас ждет облом, заключаем, что выхода нет и пишем свой велосипед.

В большинстве случаев, мы получаем готовый результат за одну рабочую неделю одного разработчика. Возможны, конечно, варианты:
1. Если ищется готовое решение для большой проблемы, то имеет смысл умножить оценки для этапа 4 на эмпирический коэффициент.
2. Если ищется какая-нибудь экзотика, то нужно увеличить оценки для этапа 2, т.к. гугл хорошо ищет только популярный контент.
3. В некоторых случаях имеет смысл не делить на шаги, а делать "поиск с возвратами": пытаться зайти как можно дальше с каждым из вариантов, возвращаясь назад в случае обнаружения нерешаемой проблемы. Симптомы того, что у вас и есть некоторый случай:
— не требуется выбрать самое лучшее решение. Достаточно удовлетворительного.
— рынок завален готовыми решениями, и анализ всего списка будет потерей времени.



Если бы не заработал jQuery, взяли бы mochikit, dojo или prototype. Не подошел бы ни один из них, то только тогда начали бы писать что-то свое.


Z>Я на самом деле рад, что jQuery вам там помог, раздражает то, что это объясняется невероятными способностями jQuery чудесного свойства, пусть бы они там и были.


Где я это объясняю "невероятными способностями jQuery чудесного свойства"?

Z>Я это вижу по-другому. Сначала вы набираете себе проектов по горло, затем разводите там свои зоопарки, с которыми не можете совладать, потом единый подход вырабатывать не хотите, к тому же ещё ошибки долго-долго поймать не получается... и в таком вот загнанном вспененном состоянии как-то само собой сразу тянет поэкономить время/деньги/нервы и тому подобное.


Добро пожаловать в реальный мир. Програмисту платят за выполненый проект. И почти никогда этот проект не включает в себя разработку чего-то стороннего (как таким является разработка собственного js-фреймворка или сведение в один кучи js-кода от различных программистов).

Z>В этом нет ничего плохого, вам было худо, вам дали таблетку, и вас отпустило. Только не надо всех поголовно считать больными и совать им в рот лекарство. Если кому-то вообще не нужна таблетка jQuery или она им нужна исключительно в наиболее тяжёлых случаях, то это и есть адекватный/оптимальный/точечный подход за который я и выступаю, в этом стиле и сам язык спроектирован. Если можешь, то сделай сам. А не можешь, то остаётся только верить в: "бросайте писать свой уродский "чистый javascript", идите в нашу церковь "другого чистого javascript-a", тут тепло и сухо" (цитата вымышлена).




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

AKS>>>Zeroglif предложил целую кучу различных вариантов развития этой темы в конструктивном ключе — выбирайте на свой вкус!


M>>Не вижу. Последний конструктив бы в http://rsdn.ru/forum/message/2616848.1.aspx
Автор: Zeroglif
Дата: 10.08.07
и в http://rsdn.ru/forum/message/2617158.1.aspx
Автор: AKS.
Дата: 10.08.07
. Все остальное сводилось к "а ведь ручками в 10-30 строчек кода легче было" без единого аргумента


Z>Если под конструктивом подразумевается то, что я буду тешить тебя кодом на каждый чих, то во-первых строках моего письма в этом было отказано.


Но именно это ты и предлагаешь. Все, что от тебя было услышано (кроме вопроса по isFunction) — это "а на JS это делается в 5-10 строчек и быстрее"

Z>Да и потом смотри, я говорил о том, что не javascript плох и сложен, а где-то на уровне программистов проблема, в которой не каждый и признается. И опа, мои слова подтвердил один из собеседников (мало времени, много проектов и т.п.), спасибо ему за это.


Это программерская реальность.

Z>Я говорил, что чужую библиотеку нужно знать очень хорошо, иначе можно напороться, потому что это javascript, и опа, ты же сам это и подтвердил, показав своё незнание всего одной простейшей функции из либы, и объясняя мой пример цитатами из ECMAScript, да ещё и не к месту. Какие аргументы. Они сами собой рисуются, я не виноват.


Ок. В том примере я был неправ, что и признал. На работу библиотеки это никак не влияет. Что дальше?

M>>Встроенные объекты не рекомендуется расширять, потому что нарушается работа с этими элементами (например, JavaScript “Associative Arrays” Considered Harmful)


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


Прототипы _встроенных_ объектов (типа Array) расширять не рекомендуется. По одной простой причине, что это нарушает работу с такими объектами.

Z>а согласен с тем, что даже "наискосок" сразу находятся проблемки. Где угодно. И в тултипе этом, и в jQuery, и тем более в плагинах к ней и т.д. и т.п. Любая либа, как и любой код на javascript местами "fragile", ты же сам это подтверждаешь.


Так чем же jQuery в этом плане отличается от самописной либы?

M>>Вторая проблема. Обожаю, когда экономят два-три байта и называют это оптимизацией. Названия функций t, c, g, m просто таки говорят сами за себя.


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


Это полностью отличается от пакнутой jQuery — на то она и пакнутая.

M>>В общем, неважно. На простеньком документе:

M>>
M>><div title="test tooltip">test tooltip</div>
M>><!--и еще 34 таких же дива, всего 35 штук-->
M>>

M>>этот скрипт выдал мне 31.25 миллисекунд, 287 вызовов

M>>То же самое с jQuery дало мне 62.5 миллисекунд, 1064 вызовов.

M>>Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery

Z>Согласен, но я бы сказал так:


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


Я и не противопоставляю jQuery ничему. Блин, взяли выдумали себе проблему Вся статья говорит о том, как легко, удобно и приятно работать с jQuery.

Z>p.s. И кстати, вся эта ветка (за исключением моих тупейших постов, конечно) лично для меня необычайно конструктивна, я в некоторой степени скорректировал свою позицию в отношении javascript вообще и либ, в частности, это интересно.


И в какую сторону?


dmitriid.comGitHubLinkedIn
Re[12]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 13.08.07 06:50
Оценка:
M>>Если мне надо будет использовать _только_ тултип на странице, я, быть может, возьму предложенный скрипт. Если мне понадобится хоть какая-то еще дополнительная функциональность, я возьму jQuery

AKS>Я спрашивал не об этом, ну да ладно. А вот если говорить о том, о чем подумали Вы, то я полностью с Вами согласен — если используется jQuery, то само собой разумеется, что тултип надо брать из той же "серии" (здравый смысл).




AKS>Вообще, если писать о jQuery, абстрагируясь от таких вещей, как "чистый javascript", то это очень и очень хороший продукт. Наверно можно охарактеризовать, как "профессиональный" (только я бы не хотел давать конкретных оценок — из-за этого возникают споры, порой бесконечные )...




M>>Какие еще есть предложения по другим функциям?


AKS>Это вроде лозунга: "Вступайте в ряды тестеров-добровольцев"? Думаю, что упомянутое здесь ранее одним из оппонентов коммьюнити прекрасно справится и без меня. Так что примите, пожалуйста, мой вежливый отказ.


Жалко


dmitriid.comGitHubLinkedIn
Re[13]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 13.08.07 08:06
Оценка:
Здравствуйте, Mamut, Вы писали:

Z>>p.s. И кстати, вся эта ветка (за исключением моих тупейших постов, конечно) лично для меня необычайно конструктивна, я в некоторой степени скорректировал свою позицию в отношении javascript вообще и либ, в частности, это интересно.


M>И в какую сторону?


Во все стороны:

— если либы помогают кому-то, значит они помогают, с этим сложно спорить;
— кроссбраузерные преимущества либ очень трудно опротестовать, это в их природе;
— либы не идеальны и сделаны из тех же досок, что и код дяди Васи;
— сообщество любителей либы, как правило, ведёт круговую оборону;
— сообщество любителей популярной либы кроме обороны идёт и в атаку;
— большинство окололибных туториалов и статей направлено на ньюбов, это выхолащивает javascript;
— вред, наносимый либами и псевдокодом развитию javascript-программирования, нивелируется развитием идей;
— код jQuery достаточно ровен, гораздо более javasript-овый чем prototype и приятно пахнет функциональным программированием;
— но своя либа всегда ценнее, правильнее, оптимальнее, и ваще эта просто жесть..., но тебе всё равно никто не поверит;
— бизнес, маркетинг и прикладное... что-то там — это очень-очень важно, а не знаешь — не лезь спорить...

Peace!
Re[14]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 13.08.07 10:44
Оценка:
M>>И в какую сторону?

Z>Во все стороны:


Три замечания

Z>- большинство окололибных туториалов и статей направлено на ньюбов, это выхолащивает javascript;

Z>- вред, наносимый либами и псевдокодом развитию javascript-программирования, нивелируется развитием идей;

То-то библиотеки типа jQuery, Ext и прочие появляются. Развитие javascript-программирования явно затормаживается Еще раз повторю — javascript-программирование — это не обязательно низкоуровневое программирование

Z>- код jQuery достаточно ровен, гораздо более javasript-овый чем prototype и приятно пахнет функциональным программированием;

Z>- но своя либа всегда ценнее, правильнее, оптимальнее, и ваще эта просто жесть..., но тебе всё равно никто не поверит;

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

Z>- бизнес, маркетинг и прикладное... что-то там — это очень-очень важно, а не знаешь — не лезь спорить...


Это очень важно. Дедлайны, техзадания и бизнес-пданы никто не отменял

Z>Peace!




dmitriid.comGitHubLinkedIn
Re[15]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 13.08.07 13:26
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Если ты нашел ошибки даже в такой популярной и используемой либе, как jQuery, многкратно оттестированной, активно развиваемой, и т.п., то что уж говорить о либе, круг пользователей которой ограничивается, ну, десятком человек


Так о том и речь, что либы (будь то jQuery или любой другой качественный продукт) были и остаются "ширпотребом". Одно дело сшить костюмчик под заказ у хорошего портного, другое дело заскочить в Лужники и взять уже готовое. Подходящая аналогия?

M>Еще раз повторю — javascript-программирование — это не обязательно низкоуровневое программирование.


То то и оно, что обязательное! В противном случае будет получаться нечто, вызывающее "смех сквозь слезы" у "низкоуровневого писателя". Вот пример, за которым ходить далеко не стал, а взял то, что запомнилось из jquery.tooltip (Вы ранее давали ссылку):


    function viewport() {
        return {
            x: $(window).scrollLeft(),
            y: $(window).scrollTop(),
            cx: $(window).width(),
            cy: $(window).height()
        };
    }


Давайте сыграем в игру — угадайте с трех раз, где "плакать и смеяться".
Re[16]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 13.08.07 13:59
Оценка:
M>>Если ты нашел ошибки даже в такой популярной и используемой либе, как jQuery, многкратно оттестированной, активно развиваемой, и т.п., то что уж говорить о либе, круг пользователей которой ограничивается, ну, десятком человек

AKS>Так о том и речь, что либы (будь то jQuery или любой другой качественный продукт) были и остаются "ширпотребом". Одно дело сшить костюмчик под заказ у хорошего портного, другое дело заскочить в Лужники и взять уже готовое. Подходящая аналогия?


Не совсем Я могу похожую дать: Одно дело сшить костюмчик у хорошего портного, а другое — купить лохмотья у двоечника из швейного училища

M>>Еще раз повторю — javascript-программирование — это не обязательно низкоуровневое программирование.


AKS>То то и оно, что обязательное!


Кто сказал?

AKS>В противном случае будет получаться нечто, вызывающее "смех сквозь слезы" у "низкоуровневого писателя". Вот пример, за которым ходить далеко не стал, а взял то, что запомнилось из jquery.tooltip (Вы ранее давали ссылку):


AKS>
AKS>    function viewport() {
AKS>        return {
AKS>            x: $(window).scrollLeft(),
AKS>            y: $(window).scrollTop(),
AKS>            cx: $(window).width(),
AKS>            cy: $(window).height()
AKS>        };
AKS>    }
AKS>


AKS>Давайте сыграем в игру — угадайте с трех раз, где "плакать и смеяться".


Ну, я бы, как минимум, "закэшировал" бы $(window):
function viewport() {
    var w = $(window);
    return {
        x : w.scrollLeft(),
        y : w.scrollTop(),
        cx: w.width(),
        cy: w.height()
    };
}


В коде dimensions plugin смотрю, например, метод height:
    height: function() {
        if (!this[0]) error();
        if ( this[0] == window )
            if ( ($.browser.mozilla || $.browser.opera) && $(document).width() > self.innerWidth)
                // mozilla and opera both return width + scrollbar width
                return self.innerHeight - getScrollbarWidth();
            else
                return self.innerHeight ||
                    $.boxModel && document.documentElement.clientHeight || 
                    document.body.clientHeight;
        
        if ( this[0] == document )
            return Math.max( document.body.scrollHeight, document.body.offsetHeight );
        
        return height.apply(this, arguments);
    },


Если честно, то положусь на этот код Как-то лень выяснять, что "mozilla and opera both return width + scrollbar width" А tooltip несложно и под себя исправить

ЗЫ. Не понравится этот тултип, возьмем другой. В крайнем случае напишем свой


dmitriid.comGitHubLinkedIn
Re[17]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 13.08.07 14:39
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Ну, я бы, как минимум, "закэшировал" бы $(window)


Вот и я бы так же сделал (даже переменную бы также назвал ). Вот оно — "низкоуровневое"...

M>Не понравится этот тултип, возьмем другой. В крайнем случае напишем свой


Вот оно опять — "низкоуровневое". Ну никуда без него, оно — во главе угла!

M>Одно дело сшить костюмчик у хорошего портного, а другое — купить лохмотья у двоечника из швейного училища.


Не-а, под себя уже "перекроили". У меня сравнение такое. Зимой поправился — одни брючки сшили. Летом по пляжу за девчонками побегал, исхудал весь — другие брючки заказал. Другое дело, если пришел на рынок. Взял хоть и на выбор, да не то — здесь подогнем, там само собой потом вытянется (ну прям, как в истории с тултипом ).

А вообще мы тут с Вами поем, кто на что горазд и каждый о своем. Со стороны, наверно, довольно забавно выглядит...
Re[18]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 13.08.07 15:20
Оценка:
M>>Ну, я бы, как минимум, "закэшировал" бы $(window)
AKS>Вот и я бы так же сделал (даже переменную бы также назвал ). Вот оно — "низкоуровневое"...

Я под низкоуровневым в этой ветке понимаю "в энный раз писать кроссбраузерный код". А тут элементарная логика Причем даже в jQuery Best Practices (грубо говоря) упоминается. То есть во многих туториалах и в большинстве кода Причем эта "низкоуровневость" собственно к Яваскрипту никакого отношения не имеет

M>>Не понравится этот тултип, возьмем другой. В крайнем случае напишем свой

AKS>Вот оно опять — "низкоуровневое". Ну никуда без него, оно — во главе угла!

Ключевое слово там — в крайнем случае

M>>Одно дело сшить костюмчик у хорошего портного, а другое — купить лохмотья у двоечника из швейного училища.


AKS>Не-а, под себя уже "перекроили". У меня сравнение такое. Зимой поправился — одни брючки сшили. Летом по пляжу за девчонками побегал, исхудал весь — другие брючки заказал. Другое дело, если пришел на рынок. Взял хоть и на выбор, да не то — здесь подогнем, там само собой потом вытянется (ну прям, как в истории с тултипом ).




Ну а у меня другое. Взял шорты, а они — без лямок для ремня. Только две из необходимых пяти пришиты (реальный случай, кстати ). Пока портному отдал, туда-сюда, две недели без шорт проходил.

Потом на шорты хорошей фирмы наткнулся — до сих пор ношу, нахваливаю

AKS>А вообще мы тут с Вами поем, кто на что горазд и каждый о своем. Со стороны, наверно, довольно забавно выглядит...


А то

Истина, она как всегда — где-то посередине


dmitriid.comGitHubLinkedIn
Re[19]: jQuery – Javascript нового поколения
От: Zeroglif  
Дата: 13.08.07 15:35
Оценка: :)
Фишка в том, что про покупку брюк, шорт, лохмотьев, лямок и проч. разговаривали сейчас двое портных. Жжоте.
Re[19]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 13.08.07 15:37
Оценка: :)
Здравствуйте, Mamut, Вы писали:


M>Я под низкоуровневым в этой ветке понимаю "в энный раз писать кроссбраузерный код".


А-а-а, понятно.

M>Ну а у меня другое. Взял шорты, а они — без лямок для ремня. Только две из необходимых пяти пришиты (реальный случай, кстати ). Пока портному отдал, туда-сюда, две недели без шорт проходил.


M>Потом на шорты хорошей фирмы наткнулся — до сих пор ношу, нахваливаю


А я бы две недели не ждал — в тот же день эти шорты уже бы носил. Вот не поверите — я сам портной! Не аттестованный, правда, но тем не менее шорты себе сошью, не говоря уж про лямки для ремня (шлевки, кстати, называются ). Ну надо же, а? Как все одно к одному в жизни-то...
Re[20]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 13.08.07 15:38
Оценка:
Здравствуйте, Zeroglif, Вы писали:

Z>Фишка в том, что про покупку брюк, шорт, лохмотьев, лямок и проч. разговаривали сейчас двое портных. Жжоте.


Ну ничего себе!!! Вот это проницательность!!!
Re[20]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 14.08.07 06:48
Оценка:
M>>Потом на шорты хорошей фирмы наткнулся — до сих пор ношу, нахваливаю

AKS>А я бы две недели не ждал — в тот же день эти шорты уже бы носил. Вот не поверите — я сам портной! Не аттестованный, правда, но тем не менее шорты себе сошью, не говоря уж про лямки для ремня (шлевки, кстати, называются ). Ну надо же, а? Как все одно к одному в жизни-то...




Ну это я так, в общем случае. В этом плане мне нравится вот это высказывание:

I get depressed when I say to a programmer, "I want it to slide down, but
not evenly, I want it to bounce a little at the end, and also fade in during
the slide." The reason I get depressed is that for YEARS the answer was "We
don't have time, we will have to get to that later." Now, I do it myself
and they are happy because they could focus on more pressing functional
issues.

Меня вгоняет в уныние, когда я говорю програмисту: "Я хочу, чтобы элемент спустился вниз, но не просто спустился, а подскочил немного в самом конце, да ещ бы в момент спуска он бы медленно появлялся." Причина уныния в том, что ГОДАМИ ответ был: "У нас нет времени, мы сделаем это позже". Сейчас я это могу сделать сам и они рады, потому что они могут сконцентрироваться на более важных функциональных задачах


Не все портные одинаковы и не все портные свободны.


dmitriid.comGitHubLinkedIn
Re[21]: jQuery – Javascript нового поколения
От: AKS.  
Дата: 14.08.07 10:41
Оценка:
Здравствуйте, Mamut, Вы писали:

M>В этом плане мне нравится вот это высказывание:


Мне это высказывание тоже пришлось по душе своей искренностью: "Предупреждаю, нижеследующее написано НЕ-программистом!"...
Re[22]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 14.08.07 11:02
Оценка:
M>>В этом плане мне нравится вот это высказывание:

AKS>Мне это высказывание тоже пришлось по душе своей искренностью: "Предупреждаю, нижеследующее написано НЕ-программистом!"...


Не-программисты тоже люди


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 04.10.07 07:29
Оценка:
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>Статья:

DMD>jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


Что можешь сказать по поводу использования jQuery в коммерческих проектах? Каковы лицензионные условия?
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 04.10.07 08:17
Оценка:
A>Что можешь сказать по поводу использования jQuery в коммерческих проектах? Каковы лицензионные условия?


http://docs.jquery.com/Licensing

На выбор: MIT или GPL

MIT вообще разрешает все: http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt
1       Copyright (c) 2007 John Resig, http://jquery.com/
2    
3    Permission is hereby granted, free of charge, to any person obtaining
4    a copy of this software and associated documentation files (the
5    "Software"), to deal in the Software without restriction, including
6    without limitation the rights to use, copy, modify, merge, publish,
7    distribute, sublicense, and/or sell copies of the Software, and to
8    permit persons to whom the Software is furnished to do so, subject to
9    the following conditions:
10    
11    The above copyright notice and this permission notice shall be
12    included in all copies or substantial portions of the Software.
13    
14    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18    LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19    OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20    WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: anonymous Россия http://denis.ibaev.name/
Дата: 04.10.07 08:44
Оценка:
Здравствуйте, Mamut, Вы писали:

A>>Что можешь сказать по поводу использования jQuery в коммерческих проектах? Каковы лицензионные условия?

M>http://docs.jquery.com/Licensing
M>На выбор: MIT или GPL
M>MIT вообще разрешает все: http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt

GPL не подойдёт. Понятно, что MIT всё разрешает, но накладывает ли эта лицензия какие-то обязательства?
Re[4]: jQuery – Javascript нового поколения
От: Daevaorn Россия  
Дата: 04.10.07 08:52
Оценка: :))) :)
Здравствуйте, anonymous, Вы писали:

A>GPL не подойдёт. Понятно, что MIT всё разрешает, но накладывает ли эта лицензия какие-то обязательства?

Ну читать её она точно не запрещает
Re[4]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 04.10.07 15:04
Оценка: 12 (1)
A>GPL не подойдёт. Понятно, что MIT всё разрешает, но накладывает ли эта лицензия какие-то обязательства?

Никаких. Только в самом jquery должна присутствовать лицензия. На весь остальной продукт эта лицензия не распространяется


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: taliban  
Дата: 04.10.07 21:16
Оценка:
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

DMD>Статья:

DMD>jQuery – Javascript нового поколения
Автор(ы): Dmitrii 'Mamut' Dimandt
Дата: 11.04.2002
В статье описана библиотека jQuery. Разобраны ключевые моменты работы с библиотекой — нахождение элементов на странице, манипуляция объектной моделью документа, базовая анимация, работа с технологией AJAX. В статье приведено большое количество примеров работающего кода.


хорошая статья, удивило только первое сравнение с прототайпом ... вот пример:
$$("table").each(function(table){
  Selector.findChildElements(table, ["tr"])
    .findAll(function(row,i){ return i % 2 == 1; })
    .invoke("addClassName", "odd");
});


можно написать вот так:
$$('tr').each(function(row){
row.className = ['', 'ogg'][row.rowIndex];
})


Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 05.10.07 06:24
Оценка:
T>хорошая статья, удивило только первое сравнение с прототайпом ... вот пример:

На момент написания у прототайпа такого еще не было, емнип


dmitriid.comGitHubLinkedIn
Re: jQuery – Javascript нового поколения
От: Powerz Россия https://zagosk.in
Дата: 03.04.08 09:48
Оценка: 28 (1)
Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:

В таблице селекторов форм не хватает :file и :hidden. Возможно в более ранних версиях jQuery их не было и по этому в статье в соответствующем списке селекторов их нет.
https://zagosk.in
Re[2]: jQuery – Javascript нового поколения
От: Mamut Швеция http://dmitriid.com
Дата: 03.04.08 10:12
Оценка: +1
Здравствуйте, Powerz, Вы писали:

P>Здравствуйте, Dmitrii 'Mamut' Dimandt, Вы писали:


P>В таблице селекторов форм не хватает :file и :hidden. Возможно в более ранних версиях jQuery их не было и по этому в статье в соответствующем списке селекторов их нет.


Спасибо. Я надеюсь ближе к концу апреля сесть и обновить статью. Очень надеюсь, что время будет
... << RSDN@Home 1.2.0 alpha 4 rev. 1064>>


dmitriid.comGitHubLinkedIn
Re[3]: jQuery – Javascript нового поколения
От: Powerz Россия https://zagosk.in
Дата: 03.04.08 10:34
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Спасибо. Я надеюсь ближе к концу апреля сесть и обновить статью. Очень надеюсь, что время будет



Было бы здорово!
... << RSDN@Home 1.2.0 alpha rev. 784>>
https://zagosk.in
Re[4]: jQuery – Javascript нового поколения
От: Аноним  
Дата: 16.07.08 22:25
Оценка: -2
Еле прочитал )) Зерогрифу как всегда респект, пусть и за дела годовалой давности.
Пипец программисты. Столько ляпов, из последнего -- ссылка на статью (http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/) где объясняется почему использование Array в качестве хеша не корректно -- потому что его прототип может быть расширен как и прототип RegExp'а или String'а или любого другого нативного объекта кроме object Object. Потому как это естественный способ расширения функциональности языка, для этого прототипы и доступны для модификации. А "программист" делает вывод, что не стоит расширять Array, видимо потому как пишет в духе приведенного в начале статьи некорректного примера:

var associative_array = new Array();
associative_array["one"] = "Lorem";
associative_array["two"] = "Ipsum";
associative_array["three"] = "dolor";
for (i in associative_array) { alert(i) };

Продавайте лучче шорты (на рынке)
Нет тут акка и влом региться. Денис.
Re[7]: jQuery – Javascript нового поколения
От: Аноним  
Дата: 09.05.09 22:06
Оценка:
Огромное спасибо автору статьи, именно она сподвигла меня начинать изучение jQuery
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.