所以我找到了一个我认为效果很好的合适的解决方案。
在我的页面模板上,我加载 Ext JS 所需的文件并使用 Loader.setConfig 来指定 ExtJS MVC 文件夹结构的位置:
<link href="<path>/ext-all.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<path>/bootstrap.js" charset="utf-8"></script>
<script type="text/javascript">
Ext.Loader.setConfig({
enabled: true,
paths: {
'GS': '<path>/extjs/app") %>'
}
});
</script>
然后在我的 app 文件夹中,我有以下文件夹结构:
app/
Models/
User.js
MyOtherModel.js
我的 User.js 文件包含:
Ext.define('GS.Model.SimpleUser', {
extend: 'Ext.data.Model',
fields: [
{ name: 'UserID', type: 'int' },
{ name: 'Username', type: 'string' },
{ name: 'Firstname', type: 'string' },
{ name: 'Lastname', type: 'string' },
{ name: 'Email', type: 'string' }
],
idProperty: 'UserID'
});
然后,在我使用 ExtJS 的每个页面上,我只需通过 Ext.requires 包含模型:
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.util.*',
'Ext.state.*',
'Ext.toolbar.Paging',
'Ext.tip.QuickTipManager',
'GS.Model.SimpleUser'
]);
Ext.onReady(function () {
//app code here
});
使用这种方法,我可以编写可重用的代码,例如模型和控制器,而不必使用单个视口进行完整的 MVC。