Extjs 我可以在一个文件中加载整个名称空间吗?

Extjs 我可以在一个文件中加载整个名称空间吗?,extjs,extjs4,Extjs,Extjs4,我希望将一个名称空间中的所有类合并到一个文件中,而不是逐个加载它们。是的,我知道加载程序不应该在生产环境中使用,但这些名称空间很少使用 假设我有名称空间 App.Employee.* 现在我想在一个文件/请求中加载整个App.Employee命名空间。对我来说,这听起来似乎是可能的,但我没有设法让它工作,因为加载程序正在寻找一个名为App.Employee的类 那么,这是可能的,还是理论上可能的,还是根本不可能的?您必须将所有类放在一个js文件中,并加载该文件(只需将所有单个文件中的代码复制到

我希望将一个名称空间中的所有类合并到一个文件中,而不是逐个加载它们。是的,我知道加载程序不应该在生产环境中使用,但这些名称空间很少使用

假设我有名称空间

App.Employee.*
现在我想在一个文件/请求中加载整个
App.Employee
命名空间。对我来说,这听起来似乎是可能的,但我没有设法让它工作,因为加载程序正在寻找一个名为
App.Employee
的类


那么,这是可能的,还是理论上可能的,还是根本不可能的?

您必须将所有类放在一个js文件中,并加载该文件(只需将所有单个文件中的代码复制到一个新文件中,并将其命名为
App.employee.js
)。 不可能在一个Ajax请求中加载多个文件,因此加载程序无法在这方面帮助您

供参考:

Ext使用类和名称空间的命名。它们的名称空间都以小写字符开头,它们的类都以大写字符开头。这使得区分这两种类型更加容易。
遵循那个惯例是明智的。您可以在一个文件/App/Employee.js中收集所有名称空间App.Employee.*并在需要时使用文件完整路径加载它

Ext.require("/App/employee")
UPD。我也发现了一些问题。Ext.loader不等待employee.js。当employee.js中的类具有依赖项时,它会抛出异常。 请改为尝试
Ext.syncRequire(“/App/employee”)
。在我的测试中效果很好


不要忘记声明文件的完整路径(从webroot)。

最好的方法是构建应用程序,包括使用较少的部分。你的应用程序是否会提前加载20秒或30秒并不重要,但稍后延迟可能会更加明显。Sencha Cmd可以帮你做到这一点


如果您仍然认为您的应用程序可以从动态加载中获益,请使用
Ext.Loader.loadScript
。它有
callback
参数,该参数在加载相关脚本时生效,为您提供了一个操作点。脚本不一定是Ext类,任何JavaScript都可以,包括压缩形式的应用程序的一部分。

您可以使用Ajax请求加载任何文件吗?据我所知,这根本不可能,因为ajax请求的标题是?或者,这是否仅适用于我还希望在本地保存文件的情况?无论如何,我已经尝试了你的建议,正如我在问题中所写的那样,我最终得到了一个错误:没有名为App.Employee的类,这是正确的,因为它只是一个名称空间。哦,我不知道我可以这样要求一个文件,并阻止加载查找名为file+名称空间的类。我要试试这个。我想这项工作可能正是我想要的!这是行不通的。ExtJS正在寻找一个名为类似给定路径的类,但它只是名称空间,所以没有类-1如果我错了,告诉我哪里错了,或者修正你的答案我不会测试你的编辑,因为@AlexanderTokarev提供了我想要的答案(尚未测试),但我会删除我的反对票。谢谢你的回答,我还没有测试过,但听起来很有希望:)也许你也会看看?