ExtJS - 在app /

时间:2018-05-02 20:05:17

标签: extjs build

我们有应用程序类XYZ 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
});

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.jsY.js无法直接看到,因此其他开发人员基本上只会看到Application.js

app/
    model/
    store/
    view/
    Application.js

所以有几个问题:

1)我可以将X.jsY.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)我是否需要在构建过程中添加任何配置信息?

1 个答案:

答案 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/
   ...

enter image description here

在此文件夹中,我们可以根据需要提供任何类或文件。

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;文件夹它不再那么清楚了。