Section4 Unit3 [React] ์ฌํ - Code Spliting, React.lazy() & Suspense
๐ Chapter3. React์ ์ฃผ๋ชฉํด์ผ ํ ๊ธฐ๋ฅ
์ฃผ๋ชฉํด์ผ ํ ๊ธฐ๋ฅ์ธ๊ฐ? ์ค๋ QnA ์ธ์ ์์ ์ธ๋ถ ๊ฐ์ฌ๋์ด Suspense๋ ์ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ํ์๊ธด ํ๋ค๋ง...๐
์ฌํผ, ๋ฌด๊ฑฐ์์ง ๋ฆฌ์กํธ ์ฑ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฒ์ ์ค์ํ ์ผ์์ ํ๋ฆผ์๋ค. ์ด ๋ถ๋ถ์ ์ข ๋ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ ํ ๊ฒ ๊ฐ์ง๋ง, ์ฐ์ ๋ฐฐ์ด ๋ด์ฉ๋ค๋ง ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด์๋ฉด ์๋์ ๊ฐ๋ค.
• React๋ SPA(Single-Page-Application)์ด๋ฏ๋ก ํ ๋ฒ์ ์ฌ์ฉํ์ง ์๋ ์ปดํฌ๋ํธ๊น์ง ๋ถ๋ฌ์ค๋ ๋จ์ ์ด ์๋ค. React.lazy ํจ์๋ฅผ ์ฌ์ฉํด ์ปดํฌ๋ํธ๋ฅผ ๋์ ์ผ๋ก import๋ฅผ ํ ์ ์๊ณ , ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๊ธฐ ๋ ๋๋ง ์ง์ฐ์๊ฐ์ ์ด๋ ์ ๋ ์ค์ผ ์ ์๊ฒ ๋๋ค.
import Component from './Component';
/* React.lazy๋ก dynamic import๋ฅผ ๊ฐ์๋๋ค. */
const Component = React.lazy(() => import('./Component'));
React.lazy๋ก ๊ฐ์ผ ์ปดํฌ๋ํธ๋ ๋จ๋ ์ผ๋ก ์ฐ์ผ ์๋ ์๊ณ , React.suspense ์ปดํฌ๋ํธ์ ํ์์์ ๋ ๋๋ง์ ํด์ผ ํ๋ค.
import { Suspense, lazy } from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
const Home = lazy(() => import('./routes/Home'));
const About = lazy(() => import('./routes/About'));
const App = () => (
<Router>
<Suspense fallback={<div>Loading...</div>}>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</Suspense>
</Router>
);
๋ผ์ฐํฐ๊ฐ ๋ถ๊ธฐ๋๋ ์ปดํฌ๋ํธ์์ ๊ฐ ์ปดํฌ๋ํธ์ React.lazy๋ฅผ ์ฌ์ฉํ์ฌ importํ๊ณ , Route ์ปดํฌ๋ํธ๋ค์ Suspense๋ก ๊ฐ์ผ ํ ๋ก๋ฉ ํ๋ฉด์ผ๋ก ์ฌ์ฉํ ์ปดํฌ๋ํธ๋ฅผ fallback ์์ฑ์ผ๋ก ์ค์ ํด ์ฃผ๋ฉด ๋๋ค. ์ด๊ธฐ ๋ ๋๋ง ์๊ฐ์ด ์ค์ด๋๋ ๋ถ๋ช ํ ์ฅ์ ์ด ์์ผ๋ ํ์ด์ง๋ฅผ ์ด๋ํ๋ ๊ณผ์ ๋ง๋ค ๋ก๋ฉ ํ๋ฉด์ด ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์๋น์ค์ ๋ฐ๋ผ์ ์ ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋ค.
๐๐ป ๋ฆฌ์กํธ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ ์ค๋ช ๊ณผ ๊ณผ์ ์ด ์์ธํ ๋์ ์์ด์ ์ดํดํ๋๋ฐ ๋์์ด ๋์๋ค.
๐ ์ค๋์ ํ๊ณ
๋งค์ผ ์งง๊ฒ๋ผ๋ ํ๋ฃจ๋ฅผ ๋ง๊ฐํ ์๊ฐ์ ์ฐ๋ ค๊ณ ํ๋๋ฐ, ์์ฆ์ ํด์ผํ ๊ณต๋ถ๊ฐ ๋ ๋ง์์ง ๊ฒ ๊ฐ์์ ํ๊ณ ์ธ ์๊ฐ๋ ์๋ ๊ฒ ๊ฐ๋ค. ์ ์ ์์ด ํ๋ค๋ณด๋ฉด ์ด๋๋ง ์๋ฒฝ..๐ซ ๋ฆฌ์กํธ ์ฌํ์ ๋ค์ด๊ฐ๋ ๋ ์ฌ๋ฏธ์๊ธฐ๋ ํ๋ฐ, ์ต์์น ์์ ๊ฐ๋ ์ด๋ผ ์ ์ํ๊ณ ํ์ฉํ ์๊ฐ์ด ํ์ํ ๊ฒ ๊ฐ๋ค. ์๋ก ํ๋ก์ ํธ๋ ๋ง๋ฌด๋ฆฌํ๋ ค ํ๋๋ฐ, ๋ค์ ๊ฑด๋๋ฆฌ์ง๋ ๋ชปํ๊ณ ์๋ ์ค์ด๋ค. ์ฃผ๋ง๋์ ๊ฐ๋ฅํ ๊น? ๋ฒ์จ ์์์ผ์ด ์ง๋๊ฐ๋ค๋.
'Frontend Dev > ๐ฅ ์ฝ๋์คํ ์ด์ธ FE ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section4 Unit4 [UX/UI] Design System (0) | 2023.07.21 |
---|---|
Section4 Unit3 [React] ์ฌํ - React Hooks ์ ์ฉํ๊ธฐ (0) | 2023.07.20 |
Section4 Unit3 [React] ์ฌํ - Virtual DOM๊ณผ React Hooks (0) | 2023.07.18 |
Section4 Unit2 [์๋ก ํ๋ก์ ํธ] COZ Shopping (0) | 2023.07.11 |
Section4 Unit1 [์๋ฃ๊ตฌ์กฐ/์๊ณ ๋ฆฌ์ฆ] ๊ธฐ์ด - Tree, Graph (0) | 2023.07.10 |