ExtJS - 在app /下组织文件

Yim*_*ong 5 extjs build

我们有应用程序类X,YZ在那里Y扩展XZ延伸Y.

X在档案中X.js. Y在档案中Y.js. Z在文件中Application.js(即标准的ExtJS).

我们还有一家大公司,开发人员具有不同的技能,有些我们不想直接暴露X.jsY.js.

为了说明,假设这些是文件:

X.js:

Ext.define('MyApp.X', {
    extend: 'Ext.app.Application',
    name: 'X',
    launch: function () {
        // Cool stuff
    }
    // More cool stuff
});
Run Code Online (Sandbox Code Playgroud)

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
});
Run Code Online (Sandbox Code Playgroud)

Application.js:

Ext.define('MyApp.Z', {
    extend: 'MyApp.Y',
    name: 'Z',
    launch: function () {
        // Call the parent Y to set up
        this.callParent(arguments);
    }
});
Run Code Online (Sandbox Code Playgroud)

app/目录如下所示:

app/
    model/
    store/
    view/
        X.js
        Y.js
        Application.js
Run Code Online (Sandbox Code Playgroud)

该公司希望X.js并且Y.js不受直接关注,因此基本上其他开发人员只会看到Application.js:

app/
    model/
    store/
    view/
    Application.js
Run Code Online (Sandbox Code Playgroud)

所以有几个问题:

1)我可以把X.jsY.js别的地方?它们只需要脱离直接视图,因此开发人员修改它们的可能性较小.我想到了"app",但我不确定它对ExtJS是否具有"特殊意义",看起来有点愚蠢app/app/:

app/
    app/
        X.js
        Y.js
    model/
    store/
    view/
    Application.js
Run Code Online (Sandbox Code Playgroud)

2)包含派生自的类的文件夹是否有推荐的名称Ext.app.Application

3)我可以将它们放在"隐藏"文件夹中,例如以"."开头的文件夹吗?

app/
    .js/
        X.js
        Y.js
    model/
    store/
    view/
    Application.js
Run Code Online (Sandbox Code Playgroud)

4)我是否需要在构建过程中添加任何配置信息?

pag*_*gep 5

第一.对您而言,最好的解决方案可能就是将这些内容移到单独的软件包http://docs.sencha.com/cmd/6.5.3/guides/cmd_packages/cmd_packages.html中.这样做可能需要一点点时间.但是因为我不太了解你的情况,所以让我谈谈你想要的方式.

1)我可以将X.js和Y.js放在其他地方吗?它们只需要脱离直接视图,因此开发人员修改它们的可能性较小.

你可以把它们放在任何你想要的地方 但我不明白其他人"修改"它们的观点.只需在这些文件的顶部发表评论即无法编辑它们.而且因为你正在使用版本控制(对吗?),对它们的修改永远不会通过代码审查.

2)是否存在包含从Ext.app.Application派生的类的文件夹的推荐名称?

我不知道.你可以随意命名.但请参阅我关于类命名及其文件夹的说明.

3)我可以将它们放在"隐藏"文件夹中,例如以"."开头的文件夹吗?

是的你可以.但请记住,.folders并非真正隐藏.默认情况下,它仅适用于Linux和Mac.不在Windows上.如果我没有弄错,大多数IDE都会显示这些文件夹.它只在文件浏览器中实现,这些文件是"隐藏的".

4)我是否需要在构建过程中添加任何配置信息?

这取决于.如果你拥有该app文件夹下的所有内容,它应该是开箱即用的.否则,您可能需要对app.json文件进行编辑.


所以我们假设您希望将它们放在不同的地方.甚至没有在app文件夹中.让我们假设名为"hidden"的文件夹直接位于项目根目录中.

MyApp/
   .hidden/
   app/
   ext/
   ...
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此文件夹中,我们可以根据需要包含任何类或文件.

MyApp/app/Application.js文件看起来像这样:

Ext.define('MyApp.Application', {
    extend: 'MyApp.Master',

});
Run Code Online (Sandbox Code Playgroud)

要完成这项工作,请查看MyApp/app.json文件,该文件是任何Sencha Cmd项目的主要"设置"文件.在那里我们需要添加关于Cmd的类路径的注释,以便能够找到这些文件:

"classpath": [
    "app",
    ".hidden"
],
Run Code Online (Sandbox Code Playgroud)

现在项目应该没有任何问题.如果您想进行任何其他修改,请查看app.js,它是项目的主要入口点.

我用Ext 6 Classic和Cmd 6.5.1测试了这个

命名约定:

指定类时,classname中的点也应定义文件位置.所以,当你有这样的类:MyApp.view.main.Main一个希望找到它的文件夹中MyApp/app/view/main/Main.js,但它不是必需的,你可以让他们所有的一个文件夹中,并Cmd的会为您处理.但我希望,当你开始将文件移动到一些"隐藏"文件夹时,它将不再那么清楚了.