20210410(토)

2021-04-10

1. 학습 날짜

  • 2021-04-10

2. 학습 시간

  • 15:00 ~ 19:000

3. 학습 범위 및 주제

  • 바닐라 자바스크립트로 MVC 패턴으로 todo 앱 마무리

4. 학습 목표

  • todo 앱 리팩토링(컴포넌트 분리까지는 x)

5. 학습 정리

  • x

6. 상세 학습 내용

  • todo 앱 리팩토링

    • 어제까지 해서 모든 기능은 다 구현했었다. 하지만 지금 몇가지 문제가 있었다.

  • 문제1. view 의 render 관련 메서드가 많아도 너무 많다.

    • 컨트롤러에서 view 메서드를 호출할 때 너무 많은 종류의 메서드를 호출하고 있었다.

    • 예를 들면, 어디에서는 this.view.renderTodo, this.view.renderAgain` 등이 있다.

    • 하지만 생각해보면 어떤 메서드를 호출하던간에 view 메서드를 호출한다는 거는 보이는 렌더링 자체를 바꾼다는건데 메서드 이름은 다 통일성 없게 구현되어 있어서 보기에 너무 좋지 않았다

    • 따라서 이 문제를 해결해야 했는데, 인터넷에 있는 자료들을 보니깐 오브젝트 안에 함수들을 구현해두고, 키 값으로 메서드를 찾은다음에 실행하는 방식으로 멋들어지게 구현되어 있었다.

    • 나도 이 방법을 사용해서 구현했는데, 자바스크립트에는 스위치 문이 존재하므로 스위치문을 이용해서 구현했다.

    • 결론은 컨트롤러에서 호출하는 view의 메서드는 오직 render 하나 뿐이고 이 메서드 안에 인자로 커맨드와 인자를 넘겨주게 만들었다.

    • 그리고 함수 이름들도 일괄적으로 수정해줬다.

  • 문제2. model과 db의 역할이 애매하다.

    • 흠... 기존에는 model 의 역할이 비즈니스 로직을 수행하는 곳이 아닌, 컨트롤러처럼 웹과 localStorage 간의 연결을 이어주는? 그런 역할을 해주고 있었다.

    • 하지만 생각해보면, SPA 라는 것은 실제 데이터를 처음 로딩할 때 모델이 갖고 있어야하고, 이 모델의 변화를 뷰 들이 listen 하고 있다가 변화를 감지했을 때 view 에 나타내주는 것이다.

    • 결론은 model 자체가 데이터를 들고 있어야 한다는 것!! 그리고 이 모델의 변화를 주고, 모델은 db에 알려주는 것이다.

    • 따라서 기존에 db 자체가 갖고 있던 모든 로직을 model 로 옮겼고, db 에는 오직 save와 delete 하는 로직만을 담았다.

7. 오늘 학습 내용에 대한 개인적인 총평

  • 1차적으로 바닐라 자바스크립트와 MVC 패턴을 이용해서 TODO 앱을 구현했다.

  • 어제까지는 MVC 패턴 자체를 오해하고, 특히 모델 자체에 오해를 많이 하고 있었던 것 같다.

  • 많은 시간 학습하지는 못했지만 그래도 괜찮았던거 같다.

8. 다음 학습 계획

  • vue 강의 듣기

Last updated