Ninjaframework:结合CSS和JS资源

Ninjaframework: Combining CSS and JS resources

我正在评估 ninjaframework。似乎缺少的一项重要生产功能是将 CSS 和 Javascript 资源组合用于生产构建的能力。 ninjaframework 是否支持此功能?如果支持,是否有可用的配置示例?

我发现 WRO 项目看起来可以使用标准 Servlet 过滤器来满足此要求:

https://github.com/wro4j/wro4j

我为此调用了 gulp,并在 FreeMarker 模板文件中设置了一个变量来指示开发 mode/prod 模式。在生产中,我包括连接和最小化版本,并在开发期间包括常规文件。

向每个控制器添加此过滤器:

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;
    }
} 

然后在您的 base/default FreeMarker 模板中,您可以根据 dev/prod 模式包含不同的 CSS/JS 文件:

<#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>