2016-10-19 70 views
3

我想知道在Extjs(特别是4.x)中为MVC应用程序布局文件夹结构的最正确的最佳做法。extjs的正确文件夹结构MVC

这里有很多例子,但似乎没有普遍的共识。

总的来说,我已经看到了很多的例子被结构是这样的:

http://www.slideshare.net/senchainc/structuring-your-sencha-touch-application

enter image description here

这个方法从某种程度上使我反感,作为一个视图,控制器具有相同的文件名,模型,商店等。(而不是AccountMode,AccountController,AccountView)只能导致混淆。我目前正在使用这种方法的项目,它真的很臭。我的工作效率下降了,因为如果所有内容都具有相同的名称,那么我不容易浏览代码。我花了5分钟盯着一个'账户'文件,只知道我盯着错误的'账户'文件。其次,在完成MVC超过10年之后,我一直把我的视图和控制器放在一起。如果视图和控制器具有1对1的关系,那么他们总是会一起生活在同一个文件夹中。这是一种更为面向对象的方法,因为它具有较少的内部包(即文件夹)依赖性。文件夹应该在它们内部的类之间有很强的相互依赖性,但是与其他文件夹中的类相互依赖性较弱。

是否有使用MVC的extjs文件夹结构的最佳做法?

回答

2

首先,我遇到了同样的问题。我有一个view/Configuration.jsstore/Configuration.jsmodel/Configuration.jscontroller/Configuration.js。唯一的解决办法是让他们更好的名称:

view/ConfigView.js 
store/ConfigStore.js 
model/ConfigModel.js 
controller/ConfigController.js 

我知道这个名字的第二部分是多余的,但它帮助我总是知道我工作的文件。

但是它是最佳实践

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

  • 在ExtJS的框架,他们不使用MVC,他们把一切都变成组件(视图):模板,逻辑,错误修正等。不过,这是不是一个应用程序,它是一个框架
  • 在他们的KitchenSink示例中,他们不使用MVC,只使用View,Model和Store。但是,这不是一个企业应用程序,它是一组小例子。
  • 有没有人见过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文件夹。

不知道这是否是最好的做法,但至少我用的方案不违背自己的示例应用程序。 (请注意,示例应用程序让我们无法了解模型vs商店和控制器与视图的文件名。)