1. ํด๋ผ์ด์ธํธ ๋น๋
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ ์ธก ์ฝ๋(HTML, CSS, JavaScript ๋ฑ)๋ฅผ ์ค๋นํ๋ ๊ณผ์ ์ด๋ค. ์์ค ์ฝ๋์ ์ปดํ์ผ, ๋ฒ๋ค๋ง, ๋ณํ, ์ต์ ํ, ํ ์คํธ, ๋ฐฐํฌ ๋ฑ์ ํฌํจํ๋ค. ์ด ๋ ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น ์ฑ์ ์ ๊ณตํ ์ ์๋๋ก ์ฌ๋ฌ ๊ธฐ์ ์ด ์ ์ฉ๋๋ค.
2. ๋น๋ ๊ณผ์ (w/Babel&Webpack)
- ์ปดํ์ผ(Compilation): Sass โ CSS, TypeScript โ JavaScript, ES6+ โ ES5 ์ดํ(transpiling). ์์ค ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํ.
- ๋ฒ๋ค๋ง(Bundling): ๋ชจ๋ ์ฝ๋, ์์ ๋ฐ ์์กด์ฑ์ ํ๋์ ๋ฒ๋ค๋ก ๊ฒฐํฉํ๋ ์์ . ์๊ฒ ๋ถํ ๋ ์ฝ๋ ๋ชจ๋(code splitting)๊ณผ ์์๋ค๋ก ์ง์ ์ (entry point)์ ๊ธฐ์ค์ผ๋ก ํ ์์กด์ฑ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํจ. ์ด ๋ ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ ๋ฒ๋ค์ ํฌํจ๋์ง ์์(tree shaking). ๋ํ HTML, ์ด๋ฏธ์ง, ํฐํธ, ํ์ผ ๋ฑ์ ์ ์ ์์ฐ๋ ํฌํจํจ. node_modules ํด๋๋ ๋ฒ๋ค๋ง์์ ์ ์ธ๋๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์ ์ผ๋ก ํ์ํ ๋ชจ๋๋ง ํธ๋ฆฌ์ ํฌํจ๋จ. ๊ทธ๋ฆฌ๊ณ node_modules ๋ด์ ํจํค์ง์ ์ด๊ธฐ ๋ก๋ฉ์ ํ์์น ์์ ๋ชจ๋์ ๋ฐํ์์ ํ์์ ๋์ ์ผ๋ก ๋ถ๋ฌ์ค๊ฒ ๋จ(Lazy Loading).
- ์ต์ ํ(Optimization): ๋ฒ๋ค๋ง์์ ์ ์ฉ๋ ์ฝ๋ ์คํ๋ฆฌํ , ํธ๋ฆฌ ์ ฐ์ดํน ๋ฑ์ ๊ธฐ๋ฒ๊ณผ ๊ฐ์ข ํ์ผ ์์ถ์ผ๋ก ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์. ์ฌ๊ธฐ์๋ ์นํฉ์ UglifyJS ํ๋ฌ๊ทธ์ธ(JS ์์ถ), ์ด๋ฏธ์ง ์ต์ ํ ๋๊ตฌ, CSS ์์ถ ๋๊ตฌ ๋ฑ์ด ์ฌ์ฉ๋จ.
- ์บ์ฑ(Caching): ์ด์ ์ ๋ค์ด๋ก๋ํ ํ์ผ์ ์ฌ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์์ฒญ์ ์ค์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ๋น๋ ์๊ฐ์ ์ต์ ํ.์๋ฒ ์ค์ ์ด๋ ์น ์๋น์ค ์์ปค๋ฅผ ํตํด ์ฒ๋ฆฌ๋จ.
- ํด๋ฆฌํ ์ ์ฉ
- ์ฝ๋ ์คํ
3. ์ค์์ฑ
- ์ฑ๋ฅ ์ต์ ํ: ์ฝ๋๋ฅผ ์์ถํ๊ณ ์๊ฒ ๋ฒ๋ค๋งํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ต์ ํ. ์์ ํ์ผ์ ์ต์ํ์ ์๋ก ์์ฒญํ์ฌ ๋น ๋ฅธ ํ์ด์ง ๋ก๋ฉ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํจ
- ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ๋ฌธ์ ํด๊ฒฐ: ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ๋์ํ ์ ์๋๋ก ์ฝ๋์ ํธํ์ฑ์ ๋์
- ๊ฐ๋ฐ ํจ์จ์ฑ: ๋น๋ ํ๋ก์ธ์ค ์๋ํ๋ก ๊ฐ๋ฐ ์นํ์ ์
- ๋๋ฒ๊น ๋ฐ ํ ์คํธ: ํ ์คํธ ๋ฒ์ ์ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ๋๋ฒ๊น ๋ฐ ํ ์คํธ๋ฅผ ์ฉ์ดํ๊ฒ ํจ์ผ๋ก์จ ์ฝ๋ ํ๋ฆฌํฐ ํฅ์
4. ๋น๋ ๋๊ตฌ
1) ๋ฐ๋ฒจ(Babel)
- ์ปดํ์ผ๋ฌ(Compiler):
- ๊ณ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ์ ์์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋ฒ์ญํ๋ ์ญํ
- ๋ฐ๋ฒจ์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ๋์ํ ์ ์๋ ์ฝ๋๋ก ๋ณํํด์ฃผ๋ ๋๊ตฌ. ๊ณผ๊ฑฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ ์ ์ง์ํ์ง ์๋ ๋ธ๋ผ์ฐ์ ์์๋ ์ต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค
- ๊ธฐ๋ฅ:
- ํธ๋์คํ์ผ๋ง(Transpiling): ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ์ฝ๋๊ฐ ์คํ๋ ์ ์๋๋ก ์ต์ JavaScript ๋ฌธ๋ฒ์ผ๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ํ์ ๋ฒ์ ์ JavaScript๋ก ๋ณํํ๋ ๊ณผ์
- ํด๋ฆฌํ(Polyfilling): ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์๋ ์ต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํจ. ์๋ฅผ ๋ค์ด, Promise, fetch API ๋ฑ์ ์ต์ ๋ฉ์๋๋ฅผ ํจ์๋ก ๊ตฌํํ์ฌ ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ ์ํฉ์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํจ
- ์ค์ ํ์ผ (`.babelrc`)
2) ์นํฉ(Webpack)
- ๋ฒ๋ค๋ฌ(Bundler):
- ์ฌ๋ฌ ๊ฐ์ ๋ชจ๋์ ํ๋๋ก ๋ฌถ์ด์ฃผ๋ ๋๊ตฌ. ๊ฐ ํ์ผ์ด๋ ๋ชจ๋๊ฐ์ ์์กด์ฑ์ ํ์ ํ์ฌ ํ๋์ ๋ฒ๋ค๋ก ๋ง๋ค์ด์ค์ผ๋ก์จ ์ฌ๋ฌ ๊ฐ์ ํ์ผ์ ํ๋๋ก ํฉ์น๊ณ , ํ๋ก์ ํธ์ ๊ตฌ์กฐ๋ฅผ ๋จ์ํํจ.
- ์นํฉ์ ๋ชจ๋ ๋ฒ๋ค๋ฌ๋ก, ํ๋ก์ ํธ์ ๋ชจ๋ ์์์ ๋ชจ๋๋ก ๋ณด๊ณ ๊ทธ ์์กด ๊ด๊ณ๋ฅผ ํ์ ํ์ฌ ํ๋ ๋๋ ์ฌ๋ฌ ๊ฐ์ ๋ฒ๋ค ํ์ผ๋ก ๋ฌถ์ด์ฃผ๋ ์ญํ ์ ํจ. ์ด๋ฅผ ํตํด ํ์ํ ๋ชจ๋ ํ์ผ๋ค์ ๊ด๋ฆฌํ๊ณ , ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ ์ ์๋ ์ ์ ํ์ผ๋ก ๋ณํํด ์ค.
- ๊ธฐ๋ฅ: ๋ค์ํ ๊ธฐ๋ฅ์ ํตํด ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ง์ํจ
- ๋ชจ๋ ๋ฒ๋ค๋ง(Module Bundling): ํ๋ก์ ํธ์ ๋ชจ๋ ์์์ ๋ชจ๋๋ก ์ทจ๊ธํ๊ณ , ๊ทธ ์์กด ๊ด๊ณ๋ฅผ ํ์ ํ์ฌ ๋ฒ๋ค ํ์ผ๋ก ๋ฌถ์ด์ค
- ์ฝ๋ ๋ถํ (Code Splitting): ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋๋ฅผ ์ฌ๋ฌ ์ฒญํฌ(chunk)๋ก ๋ถํ ํ์ฌ ๋ก๋ฉ ์ฑ๋ฅ์ ์ต์ ํํจ
- ํธ๋ฆฌ ์ ฐ์ดํน(Tree Shaking): ์ฌ์ฉ๋์ง ์๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์ต์ํํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํจ. ์ด๋ฅผ ํตํด ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๊ณ ์ต์ข ๋ฒ๋ค์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์
- ๋ ์ด์ง ๋ก๋ฉ(Lazy Loading): ์ฝ๋ ์คํ๋ฆฌํ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ํจ๊ณผ์ ์. ํ์ํ ์์ ์๋ง ๋ชจ๋์ ๋ก๋ฉํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ ์ค์ฌ์ฃผ๋ ์ญํ ์ ํจ
- ๋ก๋ ํ๋ฌ๊ทธ์ธ(Loader Plugin): ๋ค์ํ ๋ก๋์ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ํ๋ก์ ํธ์ ํ์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ํ์ฅํ ์ ์๊ฒ ํจ
- ์ค์ ํ์ผ (`webpack.config.js`)
3) Parcel
์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฒ๋ค๋ฌ
5. ๋น๋ ๋ฐฉ์
- ์ ์ ๋น๋(Static Build): ์์ค ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ, ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ณํ์ง ์๋ ๋ฐฉ์
- ๋์ ๋น๋(Dynamic Build): ์์ค ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ค์ ์์ฑ๋๋ ๋ฐฉ์
6. ๊ฐ์ด ๋ณด๊ธฐ
- ํ๋ฆฌํฐ์ด(Prettier): ์ฝ๋ ํฌ๋งคํฐ
- ๋ฆฐํธ(Lint): ์น ํ์ค ์ค์๋ฅผ ์ํ ์ ์ ๋ถ์ ๋๊ตฌ. ESLink๋ JS์ฉ ๋ฆฐํธ
'BIGMAP DRAFTS๐คฟ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ก๊ทธ์ธ (0) | 2024.04.03 |
---|---|
ํด๋ฆฐ์ฝ๋ (0) | 2024.04.03 |
์ ์์ผ (0) | 2024.04.03 |
๋๊ธ