如何配置 qooxdoo 生成器以包含动态引用的 class?
How configure the qooxdoo generator to include a dynamically referenced class?
首先,一些上下文:我从其他语言(例如 Lisp 和 ClojureScript)驱动 qooxdoo,并且我动态生成代码以引用各个 classes。
这通常会失败,因为 qooxdoo 生成器会查看静态源以查看要包含哪些 classes。
过去,我只是将 classes 的明确提及写入 Application.js。这很好用,但最近我开始理解 config.json 语法并认为采用不那么笨拙的方法会很好。
我设法将这样的代码添加到 "source-build" 作业中,然后该构建工作正常:
"include" : ["qx.ui.mobile.page.Manager"]
但我在一个应用程序中使用了很多 classes,因此将其添加到每个作业中很容易出错,而且仍然很难看。
我尝试将 "include" 添加到其他作业扩展的 "mobile-common" 作业中,但令我惊讶的是它不起作用。嗯.. 工作 "extend" 逻辑中可能存在错误吗?
我可以将 "include" : ["qx.ui.mobile.*"] 添加到所有作业中,但这仍然是丑陋和过度的(而且我仍然需要引入多个其他 classes在每项工作中)。
回顾这一切,如果作业"extends"机制成功获取"include"选项似乎没有问题。我只是 运行 带有详细选项 -v 的生成器并且可以确认如果我将 "include" 添加到 mobile-common 页面管理器 class 不包括在内,但如果我这样做的话在具体工作上。
我是不是漏掉了什么?
肯尼,
你用的"mobile-common"
这个作业说的很对,居然不起作用,真是奇怪。由于我不知道你的确切 config.json 文件,我只能在这里提供一些猜测:
- 移动骨架提供的默认
"mobile-common"
作业已经包含一个 "include"
键。你没有在工作中添加第二个吗?!
- 您是直接使用手机
config.json
,还是您创建了另一个配置文件并包含了包含默认 "mobile-common"
的配置文件?如果您使用作业跟踪(即在一个配置文件中定义 "mobile-common"
,但也在第一个包含的另一个配置文件中定义),这将影响生成的作业定义的内容(可能以意想不到的方式)。
- 默认的
"mobile-common"
作业(无论出于何种原因)在 include 键前面有一个 =
,以防止被覆盖。您可能想删除它,看看会发生什么。
- 如果全部失败,您仍然可以创建自己的包含器作业(如 "my-includes"),向其添加一个
"include"
键,然后将此作业添加到 "extend"
列表中相关的 source* 和 build* 作业。确保将其添加到 before mobile-common 条目。这样你至少可以在一个地方维护你的附加包含模式。
首先,一些上下文:我从其他语言(例如 Lisp 和 ClojureScript)驱动 qooxdoo,并且我动态生成代码以引用各个 classes。
这通常会失败,因为 qooxdoo 生成器会查看静态源以查看要包含哪些 classes。
过去,我只是将 classes 的明确提及写入 Application.js。这很好用,但最近我开始理解 config.json 语法并认为采用不那么笨拙的方法会很好。
我设法将这样的代码添加到 "source-build" 作业中,然后该构建工作正常:
"include" : ["qx.ui.mobile.page.Manager"]
但我在一个应用程序中使用了很多 classes,因此将其添加到每个作业中很容易出错,而且仍然很难看。
我尝试将 "include" 添加到其他作业扩展的 "mobile-common" 作业中,但令我惊讶的是它不起作用。嗯.. 工作 "extend" 逻辑中可能存在错误吗?
我可以将 "include" : ["qx.ui.mobile.*"] 添加到所有作业中,但这仍然是丑陋和过度的(而且我仍然需要引入多个其他 classes在每项工作中)。
回顾这一切,如果作业"extends"机制成功获取"include"选项似乎没有问题。我只是 运行 带有详细选项 -v 的生成器并且可以确认如果我将 "include" 添加到 mobile-common 页面管理器 class 不包括在内,但如果我这样做的话在具体工作上。
我是不是漏掉了什么?
肯尼,
你用的"mobile-common"
这个作业说的很对,居然不起作用,真是奇怪。由于我不知道你的确切 config.json 文件,我只能在这里提供一些猜测:
- 移动骨架提供的默认
"mobile-common"
作业已经包含一个"include"
键。你没有在工作中添加第二个吗?! - 您是直接使用手机
config.json
,还是您创建了另一个配置文件并包含了包含默认"mobile-common"
的配置文件?如果您使用作业跟踪(即在一个配置文件中定义"mobile-common"
,但也在第一个包含的另一个配置文件中定义),这将影响生成的作业定义的内容(可能以意想不到的方式)。 - 默认的
"mobile-common"
作业(无论出于何种原因)在 include 键前面有一个=
,以防止被覆盖。您可能想删除它,看看会发生什么。 - 如果全部失败,您仍然可以创建自己的包含器作业(如 "my-includes"),向其添加一个
"include"
键,然后将此作业添加到"extend"
列表中相关的 source* 和 build* 作业。确保将其添加到 before mobile-common 条目。这样你至少可以在一个地方维护你的附加包含模式。