Wicket - 添加静态资源的最佳方式

时间:2016-06-04 16:15:54

标签: html wicket

在Wicket应用程序中,我们可以使用标准HTML方式指定标记中的资源URL:

<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>

或者我们可以使用IHeaderContributor添加资源,如下所示:

@Override
public void renderHead(IHeaderResponse response) {

    String contextPath = WebApplication.get().getServletContext().getContextPath();
    UrlResourceReference urlResourceReference = new UrlResourceReference(Url.parse(contextPath
            + "/js/jquery-1.11.3.min.js"));

    response.render(JavaScriptHeaderItem.forReference(urlResourceReference));

    super.renderHead(response);
}

最后,我们在html代码中使用相同的<script></script>标记,在第二种方法中,我们只能将资源添加到<header>部分。那么有什么特别的理由使用wickey添加资源的方式吗?

2 个答案:

答案 0 :(得分:2)

可能有更多原因,但这里是我喜欢的原因:

引自'Wicket 6中的新事物':

  

另外,PackageResourceReference及其专业化可以   提供其资源的缩小版本(如果可用)。对于   使用new JavaScriptResourceReference(MyComponent.class,"my.js") Wicket的示例将在开发模式下提供my.js但是会   如果生产模式可用,则在生产模式下提供my.min.js   文件夹中。

偏离主题:
Wicket也使用jQuery来完成很多事情。确保你没有组合不同的版本。

答案 1 :(得分:2)

我们这样做是因为:

<强> TL; DR;

开发 中,每次重新部署时都会刷新样式和脚本。在 生产 中,客户在进行更改时会获取这些内容。缓存工作正常。

来自Wicket User Guide的长篇解释

  

正如您所见,Wicket已自动附加到文件名a   版本标识符(版本号1297887542000)。当Wicket参赛时   开发模式此标识符包含以毫秒为单位的时间戳   指示上次修改资源文件的时间。这可以   在我们开发应用程序和资源文件时很有用   经常修改。将时间戳附加到我们的原始名称   确保我们的浏览器始终使用该文件的最新版本   而不是一个旧的,过时的缓存版本。

     

当Wicket在DEPLOYMENT模式下运行时,版本   标识符将包含文件的MD5摘要而不是   时间戳。摘要仅在资源第一次计算时计算   请求。这完全有意义,因为静态资源不会改变   当我们的应用程序运行到生产环境中时经常这样   当这个追加时,应用程序被重新部署。