- ์ด๋ฏธ์ง, ๊ธ๋ก ์ด๋ฃจ์ด์ง ๋ธ๋ก๊ทธ
- Mock Service Worker (MSW)
- Rendering ์ต์ ํ
- Loading ์ต์ ํ
-
์ด๋ฏธ์ง ์ต์ ํ
- ์ด๋ฏธ์ง ์์ฒญ ์ ํ๋ผ๋ฏธํฐ๋ก ํด์๋ ์กฐ์
- Thumbnail 120KB โ 10KB
- Main 2MB โ 70KB
- ์ด๋ฏธ์ง ํ๋ฆฌ๋ก๋
- ๋ง์ฐ์ค ์ค๋ฒ๋๋ฉด ์ด๋ฏธ์ง ํ๋ฆฌ๋ก๋ โ ์ฌ์ฉ์๊ฐ ์์ธํ์ด์ง ์ ๊ทผ์ ๋ณด๋ค ๋น ๋ฅธ ๋ก๋ฉ์ ์ง์
- ์ด๋ฏธ์ง ์์ฒญ ์ ํ๋ผ๋ฏธํฐ๋ก ํด์๋ ์กฐ์
-
ํน์ ํจ์ ๋ณ๋ชฉํ์
- ํ ์คํธ์ ํน์๋ฌธ์๋ฅผ ์ ๊ฑฐํ๋ removeSpecialCharacter ์ต์ ํ
- Preview์์ ์ฐ์ด๋ ๋ด์ฉ ๋ชจ๋๋ฅผ ํจ์์ ๋ฃ์ ํ์๋ ์๊ณ ์ต๋ 300์๊น์ง๋ง ์ฒ๋ฆฌํ๋ฉด ๋จ.
- ๊ฐ๋ ์ฑ + ํจ์จ์ฑ์ ๋์ด๊ธฐ์ํด ์ ๊ท์์ผ๋ก ๋ณ๊ฒฝ
-
์ฝ๋ ์คํ๋ฆฌํ
- cra-bundle-analyzer๋ก View, List์ ๋ถํ์ํ ์คํฌ๋ฆฝํธ๊ฐ ๋ก๋๋จ์ ํ์ธํจ
- suspense์ lazy๋ฅผ ์ด์ฉํด์ View์ List๋ฅผ ๋์ ์ผ๋ก ์ํฌํธ
-
ํฐํธ ์ต์ ํ
- ํฐํธ ์ฌ์ด์ฆ ์ค์ด๊ธฐ
- ์นํฐํธ ํฌ๋งท(woff, woff2)๋ฅผ ์ง์ํ๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ ์ ์๋๋ก ํจ
- tff(2.1MB) โ woff2(512KB)
- ํฐํธ preload
- ์ด ์ฌ์ดํธ๋ ๊ธ์ด ์ค์ํ ์ฌ์ดํธ์ด๋ฏ๋ก ํฐํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ค์ด๋ฐ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ํ๋จ
- react-app-rewired๋ฅผ ์ด์ฉํ๋ฉด, CRA๋ก ๊ตฌ์ฑํ ํ๋ก์ ํธ์์ webpack ์ค์ ํ์ผ์ ์ ๊ทผํ์ฌ ์ปค์คํฐ๋ง์ด์งํจ
- preload-webpack-plugin๋ก ํฐํธ๋ฅผ preloadํจ
- ์ด ์ฌ์ดํธ๋ ๊ธ์ด ์ค์ํ ์ฌ์ดํธ์ด๋ฏ๋ก ํฐํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ค์ด๋ฐ๋ ๊ฒ์ด ์ค์ํ๋ค๊ณ ํ๋จ
- ํฐํธ ์ ์ฉ ์์
- font-display : block;์ผ๋ก FOIT๋ฅผ ์ ์ฉํจ
- ํฐํธ๋ฅผ ๋ฏธ๋ฆฌ ๋ค์ด๋ก๋ ๋ฐ๊ณ ํฐํธ๊ฐ ์ ์ฉ๋ ๊ธ์ ๋ณด์ฌ์ค
- ํฐํธ ์ฌ์ด์ฆ ์ค์ด๊ธฐ
-
์ต์ ํ ๊ฒฐ๊ณผ
Before After - React, Typescript
- styled-components
- MSW
- cra-bundle-analyzer, react-app-reweird, preload-webpack-plugin