Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2012, 23:22
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

unsupported features
Не секрет, что jQuery изначально нацелен на упрощение работы с DOM.
Но некоторые его методы из утилит, могут применяться и для обычных объектов.
Например, можно создать jQuery-объект из любого объекта, а не только из куску DOM, а потом повесить на него обработчик события, в после вызвать само событие.
Если копнуть чуть глубже, то обработчики событий для обоих типов объектов сохраняются через jQuery-вский механизм кэша - $.data, который можно применять для обоих типов объектов - только храниться будем чуточку по-разному.
И метод jQuery.unique может принимать как массивы DOM-элементов, так и просто массивы чего угодно.

Пока вроде все классно, но дальше начинается самое интересное.
Все эти утилиты(из ядра заметьте) на самом деле официально не поддерживаются.

Метод jQuery.unique хотя по факту работает с любыми массивами любых объектов, но официально работает только с массивами DOM-объектов.
Баги при работе с любыми другими типами объектов заворачиваются по wontfix, хотя ошибка более чем очевидна, и легко исправляется

Методы из серии $.data могут работать с любыми объектами(и таки даже в коде расписана соответствующая логика.
Но кейсы опять-таки заворачиваются, несмотря на опять-таки копеечный фикс.

Что вы думаете по этому поводу?

По-моему странно сделать функциональность на 99% для "нецелевой" платформы, а потом не развивать ее, дескать она unsopported
Ответить с цитированием
  #2 (permalink)  
Старый 14.10.2012, 23:31
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Gvozd,
Может быть послать им pull request, если вы знаете о чём там речь? Ссылки предоставленные пока не смотрел, но я так полагаю там просто баг репорты, а не патчи.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 14.10.2012, 23:34
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Gvozd
По-моему странно сделать функциональность на 99% для "нецелевой" платформы, а потом не развивать ее, дескать она unsopported
нет ничего странного - её развивает большое кол-во человек.
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2012, 23:39
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Nekromancer
Может быть послать им pull request, если вы знаете о чём там речь?
Видимо так и сделаю, но чуть позже.
Сообщение от Nekromancer
Ссылки предоставленные пока не смотрел, но я так полагаю там просто баг репорты, а не патчи.
Одна ссылка на мой последний репорт, и он таки без патча.
Вторая ссылка на документацию о jQuery.unique, где четко говорится что он "не предназначен" для работы с любыми не-DOM массивами
Кейс по нему я писал, и весьма подробно, но к сожалению анонимно, и теперь не могу его найти(возможно что его и удалили, а может просто не повезло с поиском). Зато все другие кейсы про работу не с DOM-массивами заворачивались именно по wontfix
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2012, 23:41
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от melky
нет ничего странного - её развивает большое кол-во человек.
То есть проблема в разногласиях внутри группы разработчиков?
В принципе я рассматривал это как возможную причину
Ответить с цитированием
  #6 (permalink)  
Старый 14.10.2012, 23:49
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Gvozd,
Очень часто во всевозможных проектах на гитхабе заворачивают патчи только потому, что кто слышал, что где то может не работать. Был у меня такой случай. Потом через эН времени, когда кто то другой послал такой же патч, его приняли.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #7 (permalink)  
Старый 15.10.2012, 00:17
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Nekromancer,
Ок, буду иметь в виду.
На следующей неделе пошлю пул-реквесты
Если их отклонят, оформлю код тут, чтобы кто-то другой заинтересованный также мог послать реквест
Ответить с цитированием
  #8 (permalink)  
Старый 20.10.2012, 22:08
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сегодня предложил им пул-реквест ( https://github.com/jquery/jquery/pull/1001/files)
Отклонили все по той же причине, плюс придрались к стилю кода.
Учитывая что в самом коде исправлены всего две строки, и там я постарался придержаться стиля подсмотренного в окружающем коде, то скорее всего проблема в стиле кода в тестах.
Ответить с цитированием
  #9 (permalink)  
Старый 21.10.2012, 12:56
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Nekromancer,
Вот только сейчас посмотрел тот тикет. Раз они такие принципиальные, сделай йорк с их проекта, там делай нужные фикс ы и потом распространяй/ используй его. Кстати, а зачем добавлять этот кеш в prototype?
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #10 (permalink)  
Старый 21.10.2012, 20:02
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Сообщение от Nekromancer
и потом распространяй/ используй его.
Распространять особого смысла не вижу, ибо случай довольно специфичный.
Для собственного использования проще в поддержании выглядит фикс через оборачивание извне нужных методов - фикс навсегда, без необходимости пересборки, и для его работы не нужен человек умеющий пересобирать jQuery. Но это тема отдельного обсуждения внутри команды.
Сообщение от Nekromancer
Кстати, а зачем добавлять этот кеш в prototype?
Есть набор объектов, некоторые свойства которых реализованы в виде гетеров/сетеров, а реальные значения хранятся в $.data объекта.
Это поведение свойств объектов задается в их конструкторе, а в их гетерах/сетерах содержится дополнительная внешняя логика.

Так вот если использовать объект с гетером/сетером в качестве прототипа для других объектов, то в них this будет указывать на конечный объект, а не на прототип, и это нормально.
А если использовать $.data(this), то в случае наличия у прототипа своего кэша, и отсутствия у целевого объекта, то кэщ возьмется от прототипа и будет общим.

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

Изобретать отдельную библиотеку для механизма событий у таких объектов , или копипастить jQuery-вскую, не кажется хорошей идеей
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск