2016-10-19 2 views
3

Extjs (특히 4.x)에서 MVC 응용 프로그램의 폴더 구조를 레이아웃 할 때 가장 정확한 모범 사례를 알고 싶습니다.extjs의 폴더 구조 수정 MVC

주위에는 여러 가지 예가 있지만 일반적인 합의가없는 것 같습니다.

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

enter image description here

이 접근 방식은 다소 뷰, 컨트롤러의 동일한 파일 이름을 가진 것으로, 나를 빠뜨리고 소름 끼치게 :

는 일반적으로 I는 다음과 같이 구성되어 많은 예제를 보았다 , 모델, 상점 등 (AccountMode, AccountController, AccountView 대신)은 혼란을 일으킬 수 있습니다. 나는이 방법론을 사용하는 프로젝트에 있으며 실제로 악취가 난다. 모든 것이 같은 이름이라면 코드를 탐색하기가 쉽지 않기 때문에 생산성이 떨어졌습니다. 나는 'Account'파일을 쳐다 보면서 5 분을 보내고 잘못된 'Account'파일을 쳐다 보았다.

두 번째로, MVC를 10 년 이상 수행하면서 필자는 항상 View와 Controller를 가까이에 배치했습니다. 보기와 컨트롤러가 1 대 1의 관계를 가지면 항상 같은 폴더에 함께 살게됩니다. 이는 패키지 간 (즉, 폴더) 종속성이 적어 짐에 따라보다 많은 객체 지향 접근 방식입니다. 폴더는 내부 클래스간에 강력한 상호 의존성을 가져야하지만 다른 폴더의 클래스와는 약한 상호 종속성을 가져야합니다.

MVC를 사용하는 extjs 폴더 구조에 대한 모범 사례가 있습니까?

답변

2

우선 나는 당신과 같은 문제가있었습니다. 나는 view/Configuration.js이고 store/Configuration.js이고 model/Configuration.jscontroller/Configuration.js입니다.

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

나는 이름의 두 번째 부분은 중복 것을 알고 있지만, 그것은 나를 항상 내가 일하고있는 파일을 알고하는 데 도움이 : 유일한 해결책은 그들에게 더 나은 이름을 부여했다.

하지만 우수 사례입니까?

ExtJS는 Sencha에서 제작되었으므로 "우수 사례"는 일반적으로 "Sencha의 역할"입니다. 그러나 그들은 무엇을하고 있습니까? 그들은 MVC를 사용하지 않는 ExtJS를 프레임 워크에서

  • , 그들은 구성 요소 (보기)에 모든 것을 넣어 : 등 템플릿, 로직, 버그 수정 그러나, 그것이 응용 프로그램이 아닙니다, 그것은 프레임 워크
  • 입니다
  • 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', 

을 따라서 요약 보기 모델은 controllers 폴더가 아닌 view 폴더에 있습니다.

이 방법이 가장 좋은 방법인지는 모르겠지만 적어도 사용하는 구성표는 샘플 앱과 모순되지 않습니다. (샘플 앱은 상점과 컨트롤러 대 뷰의 파일 이름에 대한 단서를 제공하지 않습니다.)