Skip to content

Commit 12374c9

Browse files
committed
12, 13
1 parent a61ed94 commit 12374c9

File tree

2 files changed

+149
-0
lines changed

2 files changed

+149
-0
lines changed

챕터_12/우창완.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
# 12. 리액트 디자인 패턴
2+
3+
4+
5+
## 12.2 고차 컴포넌트
6+
7+
고차컴포넌트 = wrapper 컴포넌트
8+
9+
개인적인 취향일 수 있지만, 고차 컴포넌트를 여러 개 쓰면 코드의 흐름과 디버깅이 복잡해져 즐겨 사용하지 않는다. 여러 고차 컴포넌트를 섞으면 더 흐름을 파악하기 어려워진다.
10+
11+
Wrapper hell 패턴을 유발할 수 있따.
12+
13+
14+
15+
## 12.3 렌더링 Props 패턴
16+
17+
prop이 복잡해지고, TypeScript 타입 복잡성과 추론 호환성이 좋지 않아 안티 패턴 같다.
18+
19+
```jsx
20+
<Title render={() => <h1>I am a render prop!</h1>} />
21+
```
22+
23+
24+
25+
26+
27+
### 12.3.2 컴포넌트의 자식으로 함수 전달하기
28+
29+
render로 children으로 전달하는 것보다 더 별로다
30+
31+
JSX 내부에 복잡한 함수 로직패턴이 있어야 할까? 가독성은 선호의 영역이라지만 관심사 분리도, 응집도가 떨어진다.
32+
33+
34+
35+
36+
37+
### 12.10.2 Preload + async 기법
38+
39+
async대신 defer도 고려하자. defer의 경우 async보다 더 빠르게 화면을 보여줄 수 있다.
40+
41+
```html
42+
<script src="some.js" defer></script>
43+
```
44+
45+
46+
47+
48+
49+
### 12.10.3 크롬 95+ 버전에서의 preload
50+
51+
preload가 리소스의 우선순위 큐를 무시하고 먼저 로드되는 "queue jumping" 현상이 있었지만, Chrome 95+ 버전부터는 더 이상 발생하지 않습니다. 현재는 `as` 속성에 따른 정상적인 우선순위를 따른다.
52+
53+
54+
55+
브라우저는 리소스 우선순위 체계를 가진다고 한다.
56+
57+
결국, 이 우선순위에 따라 순서를 배치하는 게 좋은 pratice
58+
59+
1. Highest
60+
61+
- 메인 문서 (HTML), CSS (@import 포함)
62+
63+
2. High
64+
65+
- 동기 자바스크립트 (`<script>`), 웹폰트, 뷰포트 내의 이미지
66+
67+
3. Medium
68+
69+
- 비동기 CSS
70+
- 일부 preload 리소스
71+
72+
4. Low
73+
74+
- 비동기 자바스크립트 (`async`, `defer`)
75+
- 이미지 preload. 뷰포트 밖의 이미지. prefetch 리소스
76+
77+
5. Lowest
78+
79+
- favicon, lazy loading 이미지
80+
81+
82+
83+
예를 들어, font preload는 css 보다 뒤에 배치하자
84+
85+
```html
86+
87+
<head>
88+
<!-- Critical CSS first -->
89+
<link rel="stylesheet" href="/styles.css">
90+
91+
<!-- Other resources -->
92+
93+
<!-- Fonts towards end of head -->
94+
<link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin>
95+
</head>
96+
```
97+
98+
99+
100+
101+
102+
## 12.11 리스트 가상화
103+
104+
사용자가 스크롤하는 영역만 동적으로 렌더링하는 최적화 기술
105+
106+
107+
108+
109+
110+
111+
112+
113+
114+
115+
116+
117+
118+
119+
120+
121+
122+
123+
124+
125+
126+
127+
128+
129+
130+
131+
132+
133+
134+
135+

챕터_13/우창완.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# 13. 렌더링 패턴
2+
3+
4+
5+
6+
7+
# 13.2~13.3 CSR과 SSR
8+
9+
SSR의 엄청난 팬은 아니지만, waterfall을 방지하여 렌더링을 빠르게 할 수 있다.
10+
11+
relay를 쓰면서 csr로도 충분히 좋은 성능을 실제로 경험할 수 있었고, 요즘은 페이지 loader에 대한 접근도 활발히 이루어지고 있다.
12+
13+
remix, tanstack router 등
14+

0 commit comments

Comments
 (0)