从 Sencha Cmd 6.5 开始,您可以将代码拆分为多个文件。要实现此目的,您必须将代码拆分为 exjts 包(如果尚未完成):
最后,您应该具有与此类似的文件夹结构:
workspaceDir
|
+->appA
+->appB
+->packages
|
+-> local
|
+->CoreComponents
+->ProcurementModule
+->ForumModule
+->BOMModule
+->ReportModule
In your app.json
您可以从中添加/移动包的文件requires
to uses
。作为最后一步,您必须添加新的package-loader
to the requires
数组中app.json
。
你最终会得到这样的结果:
{
// [...]
"uses": [
"ProcurementModule",
"ForumModule",
"BOMModule",
"ReportModule"
],
"requires": [
"CoreComponents",
"package-loader"
]
// [...]
}
接下来,您需要使用附加标志启动 Sencha Cmd 构建-uses
。
如果您这样做,Sencha Cmd 将首先构建您的可选包并将它们添加到构建输出目录中的资源文件夹中。
sencha app build -uses production
重要的是,您不要从主应用程序中引用可选包中的类。否则你的构建将会失败。
由于您的可选包不会在页面启动时自动加载,因此您需要手动触发加载过程。我通常在 AppController 的路由过程中执行此操作。
这里有一个例子:
Ext.define('MyApp.view.main.MainController', {
extend: 'Ext.app.ViewController',
requires: [
'Ext.Package'
],
routes: {
'forum': {
before: 'loadForum',
action: 'showView'
}
},
loadForum(action) {
if (Ext.Package.isLoaded('ForumModule')) {
action.resume();
} else {
//Loading mask code here [...]
Ext.defer(() => { // it needs some time to show up the loading mask
Ext.Package.load('ForumModule').then(() => {
//Remove loading mask code here [...]
action.resume(); //proceed router process; all package files loaded
});
}, 500);
}
},
showView() {
this.getView().add({xclass: 'ForumModule.view.MainView'});
}
});
有关此主题的更多信息:http://docs.sencha.com/cmd/guides/whats_new_cmd65.html#whats_new_cmd65_-_dynamic_package_loading http://docs.sencha.com/cmd/guides/whats_new_cmd65.html#whats_new_cmd65_-_dynamic_package_loading