Почему могут не работать js assets или как не доставить проблем пользователям своего js-плагина

Недавно разбирался, почему на сайте не работает свежеподключенная библиотека Assets.

Разобрался)

В проекте имеется довольно много файлов ресурсов (css, js), на среднюю страницу с ресурсами (и картинками в том числе) приходится более 60 запросов.

Было решено объединять css и js для ускорения загрузки и разгрузки сервера.

Я нашел библиотеку для CI Codeigniter Assets и быстро ее прикрутил к проекту.

После успешного запуска библиотека сгенерировала временные css и js файлы в папке assets, и подключила их к странице.

И весь js код перестал работать.

Это немного сбивало с толку. Весь код до этого был рабочим, проверенным месяцами работы. А тут начали появлятся совершенно неожиданные ошибки. Я попытался выключить сжатие, но толку это не дало.

Тогда я внимательно изучил сгенерированный js файл и в месте, куда указывал firebug обнаружил такой вот код:

})(jQuery)/*

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

Дело в том, что разделителем команд в javascript является как перенос строки, так и точка с запятой. Когда плагины находились в отдельных файлах, забытая точка с запятой после (jQuery) ничего не значила. Но объединенные в один файл, плагины начинали конфликтовать.

Вывод прост: если вы пишите свое дополнение для javascript/jquery, всегда закрывайте последнюю функцию точкой с запятой чтобы облегчить жизнь пользователям вашего плагина.

...})(jQuery); // для jQuery
function(...); // для js

 

Полезно(0)Бесполезно(0)
Комментарии закрыты.