Ninjaframework: объединение ресурсов CSS и JS

Я оцениваю ниндзя Одна важная производственная функция, которая, по-видимому, отсутствует, - это возможность комбинировать ресурсы CSS и Javascript для производственной сборки. Поддерживается ли это с помощью ninjaframework, и если да, то есть ли примеры конфигурации?

2 ответа

Решение

Я нашел проект WRO, который выглядит так, как будто он будет соответствовать этому требованию, используя стандартный фильтр сервлетов:

https://github.com/wro4j/wro4j

Я призываю gulp для этого и имею переменную, которую я установил, чтобы указать режим dev / режим prod в файлах шаблона FreeMarker. В процессе производства я включаю объединенные и свернутые версии, а во время разработки - обычные файлы.

Для каждого контроллера добавьте этот фильтр:

public class GlobalFilter implements Filter {
    @Inject
    NinjaProperties ninjaProperties;

    public Result filter(FilterChain chain, Context context) {
        Result result = chain.next(context);
        if (isHtmlTemplate(result)) {
            result.render("isDevMode", ninjaProperties.isDev());
        }

        return result;
    }
} 

А затем в ваш базовый / стандартный шаблон FreeMarker вы можете включить различные файлы CSS/JS в зависимости от режима dev/prod:

<#if isDevMode?? && isDevMode>
    <link rel="stylesheet" type="text/css" href="/assets/css/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="/assets/css/dataTables.bootstrap.css">
    <link rel="stylesheet" type="text/css" href="/assets/css/vis.css"/>

    <script src="/assets/js/jquery.js"></script>
    <script src="/assets/js/bootstrap.js"></script>
    <script src="/assets/js/jquery.dataTables.js"></script>
    <script src="/assets/js/moment.js"></script>
    <script src="/assets/js/vis.js"></script>
    <script src="/assets/js/dataTables.bootstrap.js"></script>

<#else>
    <link rel="stylesheet" type="text/css" href="/assets/css/main.min.css">

    <script src="/assets/js/main.min.js"></script>
</#if>
Другие вопросы по тегам