Extjs 3.4在GateIn 3.6中没有完全工作 - Closure编译器压缩问题

时间:2013-11-30 07:05:34

标签: javascript extjs google-closure-compiler gatein

我正在使用带有GateIn 3.6的ext-js版本3.4(jboss为7)。在GateIn中,当GateIn处于生产模式时,某些ext组件不能正常工作(尤其是树)。我认为这个问题是由于javascript压缩机制造成的。我在GateIn 3.2中遇到了同样的问题然后我发现在GateIn 3.6中他们改变了java压缩机制(在这个GateIn中他们使用closure compiler)但仍然有相同的问题。 以下是我的问题,例如

我创建了两个包含树载荷相同代码的示例 Example 1: - 这里的ext js相关文件没有被压缩 Example 2: - 这里使用closure compiler来压缩ext js文件 (您可以通过将其部署到服务器(如wamp,xamp,jboss ......等)来运行上述两个示例。

在示例1中,可以展开树。但在第二种情况下(Example 2),树只扩展了第一级。是否有任何想法可以解决这个问题。

我无法在生产模式下直接指定ext js库而不进行压缩。因为在GateIn中,在gatein-resources.xml文件中指定了java脚本。在生产模式中,我认为默认情况下,GateIn使用闭包编译器压缩gatein-resources.xml中的文件。

1 个答案:

答案 0 :(得分:1)

如果非压缩你的ext-js脚本是你的选择,你可以:
- 使用doHeaders方法添加脚本,而不是使用gatein-resources.xml:Remove duplicate header entries from doHeaders()
- 继续使用gatein-resources.xml导入javascripts,并通过在gatein / conf / controller.xml中添加一个路由(一个没有得到压缩参数的路由)来为压缩做一个例外:

<route path="/scripts/{gtn:version}/{gtn:scope}/">
  <route-param qname="gtn:handler">
    <value>script</value>
  </route-param>
  <path-param qname="gtn:version" encoding="preserve-path">
    <pattern>[^/]*</pattern>
  </path-param>
  <route path="/{gtn:resource}{gtn:lang}-min.js">
    <path-param qname="gtn:resource">
      <pattern>(ext-core-debug)</pattern>
    </path-param>
    <path-param qname="gtn:lang" capture-group="true">
      <pattern>-([A-Za-z]{2}(-[A-Za-z]{2})?)|</pattern>
    </path-param>
  </route>
</route>

<route path="/scripts/{gtn:version}/{gtn:scope}/">
  <route-param qname="gtn:handler">
    <value>script</value>
  </route-param>
  <path-param qname="gtn:version" encoding="preserve-path">
    <pattern>[^/]*</pattern>
  </path-param>
  <route path="/{gtn:resource}{gtn:lang}{gtn:compress}.js">
    <path-param qname="gtn:resource">
      <pattern>.+?</pattern>
    </path-param>
    <path-param qname="gtn:lang" capture-group="true">
      <pattern>-([A-Za-z]{2}(-[A-Za-z]{2})?)|</pattern>
    </path-param>
    <path-param qname="gtn:compress" capture-group="true">
      <pattern>-(min)|</pattern>
    </path-param>
  </route>
</route>

调整gtn:resource param的模式以满足您的需求。 使用其中一个解决方案,除了您在模式中定义的脚本外,所有脚本都将缩小。