Skip to content

Commit ae1957b

Browse files
authored
챕터 8 (#69)
1 parent 51fe716 commit ae1957b

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

챕터_8/오혜성.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# 자바스크립트 MV* 패턴
2+
3+
## MVC 패턴
4+
5+
- 애플리케이션의 구조를 개선하기 위해 관심사의 분리를 활용하는 아키텍처 디자인 패턴
6+
7+
> 대충 장고나 RoR 같은 도구를 썻엇어 가지고 느낌으로만 알고 있음
8+
> 근데 다 읽고 나서도 느낌적으로만 아는 느낌?
9+
10+
```js
11+
// 태그된 템플릿 리터럴 문법을 이제 앎
12+
13+
function taggedTemplateLiterals(...arg) {
14+
console.log('arg is: ',arg);
15+
const [str, ...values] = arg;
16+
console.log('str is: ',str);
17+
console.log('values is: ',values);
18+
}
19+
20+
taggedTemplateLiterals`Hello ${'world'}!`;
21+
22+
// arg is: [ [ 'Hello ', '!' ], 'world' ]
23+
// str is: [ 'Hello ', '!' ]
24+
// values is: [ 'world' ]
25+
```
26+
27+
## MVP
28+
29+
- MVC 패턴의 변형
30+
> 이라지만 다른 점을 잘 모르겠음, 알고 싶지도 않은 느낌?
31+
> 초면이라 그런가
32+
33+
## MVVM
34+
35+
- MVC와 MVP를 기반으로 하는 아키텍처 패턴
36+
- 애플리케이션의 UI 개발 부분과 비즈니스 로직, 동작을 명확하게 분리
37+
38+
- 다른 것들과 달리 뷰가 능동적
39+
- 데이터 바인딩, 이벤트, 동작들을 포함하고 있어 뷰모델에 대한 이해를 필요로 하기 때문
40+
- 상태를 관리할 책임이 없음. 뷰는 뷰모델과 정보 또는 상태를 항상 동기화된 상태로 유지함
41+
42+
- 뷰모델
43+
- 모델과 뷰모델의 속성은 양방향 데이터 바인딩을 통해 동기화되고 업데이트됨
44+
45+
- MVC와는 다르게 전체 모델을 뷰에 노출하지 않음
46+
- 이는 애플리케이션의 복잡도에 따라 보안 및 성능에 문제를 일으킬 수 있음
47+
48+
## 최신
49+
50+
- Vue.js는 공식적으로 뷰모델을 사용하는 MVVM 패턴이라고 주장함
51+
- 리액트는 이 패턴들로 볼 수 없음
52+
53+
## 마치며
54+
55+
- 개별 컴포넌트를 구성할 때 뷰모델이나 모델의 개념을 적용해 컴포넌트의 뷰를 구성하는 데에 도움이 될 수 있음

0 commit comments

Comments
 (0)