在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添加资源的方式吗?
答案 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摘要而不是 时间戳。摘要仅在资源第一次计算时计算 请求。这完全有意义,因为静态资源不会改变 当我们的应用程序运行到生产环境中时经常这样 当这个追加时,应用程序被重新部署。