Qooxdoo 应用程序的构建大小优化

Qooxdoo application's build size optimisation

我想对 qooxdoo 生成的文件进行一些大小优化。 800Ko相当大...参考,它是基于桌面方法的。

我正在使用此配置:

"OPTIMIZE"      : ["basecalls", "comments", "privates", "strings", "variables", "variants", "whitespace"]

没有成功...

有什么想法吗?

客户端优化

这是简单的方法。在您的网络服务器中设置 gzip 压缩。它将使您的构建大小约为 200-300 kB。您甚至可以预压缩构建并直接提供 app.js.gz

然后设置您的网络服务器缓存。 On way是配置合理的缓存过期时间,例如一周或一个月。对于更积极的缓存,过期设置为永远(年)并且您的构建 URL 看起来像 /static/app.js?v=123。您可以使用简单的递增数字、VCS 修订版或文件哈希。

部分构建

更难但更灵活的方法是use parts并将其与上述客户端优化相结合。通过这种方式,您可以按照按需加载其组件的方式构建您的应用程序,而无需预先加载所有内容。然而,这需要更改您的应用程序,使其更加模块化和更少耦合,但这通常是一件好事。

在您的 config.json 中,您需要定义部件,通常对应于不同功能的应用程序组件。我通常扩展 common 工作是这样的:

"common" :
{            
  "packages" :
  {
    "sizes" : 
    {
      "min-package"          : 64,
      "min-package-unshared" : 16
    },
    "additional-merge-constraints" : true,
    "parts" :
    {
      "boot" :
      {
        "include" : ["${QXTHEME}", "${APPLICATION}.Application"]
      },
      "functionality1" :
      {
        "include" : ["${APPLICATION}.controller.Functionality1"] 
      },
      "functionality2" :
      {
        "include" : ["${APPLICATION}.controller.Functionality2"] 
      },
      ...
    }
  }
}

此处的启动部分包含启动应用程序所需的最少 Qooxdoo 依赖项。请注意,您的引导部分不太可能小于 500 kB(未压缩)。

然后当您想使用某些功能时,您可以这样做:

qx.io.PartLoader.require(['functionality1'], function()
{
  new (qx.Class.getByName('app.controller.Functionality1')).doSomething();
}, this);

请注意,零件加载器会为您解决依赖关系,因为零件 functionality1 可能有其依赖关系。事实上,使用上面定义的 3 个部分进行部分构建可能会导致结果文件少于或多于 3 个。生成器使用复杂的依赖关系管理,因此如果它有利于加载性能,它可以拆分和折叠部分。

您使用的优化配置是默认配置。因此,当您 运行 ./generate.py build 时,您应该已经获得了优化的构建。查看 build/script/{myNamespace}.js。脚本的第一部分(可以说是管理或加载代码)未优化,但框架代码和您的应用程序代码已优化(最后一行长行,已缩小等)。

手册有更多细节: