Объединять и минимизировать зависимости для файлов JavaScript, поставленных в очередь

8

Я загружаю файл JavaScript, используя wp_enqueue_scriptв моей теме. Однако наряду с этим я также загружаю несколько файлов jQuery в качестве зависимостей для сценария в очереди (который уже был объединен и минимизирован Grunt). Вот мой код:

add_action('wp_enqueue_scripts', function() {
    wp_enqueue_script( 'customscripts', get_template_directory_uri() . '/assets/js/main.min.js', array('jquery', 'jquery-form', 'json2', 'jquery-ui-autocomplete'), NULL, true );
});

Для массива зависимостей, как бы я пошел о конкатенации и минимизации этих зависимостей jQuery? Я пытаюсь, чтобы мой сайт загружался как можно быстрее, и чем меньше JS-файлов должно загружаться, тем лучше. Также, если бы можно было заставить их загружаться асинхронно (используя asyncсвойство для <script>тегов), это был бы туз.

Я бы предпочел сделать это без использования плагина, но я буду использовать плагин в случае необходимости.

Спасибо за любую помощь :)

Том Окли
источник
3
Сторонние файлы javascript должны быть зарегистрированы / помещены в плагин в том виде, в каком они есть; не объединены, не изменены или не имеют другого имени. Таким образом, если существует несколько плагинов / тем, которые используют один и тот же сторонний js, Wordpress не будет загружать несколько экземпляров одного и того же кода. Чтобы воспользоваться преимуществами этого управления и конкатенации, конкатенация должна выполняться на лету в сочетании с системой кэширования, чтобы избежать объединения файлов для каждого посещения. Я думаю, что эта работа слишком много для ответа здесь. Посмотрите на W3 Total Cache; этот плагин объединяет, минимизирует, кэширует результат и загружает асинхронные js-файлы.
Cybmeta
Как говорит @cybmeta, W3 Total Cache выполняет свою работу, но будьте осторожны с конкатенацией js-файлов. Некоторые сценарии не готовы быть «вместе» в одних и тех же файлах. Но расслабьтесь, изменения W3 Total Cache все обратимы.
Рангель Р. Морайс
эй, спасибо за ответ, W3 Total Cache работает довольно хорошо для объединения и т. д., спасибо за предложение (и @cybmeta) :)
Том Оукли,
эй, спасибо за ответ и извините, я забыл ответить. W3 Total Cache сейчас отлично работает, и ваше объяснение того, почему WordPress не делает этого, имеет смысл. Спасибо!
Том Окли,
1
Этот плагин также хорош, если по какой-то причине вы не хотите или нуждаетесь в W3 Total cache wordpress.org/plugins/autoptimize
NickFMC

Ответы:

1

W3 Total Cache предлагает минимизацию JS / CSS. Я не знаком с процессом, который они используют, но если вы хотите избежать использования плагина, вы можете взглянуть на их исходный код, как они справляются с этим.

Эрик Холмс
источник