Wordpress: один main.js файл для ajax и общих скриптов?
Собираю проект на wordpress с помощью gulp+webpack, на выходе у меня для css и js по 1 файлу.
Для js я сделал всего 1 файл, зарегистрировал его в аяксе и в нем запрусы аякса и общий функционал сайта. В самом source конечно у меня папки, файлы и все подлючается на выход в 1 файл.
Так вот, то что один js файл, отвечает за аякс запросы ( подключенный с помощью wp_localize_script ) и вместо того чтобы подключать еще 1 файл с общими скриптами для темы я оставляю этот файл и в него добавляю этот функционал. Подскажите это плохо или нормально? Я не смог инфы найти по этому поводу, но сам я проблем не вижу в этом, хотя и есть чувство такое, что нужно прошерстить этот вопрос.
Если сайт делается под протокол HTTP/1.1, тогда конкатенация скриптов и стилей в бандлы – это нормально и правильно.
Если сайт делается под протокол HTTP/2, тогда конкатенация файлов является антипаттерном и делать ее не нужно. По крайней мере в один файл, разбивайте на логичные компоненты / сборки.
ух) не понял про "По крайней мере в один файл, разбивайте на логичные компоненты / сборки." Файл ненужно тогда минифицировать и как-то указывать в этом файле к каждой части скрипта, кто за что отвечает?
Минифицировать надо. Минификация это когда все одну строчку, без пробелов и все такое. Машине пофиг, а файл меньше. Минифицировать независимо от протокола, всегда.
Конкатенировать для HTTP/2 не надо. Конкатенация - это объединение нескольких файлов в один. Возникла эта практика из-за того, что по протоколу HTTP/1.1 браузер открывает только несколько соединений с сервером, и если файлов много, то они качаются по очереди, замедляя таким образом загрузку. По протоколу HTTP/2 открывается одно общее соединение, по которому все файлы льются потоками, поэтому склеивать их в один не надо.
И как следствие, если файлы клеить уже не надо, то получаем выигрыш - можем грузить на странице только то, что нужно, и ничего лишнего. Например, зачем загружать (и заставлять браузер парсить) скрипт слайдера на всех страницах сайта, если он нужен только на главной?