diff --git "a/\354\261\225\355\204\260_8/\354\213\240\354\212\271\354\244\200.md" "b/\354\261\225\355\204\260_8/\354\213\240\354\212\271\354\244\200.md" new file mode 100644 index 0000000..c6c7854 --- /dev/null +++ "b/\354\261\225\355\204\260_8/\354\213\240\354\212\271\354\244\200.md" @@ -0,0 +1,41 @@ +# 자바스크립트 MV* 패턴 + +## MVC 패턴 + +### 모델 + +도메인 관련 데이터를 표현. 모델이 변경되면 관찰자에게 알림을 보냄. + +모델의 데이터는 지속적으로 유지되길 원하기에 데이터베이스에 저장되곤 한다. + +### 뷰 + +모델의 현재 상태 표현. 관찰자 패턴을 통해 모델이 변경되었음을 알아차림. 화면에 보이는 부분만 담당. + +### 컨트롤러 + +키보드 입력이나 클릭 같은 사용자와의 상호작용 처리. + +모델을 업데이트하는 작업은 컨트롤러가 처리한다. + +### MVC를 사용하는 이유 + +유지보수 용이 + +> 하지만 MVC는 양방향 데이터 흐름이라 관리가 어려워질 수 있다고 하네요. vue도 양방향이라서 조금 헷갈릴 떄가 있었던 것이 기억 났어요. + +### MVP + +컨트롤러 대신 프레젠터 + +MVC에서 뷰는 모델을 구독하고 있었다. 하지만 MVP에서는 뷰가 모델을 구독하지 않는다. 대신 프레젠터가 모델로부터 받은 데이터를 가공하여 뷰에게 전달한다. + +뷰와 모델 간의 결합도가 낮아진다. + +### MVVM + +> MVP랑 비슷해보이는디... 차이를 잘 모르겠네요..! + +### 최신 MV* 패턴 + +리액트나 Vue는 애플리케이션의 뷰 혹은 프레젠테이션 계층을 담당한다. diff --git "a/\354\261\225\355\204\260_9/\354\213\240\354\212\271\354\244\200.md" "b/\354\261\225\355\204\260_9/\354\213\240\354\212\271\354\244\200.md" new file mode 100644 index 0000000..91ff372 --- /dev/null +++ "b/\354\261\225\355\204\260_9/\354\213\240\354\212\271\354\244\200.md" @@ -0,0 +1,19 @@ +# 비동기 프로그래밍 패턴 + +비동기 코드는 오래 실행되는 작업을 수행할 때 유용함. 네트워크 요청, 데이터베이스 읽기/쓰기, 기타 I/O 작업 + +이 기능을 활용하면 비동기 코드를 동기 코드처럼 쓸 수 있어 코드 가독성과 이해도가 높아짐. + +### 배경 + +콜백 쓰면 콜백 지옥 벌어짐. + +### 프로미스 경쟁 + +> Promise.race를 회사에서 써보신 분..? + +### 비동기 반복 + +for-await-of 반복문을 사용해 순회 가능 + +> for-await-of 대신 forEach 써서 순서 보장이 안되는 낭패를 봤었네요.