2016-10-19 124 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商店和控制器與視圖的文件名。)