使用source-all进行开发时,qooxdoo运行缓慢

时间:2015-01-07 06:57:04

标签: qooxdoo

运行时:

python generate.py source-all

我在我的应用程序中获取了所有库。这一切都很好。

运行应用程序时,qooxdoo会分别加载所有类。

我想使用qooxdoo作为在线开发工具,最终只能运行构建。此外,当在开发模式下运行服务器和客户端时,它在分别加载每个类qooxdoo时运行缓慢。

我是否可以在服务器软件库文件夹中包含http://cdnjs.cloudflare.com/ajax/libs/qooxdoo/4.1/q.min.js或本地副本,并且仅用于开发:

python generate.py source

2 个答案:

答案 0 :(得分:2)

首先,我想澄清这些条款,因为我觉得有些含糊不清。

条款

Qooxdoo生成器的执行单元是作业,例如 info 作业被调用为./generator.py info。参与依赖关系管理的工作(查找应用程序类如何依赖于应用程序,框架和第三方库中的其他类)会生成目标。目标可以包括原始类(按完整路径),构建部分(可以优化的级联类集合,可选地加上一些元数据和数据),或者两者的混合。目标由网络浏览器通过 loader 加载。

源目标

源目标作业是开发依赖管理的手段(编写代码)。有三个这样的。

source

  

使用 source 作业,应用程序的所有类都采用其原始源格式,并且文件直接从文件系统上的原始路径加载。

目标仅包括来自应用程序,框架和库的实际依赖性。所有类按原样加载(数百个请求)。您甚至可能在某些浏览器中从file://加载问题时遇到加载问题(例如,等待加载时间不够长的测试运行器)。

source-all

  

source-all 将包括所有已知的类,无论它们是您的应用程序的一部分,qooxdoo框架,还是您可能正在使用的任何其他qooxdoo库或贡献。

目标包括应用程序,框架和声明库中的所有存在类。所有类按原样加载(数百个请求,超过作业)。比 source 作业更多的加载问题。

source-hybrid(默认为default-job

  

source-hybrid 作业将构成应用程序的类的内容连接成几个文件部分,只留下您自己的应用程序类。将其他类文件(框架,库,contrib)组合在一起,您可以获得几乎构建版本的加载速度,同时保留您自己的应用程序文件的可访问性以进行调试。

目标仅包括来自应用程序,框架和库的实际依赖性。所有非应用程序类都连接成部分(十二个或两个)。按原样加载应用程序类,其余部分从部分加载。提供最佳的装载性能。

构建目标

只有一个构建目标作业build。但是,根据配置,它可以生成单文件构建或partial(多文件,通常是几个文件)构建。与源目标不同,构建目标文件经过优化(缩小)并用于生产部署。

在线开发

用于在线开发的示例应用程序playground(SDK中的application/playground)。让我们看一下config.json的相关工作。

"playground-compile" :
{
  "extend" : [ "libraries" ],
  //...
  "include" :
  [
    "${APPLICATION}.*",
    "qx.*"
  ],
  "exclude" :
  [
    "qx.test.*",
    "qx.dev.unit.*",
    //..
  ],
  //...
},

"build-script" :
{
  "extend" : [ "playground-compile" ],
  //...
},

"source" :
{
  "extend" : [ "playground-compile" ],
  //...
}

正如您在上面所看到的,对于这两个目标,所有qooxdoo类(测试和开发类除外)都包含在内,因此您可以在游乐场片段中使用它们。一般来说,这是你的情况。其余的取决于您拥有的在线开发类型以及您对它的要求。您可以将其基于 source-hybrid (更易于调试)或构建目标(加载速度更快)。你可以混淆一些自定义配置,基于游乐场的配置。

需要注意的一件重要事情是,如果您计划的代码明显比游乐场代码段的情况要复杂得多,这些代码段由彼此依赖的多个类实现,您需要自己处理依赖项管理(即以正确的顺序加载类)。如果你的"在线"代码处理框架的一个子集,例如使用表格数据,仅包含子集(例如qx.ui.table.*而不是qx.*)是有意义的。对于您的信息,playground的单文件构建目标是2.1MB(约550kB gzip)。

其它

q.min.jsqxWeb。它是类似jQuery / jQueryUI的库。基本上,从应用程序开发的角度来看,qxWeb已经注意到了正常的Qooxdoo流程。

答案 1 :(得分:0)

使用source-all创建的构建单独加载每个类,框架和应用程序类 - 即它逐个加载数百个框架类(上次我检查时,它还加载了框架类,而不是由应用程序代码)。

作为一种解决方法,框架开发人员创建了作业源混合。这个作为source-all工作,但创建并加载所有框架类的串联,而不是单独的每个类(我认为它也缩小了框架类)。使用source-hybrid而不是source-all可以显着提高加载速度。

(最好的是框架开发人员为build *作业添加一个选项以生成源地图。但到目前为止,这还不在生成器中。)