我们有应用程序类X
,Y
和Z
Y
扩展X
,Z
扩展Y
X
位于文件X.js
中。
Y
位于文件Y.js
中。
Z
位于文件Application.js
中(即标准ExtJS)。
我们还有一家大公司,其开发人员具有不同的技能,有些我们不希望直接公开X.js
和Y.js
。
为了说明,假设这些是文件:
X.js
:
Ext.define('MyApp.X', {
extend: 'Ext.app.Application',
name: 'X',
launch: function () {
// Cool stuff
}
// More cool stuff
});
Y.js
:
Ext.define('MyApp.Y', {
extend: 'MyApp.X',
name: 'Y',
launch: function () {
// Call the parent X to set up
this.callParent(arguments);
// Cool stuff
}
// More cool stuff
});
Application.js
:
Ext.define('MyApp.Z', {
extend: 'MyApp.Y',
name: 'Z',
launch: function () {
// Call the parent Y to set up
this.callParent(arguments);
}
});
app/
目录如下所示:
app/
model/
store/
view/
X.js
Y.js
Application.js
公司希望X.js
和Y.js
无法直接看到,因此其他开发人员基本上只会看到Application.js
:
app/
model/
store/
view/
Application.js
所以有几个问题:
1)我可以将X.js
和Y.js
放在其他地方吗?他们只需要脱离直接视图,因此开发人员修改它们的可能性较小。我想到了“app”,但我不确定它对ExtJS是否具有“特殊意义”,而app/app/
看起来有点愚蠢:
app/
app/
X.js
Y.js
model/
store/
view/
Application.js
2)是否存在包含从Ext.app.Application
派生的类的文件夹的推荐名称?
3)我可以将它们放在“隐藏”文件夹中,例如一个以“。”开头?
app/
.js/
X.js
Y.js
model/
store/
view/
Application.js
4)我是否需要在构建过程中添加任何配置信息?
答案 0 :(得分:5)
<强>首先。对您而言,最好的解决方案可能是将这些内容移动到单独的包http://docs.sencha.com/cmd/6.5.3/guides/cmd_packages/cmd_packages.html中。正如所指出的那样。这样做可能需要一点点时间。但是因为我真的不了解你的情况,所以让我谈谈你想要的方式。
1)我可以将X.js和Y.js放在其他地方吗?他们只需要离开 直接观察,因此开发人员修改它们的可能性较小。
您可以将它们放在任何您想要的地方。但我不明白其他人的观点&#34;修改&#34;他们。只需在这些文件的顶部发表评论即可对其进行编辑。而且由于您使用的是版本控制(对吗?),对它们的修改绝不会通过代码审核。
2)是否有包含派生类的文件夹的推荐名称 来自Ext.app.Application?
我不知道。你可以随意命名。但请参阅我关于类命名及其文件夹的说明。
3)我可以将它们放入&#34;隐藏&#34;文件夹,例如一个以&#34;。&#34;?
开头
是的,你可以。但请记住,.folders
并非真正隐藏。默认情况下,它仅适用于Linux和Mac。不在Windows上。如果我没有弄错,大多数IDE都会显示这些文件夹。它只是在文件浏览器中实现,这些文件被隐藏&#34;。
4)我是否需要在构建过程中添加任何配置信息?
这取决于。如果您拥有app
文件夹下的所有内容,它应该可以为您开箱即用。否则,您可能需要对app.json
文件进行编辑。
因此,我们假设您希望将它们放在不同的地方。甚至不在app
文件夹中。让我们假设名为&#34; hidden&#34;的文件夹它直接在项目根目录中。
MyApp/
.hidden/
app/
ext/
...
在此文件夹中,我们可以根据需要提供任何类或文件。
MyApp/app/Application.js
文件看起来不像这样:
Ext.define('MyApp.Application', {
extend: 'MyApp.Master',
});
要完成这项工作,请查看MyApp/app.json
文件,这是主要的&#34;设置&#34;任何Sencha Cmd项目的文件。在那里我们需要添加关于Cmd的类路径的注释,以便能够找到这些文件:
"classpath": [
"app",
".hidden"
],
现在项目应该没有任何问题。如果您想进行任何其他修改,请查看app.js,它是项目的主要入口点。
我使用Ext 6 Classic和Cmd 6.5.1进行了测试
命名约定:
指定类时,classname中的点也应定义文件位置。所以当你有这个课程时:MyApp.view.main.Main
人们希望在MyApp/app/view/main/Main.js
文件夹中找到它,但没有必要,你可以将它们全部放在一个文件夹中,Cmd会为你处理它。但是我会期待比你何时开始将文件移动到某些隐藏的&#34;文件夹它不再那么清楚了。