如何使用SiteMesh3在页面和页面上定义JavaScript(由于性能问题)?

时间:2014-02-26 15:54:19

标签: javascript frontend sitemesh

我在我的项目中使用SiteMesh3,但我不知道如何解决这个问题:对于性能问题,我想将我的特定JavaScripts放在我的页面末尾(http://developer.yahoo.com/performance/rules.html#js_bottom)和通用在装饰者的最后,这些JQuery导入。

问题是,当我将特定的JS注入装饰器时,JQuery还没有导入,页面也不起作用。

我试图将我的内容放入,但SiteMesh无法识别它,只是。

有没有办法解决这个问题而没有将JQuery导入到每个页面中并将其保存在装饰器的末尾?

非常感谢您的关注。

2 个答案:

答案 0 :(得分:2)

不知道此解决方案是否适用于SiteMesh 3.我正在使用SiteMesh 2.但是我遇到了同样的问题。我找到的解决方案是用标签“content”包围javascript。然后在装饰器中检索这些值。 例如: 在要装饰的页面中:

<content tag="botton_javascript">
    <script>
        $(function() {
            console.log('This is a test');
        });
    </script>
</content>

在装饰页面中:

<decorator:getProperty property="page.botton_javascript"></decorator:getProperty>

使用tag属性很重要,你可以订购javascript的导入。在sitemesh 3中,您将使用sitemesh替换装饰器

答案 1 :(得分:2)

我找到了这个解决方案:

将此标记添加到sitemesh3.xml:

<content-processor>
    <tag-rule-bundle class="org.sitemesh.content.tagrules.html.DivExtractingTagRuleBundle" />
</content-processor>

然后在HTML中添加具有特定名称的div。例如:

<div id="siteMeshJavaScript">
    <script type="text/javascript">
        ...
    </script>
</div>

最后,在装饰者的任何地方添加对此div的引用:

<sitemesh:write property='div.siteMeshJavaScript'/>