작성
·
290
0
강의에서 controller를 1개만 구현하셨는데, page가 1개 뿐이라서 그런가요?
강의 듣고 프로젝트에 MVC 적용시킬려는데, 페이지마다 controller를 넣어보려고 하는데, 이렇게 해도 괜찮은지 의문이 들어서요ㅎㅎ
답변 4
1
1. 클래스는 es6에서 지원하는 문법인데요 문제를 해결하는 패턴이 여러 개 일수도 있을 것같아요. 둘다 상황에 맞게 사용하는게 좋을 것 같습니다. 참고로 OLOO 패턴은 You don't know js 라는 책에서 배운 내용입니다.
2. 네 같습니다. 사실 저도 model 모양을 갖고 있는 데이터들의 저장소인 store라고 이름 짓는 것이 더 어울릴 것 같다는 생각이 드네요.
3. 혹시 스토어를 업데이트하고 콜백으로 뷰를 업데이트하는 코드를 말씀하시는 걸까요?
this.store.update({id, title}, () => {
this.view.editItemDone(id, title);
});
스토어 업데이트 함수가 비동기일 수도 있다는 의도라서 콜백을 사용했을 것 같네요. 자바스크립트에서 콜백은 무척 자연스러운 방식인데요 보통 저렁게 마지막 인자로 콜백을 전달해서 함수 완료시 실행하도록 한답니다. 저 코드가 읽기 어렵다면 프라미스와 async/awit으로 바꾸면 좀더 쉽게 읽힐거에요.
async editItemSave() { // async 함수를 사용합니다
await this.store.update({id, title}) // Promise를 반환한다는 가정에서 await을 걸수 있어요
this.view.editItemDone(id, title);
}
4. 3번 답변을 드리고 나니 좀 애매한데요. 약간 조언을 드리자면 모델과 뷰의 역할을 잘 나는게 중요한 것 같습니다.
1
네 맞아요. 보통 페이지마다 컨트롤러와 뷰를 만들어요. TODOMVC라는 프로젝트를 참고하시면 도움이 되실것 같아요.
https://github.com/tastejs/todomvc/tree/master/examples/vanilla-es6
0
0
좋은 레포 알려주셔서 감사합니다. :)
알려주신 레포와 정환님의 코드 비교해보면서 공부해보니, 몇가지 궁금한 점이 있어 질문드립니다.
1. 정환님과 다르게, 해당 레포에서는 클래스 문법을 사용했습니다. 제가 보기에는 정환님이 알려주신 OLOO 패턴이 좀더 간단해보이는데, 혹시 프로덕션 레벨에서도 사용할 수 있는 패턴인가요?
2. 정환님은 model이라는 개념을 사용하셨고, 레포는 store라는 개념을 사용했는데 동일한 역할을 하는 건가요?
3. 또한, 정환님과 다르게, 해당 레포는 view와 관련된 함수를 store에서 callback으로 내려주는데, 제가 보기에는 정환님의 코드 처럼 model 따로, view 따로 해주는게 읽기 편합니다. 혹시, 해당 레포처럼 callback으로 내려주면 어떠한 장점이 있는지 아시나요?
4. 3번 질문에 이어서 MVC 패턴이더라도, 정환님처럼 View와 Model 코드를 따로 할 것이냐, 아니면 알려주신 레포처럼 Model 에 View 관련 코드를 callback으로 내려줄 것이냐 등 팀 컨벤션으로 정해지는 건가요?