debounce и bind могут применяться не только для обработчиков событий, поэтому делать debounceBind было бы странным. debounceBind может быть надстройкой над debounce.
А что у вас именно не получилось с $.ajax.success?
Не то чтобы прохождение по тэгу сильно дорого, но как-то оно смущает. Тем более ничего конкретно оно не дает. Потому что на продакшене основной функционал пакуется в один файл, и ссылаться по имени начального js там будет сложно. Лучше уж registerLoaded.
Не нравится $('script[src]') — проход по всему дереву. Да и не дает этот метод гарантии — допустим, в подключаемом в head скрипте 1.js стоит вызов $.useScript('2.js') напрямую и после этого в head идет подключение 2.js. В итоге, все равно 2 запроса за одним и тем же уйдет.
Надо еще покопать и подумать в этом направлении.
Спасибо, буду думать. Мне кажется только пункт 3 немного лишний. Лучше в своем приложении сделать какой-нибудь NAMESPACE.useModule(), где уже будет прописано откуда и что брать. А $.loadScript все-таки ф-ия немного более низкого уровня.
Я понимаю как это работает, я не понимаю зачем это так сделано. Это должно быть как минимум опциональным, иначе каждый раз одно и тоже будет скачиваться. И чаще на продакшене все-таки должно одно и тоже отдаваться.
Одна из причин перехода на новые версии, как вы сами заметили, — это увеличение производительности в новых версиях. Другая — то, что там обычно появляется новых функционал (обычно востребованный). А можно увидеть где-нибудь тесты, где Sizzle оказывается быстрее в 3 раза чем он же, обернутый jQuery? Да и вообще мне кажется, что если в вашем приложении критична скорость селекторов, то надо подумать об оптимизации использования селекторов, а не увеличения их производительности.
Не понял, если js проекта по размеру больше, чем размер jQuery, то его (jQuery) нужно рефакторить и выбрасывать все лишнее? Мне кажется это более чем странно. Как мне думается, чем больше проект, тем наоборот, все больше и больше бонусов начинаешь получать от использования jQuery.
И с выходом новой версии jQuery опять рефакторить и выбрасывать лишнее из него?
Обычно, jQuery все-таки нужен не для того чтобы загрузить 100Кб по требованию. Здесь предлагается решение, когда jQuery уже используется на проекте, но есть необходимость в ленивой загрузке части функционала.
Что странного в том, чтобы подгружать, допустим, 100 Кб какого-нибудь функционала только тогда, когда он действительно понадобится на странице (учитывая, что он может и не понадобится)?
А что у вас именно не получилось с $.ajax.success?
$.useS
cript.registerLoaded
Не то чтобы прохождение по тэгу сильно дорого, но как-то оно смущает. Тем более ничего конкретно оно не дает. Потому что на продакшене основной функционал пакуется в один файл, и ссылаться по имени начального js там будет сложно. Лучше уж registerLoaded.
$('scrip
t[src]')
— проход по всему дереву. Да и не дает этот метод гарантии — допустим, в подключаемом в head скрипте 1.js стоит вызов$.useS
cript('2.js')
напрямую и после этого в head идет подключение 2.js. В итоге, все равно 2 запроса за одним и тем же уйдет.Надо еще покопать и подумать в этом направлении.
$.loadS
cript
в$.useS
cript
и сделал поддержку массива урлов. Остальное под вопросом.NAMESPACE.useModule()
, где уже будет прописано откуда и что брать. А$.loadS
cript
все-таки ф-ия немного более низкого уровня.И с выходом новой версии jQuery опять рефакторить и выбрасывать лишнее из него?