在ExtJS 4下有没有办法加载外部组件?

Jam*_*hon 4 code-reuse components extjs extjs4

我正在尝试设置我的ExtJS 4项目,所以我有三个顶级应用程序,例如,

/foo/app.js
/bar/app.js
/baz/app.js

每个"顶级"应用程序都是一个单独的ExtJS应用程序,每个应用程序都有自己的加载器.在某些情况下,我会在所有三个应用程序之间共享一般组件,因此我有/components顶级目录.

如果我有一个组件名称说ComponentA,

/components/componenta.js

我如何将ComponentA引入所有三个应用程序,以便它可以由单个应用程序引用或扩展?

Jam*_*and 10

您可以将同一个加载器添加到每个应用程序app.js文件中.

Ext.Loader.setPath('Common', '../components/');
Run Code Online (Sandbox Code Playgroud)

然后在定义它们时将公共组件赋予相同的命名空间,并将它们放在组件顶级文件夹中.

componenta.js

Ext.define('Common.componenta', {
    extend: 'Ext.panel.Panel',
    title: 'Component A'
});
Run Code Online (Sandbox Code Playgroud)

然后,Common命名空间将可供您在每个应用程序中进行扩展

Ext.define('Foo.panel', {
    extend: 'Common.componenta',
    title: 'Foo Panel'
});
Run Code Online (Sandbox Code Playgroud)

  • Upvoted.Here是最近在Sencha论坛上的讨论,它更详细地描述了这种模式.http://www.sencha.com/forum/showthread.php?238496-How-to-extend-a-Ext.app.Application&p=875700 (2认同)