Подключаем/подгружаем jQuery-плагины через html-class'ы. Минусы?
Всех с Новым годом! =)
Сам больше серверный человек, клиентскую сторону не особо люблю, в основном из-за кроссбраузерности. Поэтому особо не знаю всех тонкостей работы с html, css, js, jquery и т.д.
Хотел тут уточнить один вопрос:
Допустим у нас только один js-скрипт, который знает ключевые html-классы (addJsMap, addJsConfirm и т.д.). Через цикл проходим по всем классам и ищем их в текущей html-странице, если html-класс найден, то подргужается по необходимости jQuery-плагин и запускается какой-то метод.
Какие минусы в таком подходе? Очень давно видел такие статьи, но не вижу чтоб сегодня кто-то использовал подобное. Из основных минусов, так как это если скорость интернета маленькая, то плагины подгружаются намного позже, чем если их вставить в head-тэг. А еще какие? Может есть похожие статьи?
В итоге хотел бы получить чтоб html не содержало js-скриптов. Только описывало работу через какие-то атрибуты тэгов.
Ну так как вы больше серверный человек, можно же в нужный момент подключать js через php!
Например подключить js, если отрабатывает какое-то из условий вывода!
Вообще идея интересная, но вряд ли реализуемая. В большинстве случаев при инициализации плагина необходимо еще указывать какие-то опции и обработчики событий, т.е. не просто $('.js-validate-form').validator(); но и $('.js-validate-form').validator({ userName: { required: true; maxlength: 100 } ... }) и так далее. Конечно, можно использовать атрибуты тегов (в случае, если это предусмотрено плагином). Только намного проще весь JavaScript (с подключением нужных плагинов, с обработчиками и т.д.) из HTML файла вынести в отдельный JS файл, который и подключать в HTML. Собственно как это и рекомендуется делать. И если его подключать в , то все плагины загрузятся и (возможно) инициализируются еще до отображения страницы.
кликаем а то и кликать не надо, посредством php получаем кусок (или весь новый или старый) JavaScript, как оно там работает фиг знает когда его даже не видно....
Лучше, конечно же, использовать не классы в таком случае а data-атрибуты.
Классов может быть много и в случае рефакторинга есть шанс потерять необходимый для js.
Также посмотрите в сторону Require.js