Skip to content

[Day3] 20210224 쇼핑하우

kyle edited this page Feb 24, 2021 · 1 revision

20210224 - 쇼핑하우

TODO

  • 슬라이드
    • 주어진 데이터(임시데이터)로 슬라이드 만들어보기
    • 데이터를 서버에서 받아오기

크롱 수업

프레임워크를 사용할 때 단순히 사용법을 배우는 것 보다는 어떤 구조, 원리 등을 배우려고 노력해야한다.

  • Request

분석(라우팅,...), 조회(DB), 다듬고(parsing), 응답(json)

미들웨어

Request의 분석하는 코드를 잘게 나누어서 각 미들웨어에서 일을 나누어서 처리하게 만든 것이다. 미들웨어는 파이프라인처럼 이어져있다.

  • express에서 다음 미들웨어로 넘어가기 위해서는 next()를 사용하면 된다.
  • express의 middleware도(use) pipe함수, fetch 처럼 작동한다. (하나가 끝난 뒤에야 뒤에 가 실행되는 동기처럼 보이는 비동기)

Class - model,view

  • model

    반드시 필요한 것은 아니다?

    => 화면에서 변경이 되는 상태(state)

  • View - 변화하는 것

    모델을 구독(관심있게 주시)하고 있어야 된다.

    => 이벤트등록, 화면 렌더링

    => 사용자와 인터랙션

즉 model,view굳이 분리할 이유는 없다. 그런데!?

서로다른 view에서 상태를 공유할 때 model을 사이에 두어서 사용할 수 있다. 즉, 여러개의 view의 상태값을 바꿀 때 model을 활용하면 적절하다.

ex)검색창

검색창 view < - > 자동완성 view 둘이 통신을 할 때 사이에 model을 만들어서 서로의 변경된 상태를 공유한다.

순수한 view를 구현하고 싶다면??

위의 예시로 2개의 view 와 model이 연동될 때 순수한 view로 만들고싶다.

이럴때는 view <-> model 사이에 controller를 만들어서 view와 model의 관계를 줄어준다. (controller와의 관계가 생기긴 한다.)

-> 복잡도가 상승 -> 그럼 굳이 controller?? (??컨트롤러에 이벤트 콜백함수를 저장하는거였나?? 그럼 굳이 controller? 요상하다 )

=>하지만 프레임워크의 기반이 되는 좋은 구조?이다. 결국 바닐라로 힘들다 => React, Vue

그래도 class를 여러개 나누고 싶다? (같은 view인데도?)

역할을 잘 정의하고, 이들 관계를 어떻게 표현할지 결정해라

서로 어떻게 호출하고 관계를 맺을지 고민을하고 구현해라.

data통신

  • XHR(XMLHTTPRequest) or fetch

    화면 새로고침없이 데이터를 받아서 렌더링? 할 수 있게해주는 것

    • XHR : 콜백헬 가능성

    • fetch: promise 패턴으로 골백헬을 없앨 수 있다. (fetch는 promise를 반환하기 때문에 promise패턴 사용가능)

express의 middleware, fetch, pipe함수처럼 사고의 흐름대로 A

PI를 만들면 좋다. (뭐하나가 끝나고나야 다른게 실행되는 흐름)

알아봐야될 것

  • transition-end? 를 찾아보자
  • Observer 패턴

궁금한점

백엔드에서의 view는 뭘까?


이슈

-z-index

img가 다른 구조 뒤에있어서 hover같은 이벤트가 적용이 안됐다.

z-index를 사용해서 문제를 해결했다.

내 슬라이더 문제점

< click (왼쪽버튼 클릭) -> style.transform = 'tranlate(~~)'해서 움직임 -> 데이터 새로 정렬해서 innerHTML로 렌더링 (항상 지금 화면이 3개 중 가운데 올 수 있도록) -> transform으로 위치를 다시 0으로 변경

??? 근데 이렇게 하면 translate하는 시간동안 기다려주지 않는다. 뚝뚝 끊기듯 넘어가버린다.

=> 일단, setTimeout으로 정렬,render, 위치0으로 변경을 transition duration시간 만큼 걸어주니 해결됐다.

근데 setTimeout으로 그 시간만큼 똑같이 적용해서 하는게 매우 이상하고 생각한다. 차라리 메소드 체이닝을 이용하고 싶은 생각이 든다.

현재 paging-button을 control하기 위해서 button 3개를 반복문을 돌면서 상황에 맞게 class를 넣었다 빼줬다 하고있다. 뭔가 참신한 다른 방법이 없을까.. 뭔가 찝찝한 방법 같다.