Задать вопрос
2ball
@2ball
Хардкор кодер

Yii2 + Twig. Нужно ли использовать AssetBundle?

Всем доброго. Расковырял я этот чудо фреймворк. Все грамотно, удобно и быстро. Поднял первый сайт и понял, что юзать кастомный подход с php шаблонами не комильфо. Верстальщику тяжко, глаз режет и т.д.
Прикрутил Twig, Bower и начал рендерить все это добро. И уперся в AssetsBundle. C одной стороны это очень удобно мне, как back-end разработчику, с другой каждый раз дергаться потому что front-end требует подключить слайдер или еще что-либо довольно накладно. Гораздо проще отдать на откуп свободную вставку скриптов / стилей прямо в Twig шаблоны.

В связи с этим возник вопрос. Какой подход актуален с точки зрения Best Practice в Yii2?
  • Вопрос задан
  • 1988 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@LAV45
namespace frontend\assets;

class AppAsset extends AssetBundle
{
    public $sourcePath = '@frontend/resource';

    public $css = [
        'css/site.css',
    ];

    public $depends = [
        'yii\web\JqueryAsset',
    ];
}

namespace frontend\widgets\FlexSlider;

class SliderAsset extends AssetBundle
{
    public $sourcePath = '@vendor/bower/flexslider';

    public $css = [
//        'flexslider.css'
    ];

    public $js = [
        'jquery.flexslider.js'
    ];

    public $depends = [
        'frontend\assets\AppAsset',
        'yii\web\JqueryAsset',
    ];
}


Незачем все css и js скрипты пихать в один AssetBundle
В данном примере AppAsset это базовый стиль при регистрации которого на странице будет добавлен site.css и jQuery, а скрипты SliderAsset будут подключены сразу после скриптов AppAsset.
И ничего страшного если вы будете вызывать на странице сразу несколько AssetBundle, js и css скрипты будут добавлены только один раз. В $depends описываем что может понадобится для работы конкретного AssetBundle. Например для SliderAsset нужен JqueryAsset и стили которые описаны в AppAsset.

Более подробно можно глянуть тут https://github.com/yiisoft/yii2/blob/master/docs/g...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы