1

我正在评估忍者框架。似乎缺少的一项重要生产功能是结合 CSS 和 Javascript 资源进行生产构建的能力。ninjaframework 是否支持这一点,如果支持,是否有可用的配置示例?

4

2 回答 2

1

我为此大声疾呼,并在 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 模板中,您可以根据 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>
于 2015-10-24T07:03:04.850 回答
0

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

https://github.com/wro4j/wro4j

于 2015-09-13T17:48:49.407 回答