Новый модуль ресурсов для Livestreet framework

Полностью новый переписанный модуль ресурсов ModuleAsset для фреймворка. За основу взята библиотека Assetic. Ее преимущество в относительной простоте мощности и популярности. Немного расширен функционал для адаптации к потребностям Livestreet. Основной функционал покрыт тестами. В итоге имеется:
Все ресурсы размещаются в публичной директории, доступной для сервера( по умолчанию web). Публикуются автоматически, по этому нужно следить, чтобы публикация не зависила от поведения пользователя. То есть первоначально нужно проходить по всем экшенам админу или разработчику. Почему так? Имееется возможность добавить ресурс или весь набор динамически, в экшене например. Скрипт обходящий все экшены не написан.
Методы PrependScript AppendStyle итд. заменены на зависимости. Теперь порядок скриптов и стилей на странице определяется по параметру depends содержащий массив имен ресурсов от которых зависит ресурс.
Ресурсы компонентов шаблона добавляются на страницу первыми всегда. Они могут зависеть друг от друга на уровне отдельного компонента.
Расположение скриптов перенесено в head с добавлением атрибута defer, по соображению скорости загрузки. Но никто не мешает настроить атрибуты ресурса в параметре attr и добавить туда например async или вовсе убрать все.
Слияние ресурсов зависит от параметра attr. Если встречается ресурс с иными атрибутами он вставляется отдельно на странице.
Большой набор фильтров из библиотеки Assetic позволяет добавлять даже less sass например. Так что этим тоже можно будет пользоваться желающим.
Загружать ресурсы можно не только локально. С удаленного места по HTTP, или откуда угодно. Для этого имеется интерфейс Loader.

Загрузка ресурсов из конфига по старинке с некоторыми изменениями
'js' => [
    'assetJsLocal' => array(
    'file' => __DIR__.'/assets/test.js', 
    'depends' => [ // опционально
          'assetJsHTTP'
    ],
    'filters' => [ // опционально
          'js_min'
     ],
    'attr' => [], // опционально
    'loader' => 'Class/To/Loader' // опционально
]

//коротко
'js' => [
    'assetJsLocal' =>  __DIR__.'/assets/test.js'
]

//или

'js' => [
    __DIR__.'/assets/test.js'
]

2 комментария

avatar
Приятно слышать, что проект ещё жив. Каковы дальнейшие планы?
avatar
Так как приложение будет иметь установку через composer, Хотелось бы и плагины так же устанавливать через него. Но автозагрузка классов в плагинах и самом приложении не PSR4. Как это решить пока не знаю. Если все перевезти на PSR4, тогда делегирование методов модулей плагинами слетает.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.