2016-10-19 19 views
3

Extjs(特に4.x)のMVCアプリケーションのフォルダ構造をレイアウトする際に最も適切なベストプラクティスを知りたいと思います。extjsの正しいフォルダ構造MVC

多くの例が散在していますが、一般的なコンセンサスはないようです。

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

enter image description here

は、このアプローチはややビュー、コントローラに同じファイル名を持つものとして、私をhorrifies:

は、一般的に、私はこのように構成されている例をたくさん見てきました、モデル、店舗など(AccountMode、AccountController、AccountViewの代わりに)混乱につながる可能性があります。私は現在、この方法論を使用するプロジェクトに入っています。私の生産性は下がってしまった。なぜなら、すべてが同じ名前であれば、コードをナビゲートすることは容易ではないからだ。私は「アカウント」ファイルを見つめて5分間過ごし、間違った「アカウント」ファイルを見つめていたことに気が付きました。

第2に、MVCを10年以上実行して、私は常にViewとControllerを近くに閉じ込めています。ビューとコントローラが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 

私は名前の2番目の部分は冗長であることを知っているが、それは私がいつも私が働いているどのファイルを知るのに役立ちます:唯一の解決策は、彼らに、より良い名前を与えることでした。

ベストプラクティス

ExtJSはSenchaによって作成されているため、「ベストプラクティス」は通常「Senchaの機能」です。しかし、彼らは何をしていますか?彼らはMVCを使用していないExtJSのフレームワークで

  • 、彼らは、コンポーネント(ビュー)にすべてをかける:テンプレート、ロジック、バグ修正などをしかし、その後、それはフレームワークであり、アプリケーションではありません
  • 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', 

をので、要約しますビューモデルは、controllersフォルダではなく、viewフォルダにあります。

これがベストプラクティスかどうかはわかりませんが、少なくとも使用しているスキームはサンプルアプリケーションと矛盾していません。 (サンプルアプリケーションは、モデルとストアとコントローラのビューとファイルのビューのファイル名についてはわかりません)

関連する問題