Model view controller extjs MVC的正确文件夹结构

Model view controller extjs MVC的正确文件夹结构,model-view-controller,extjs,extjs4,Model View Controller,Extjs,Extjs4,我想知道在Extjs(特别是4.x)中为MVC应用程序设计文件夹结构的最正确的最佳实践 到处都有许多例子,但似乎没有达成普遍共识 总的来说,我见过很多这样的例子: 这种方法有点让我害怕,因为视图、控制器、模型、存储等都有相同的文件名。。(而不是AccountMode、AccountController、AccountView)只会导致混淆。我目前在一个使用这种方法的项目中,它真的很糟糕。我的工作效率下降了,因为如果所有东西都有相同的名称,我就不容易浏览代码。我花了5分钟盯着一个“账户”文件,

我想知道在Extjs(特别是4.x)中为MVC应用程序设计文件夹结构的最正确的最佳实践

到处都有许多例子,但似乎没有达成普遍共识

总的来说,我见过很多这样的例子:

这种方法有点让我害怕,因为视图、控制器、模型、存储等都有相同的文件名。。(而不是AccountMode、AccountController、AccountView)只会导致混淆。我目前在一个使用这种方法的项目中,它真的很糟糕。我的工作效率下降了,因为如果所有东西都有相同的名称,我就不容易浏览代码。我花了5分钟盯着一个“账户”文件,却发现我盯着的是错误的“账户”文件

第二,做MVC已经超过10年了,我一直把我的观点和控制者放在一起。如果视图和控制器具有1对1的关系,则它们将始终位于同一文件夹中。这是一种更为面向对象的方法,因为包间(ie文件夹)依赖性较少。文件夹中的类之间应该有很强的相互依赖关系,但与其他文件夹中的类之间应该有很弱的相互依赖关系


使用MVC的extjs文件夹结构有没有最佳实践?

首先,我遇到了与您相同的问题。我有一个
view/Configuration.js
和一个
store/Configuration.js
和一个
model/Configuration.js
和一个
controller/Configuration.js
。唯一的解决办法是给他们起更好的名字:

view/ConfigView.js
store/ConfigStore.js
model/ConfigModel.js
controller/ConfigController.js
我知道名称的第二部分是多余的,但它帮助我始终知道我正在处理哪个文件

但这是最佳实践吗

由于ExtJS是由Sencha制作的,“最佳实践”通常是“Sencha所做的”。但他们在干什么

  • 在ExtJS框架中,他们不使用MVC,而是将所有内容都放在一个组件(视图)中:模板、逻辑、错误修复等。但是,它不是一个应用程序,而是一个框架
  • 在他们的KitchenSink示例中,他们不使用MVC,只使用视图、模型和存储。但是,这不是一个企业应用程序,而是一组小示例
  • 有人见过Sencha构建的企业ExtJS应用程序的源代码吗?我没有
因此,作为最后一种手段,让我们看看Sencha Cmd提供的示例应用程序

在我正在使用的Cmd 6.0.1版本中,示例应用程序是一个MVVM应用程序,命名“模式”如下所示:

Ext.define('{appName}.view.main.Main', {
    extend: 'Ext.tab.Panel',

Ext.define('{appName}.view.main.List', {
    extend: 'Ext.grid.Panel',

Ext.define('{appName}.view.main.MainController', {
    extend: 'Ext.app.ViewController',

Ext.define('{appName}.view.main.MainModel', {
    extend: 'Ext.app.ViewModel',

Ext.define('{appName}.store.Personnel', {
    extend: 'Ext.data.Store',
因此,总而言之:它们不会提供重复的文件名,视图控制器/视图模型位于
view
文件夹中,而不是
controllers
文件夹中

不确定这是否是最佳实践,但至少我使用的方案与他们的示例应用程序并不矛盾。(请注意,示例应用程序没有提供关于模型与商店、控制器与视图的文件名的任何线索。)