5

用 JSF 延迟加载 JavaScript 库(Richfaces、Primefaces、自己的东西)以加快页面加载的最佳方法是什么?

正如 Google PageSpeed 插件所说,建议在网站完全加载时解析 JavaScript。实现此目的的一种方法是将 JavaScript 加载放在<body>标记的末尾。另一种方法是将“defer”属性放入标记中,正如我所见<script>,这不能用 JSF 的标记来完成。<h:outputScript>

那么,你会怎么做呢?

4

2 回答 2

5

使用<h:outputScript target="body">. 然后它将在<h:body>. 它即默认为视图中的“当前”位置(另一个target值是head它将使脚本以 结束<h:head>,即使脚本在 中的某处指定<h:body>)。

<h:outputScript name="js/foo.js" target="body" />

如果您也想将此应用于 3rd 方脚本,则需要创建一个自定义SystemEventListener挂钩,PreRenderViewEventUIViewRoot#getComponentResources()UIViewRoot#addComponentResource().

于 2012-04-25T13:02:20.907 回答
0

不知道这是否重要(您可以称其为解决方法),

但是您始终可以在外部 xhtml 页面中包含一些 js 文件,这些文件将包含在您的主页中,ui:include这些文件将由 js/jquery 包装<h:panelGroup id="externalPageWrapper" render="#{myBean.renderExternalPage}"并且几乎没有 js/jquery 的帮助,您可以.click()在一些隐藏h:commandButton的内容上执行,f:ajax这将更renderExternalPage改为 true 并呈现externalPageWrapper这将加载该 xhtml 页面以及其中包含的所有 js 文件...

于 2012-04-25T09:55:08.170 回答