๐Babel & Webpack
|Babel — ๋ฒ์ ๋ค์ด๊ทธ๋ ์ด๋ ๋๊ตฌ
“JavaScript compiler”
ES6 ์ดํ ๋ฒ์ ์ ES5 ๋ฒ์ ์ดํ๋ก ๋ค์ด๊ทธ๋ ์ด๋!
- ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript 2015+ ์ฝ๋๋ฅผ ์ด์ ๋ฒ์ ์ผ๋ก ๋ฒ์ญ/๋ณํํด ์ฃผ๋ ๋๊ตฌ
- ๊ณผ๊ฑฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํํธํ์ ํ์คํ์ ์ํฅ์ผ๋ก ์ฝ๋์ ์คํํธ๋ผ์ด ๋งค์ฐ ๋ค์
- ์ด ๋๋ฌธ์ ์ต์ ๋ฌธ๋ฒ์ ์ฌ์ฉํด๋ ์ด์ ๋ธ๋ผ์ฐ์ ํน์ ํ๊ฒฝ์์ ๋์ํ์ง ์๋ ์ํฉ์ด ๋ฐ์
- ์์ ์ฝ๋(์ต์ ๋ฒ์ )๋ฅผ ๋ชฉ์ ์ฝ๋(๊ตฌ ๋ฒ์ )๋ก ์ฎ๊ธฐ๋ ๋ฒ์ญ๊ธฐ๊ฐ ๋ฑ์ฅํ๋ฉด์ ๊ฐ๋ฐ์๋ ๋ ์ด์ ๋ด ์ฝ๋๊ฐ ํน์ ๋ธ๋ผ์ฐ์ ์์ ๋์ํ์ง ์๋ ์ํฉ์ ๋ํด ํฌ๊ฒ ๊ณ ๋ฏผํ์ง ์์ ์ ์๊ฒ ๋จ
|Webpack — “ํ์ผ ๋ฒ๋ค๋ง ๋๊ตฌ”, ๋ฒ๋ค๋ง === ํฉ์น๋ค!
“static module bundler”
- ๋ชจ๋ ๊ฐ์ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋๊ตฌ
- ํ๋ก์ ํธ์ ํ์ํ ๋ชจ๋ ๋ชจ๋์ ๋งคํํ๊ณ ๋ด๋ถ์ ์ผ๋ก ์ข ์์ฑ ๊ทธ๋ํ๋ฅผ ๋น๋ํจ
|Static Module Bundler
- ๋ชจ๋์ ๋จ์ง ํ์ผ ํ๋๋ฅผ ์๋ฏธ (ex. js ํ์ผ ํ๋ === ๋ชจ๋ ํ๋)
- ๋ฐฐ๊ฒฝ
- ๋ธ๋ผ์ฐ์ ๋ง ์กฐ์ํ ์ ์์๋ ์๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ๊ด๋ จ ๋ฌธ๋ฒ ์์ด ์ฌ์ฉ ๋จ
- ํ์ง๋ง JS์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์กํด์ง๊ณ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ์ ์ญ scope๋ฅผ ๊ณต์ ํ๋ ํํ์ ๊ธฐ์กด ๊ฐ๋ฐ ๋ฐฉ์์ ํ๊ณ์ ์ด ๋๋ฌ๋จ
- ๊ทธ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์ด ํ์ํ ๋ชจ๋์ ์ธ์ ๋ ์ง ๋ถ๋ฌ์ค๊ฑฐ๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๋จ์๋ก ์์ฑํ๋ ๋ฑ์ ๋ค์ํ ์๋๊ฐ ์ด๋ฃจ์ด์ง —>๋ชจ๋ === ํ์ผ!
- ์ฌ๋ฌ ๋ชจ๋ ์์คํ
- ESM(ECMA Script Module)
- AMD(Asynchronous Module Definition)
- CommonJS
- UMD(Universal Module Definition)
|Module ์์กด์ฑ ๋ฌธ์ —>Webpack์ ํตํด ํด๊ฒฐ!
- ๋ชจ๋์ ์๊ฐ ๋ง์์ง๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํน์ ๋ชจ๋ ๊ฐ์ ์์กด์ฑ(์ฐ๊ฒฐ์ฑ)์ด ๊น์ด์ง๋ฉด์ ํน์ ํ ๊ณณ์์ ๋ฐ์ํ ๋ฌธ์ ๊ฐ ์ด๋ค ๋ชจ๋ ๊ฐ์ ๋ฌธ์ ์ธ์ง ํ์ ํ๊ธฐ ์ด๋ ค์
- ์ฆ, Webpack์ ์ด ๋ชจ๋ ๊ฐ์ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅ
|Static Module Bundler
- ๋ชจ๋ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๋ ์์ ์ Bundling์ด๋ผ ํจ
- ์ด๋ฌํ ์ผ์ ํด์ฃผ๋ ๋๊ตฌ๊ฐ Bundler์ด๊ณ , Webpack์ ๋ค์ํ Bundler ์ค ํ๋
- ์ฌ๋ฌ ๋ชจ๋์ ํ๋๋ก ๋ฌถ์ด์ฃผ๊ณ ๋ฌถ์ธ ํ์ผ์ ํ๋(ํน์ ์ฌ๋ฌ ๊ฐ)๋ก ํฉ์ณ์ง
- Bundling๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ ์ด์ ์์์ ์ํฅ์ ๋ฐ์ง ์๊ณ ๋์ํ๊ฒ ๋จ
- snowpack, parcel, rollup.js ๋ฑ์ webpack ์ด์ธ์๋ ๋ค์ํ ๋ชจ๋ ๋ฒ๋ค๋ฌ ์กด์ฌ
- Vue CLI๋ ์ด๋ฌํ Babel, Webpack์ ๋ํ ์ด๊ธฐ ์ค์ ์ด ์๋์ผ๋ก ๋์ด ์์
|node-module์ ์์กด์ฑ ๊น์ด
|Webpack
๋ค ํฉ์ณ์ ํ๋๋ก ๋ง๋ค๊ฒ ๋ค!
|์ ๋ฆฌ
- Node.js
- JavaScript Runtime Environment
- JavaScript๋ฅผ ๋ธ๋ผ์ฐ์ ๋ฐ์์ ์คํํ ์ ์๋ ์๋ก์ด ํ๊ฒฝ
- Babel
- Compiler
- ES2015+ JavaScript ์ฝ๋๋ฅผ ๊ตฌ ๋ฒ์ ์ JavaScript๋ก ๋ฐ๊ฟ์ฃผ๋ ๋๊ตฌ
- Webpack
- Module Bundler
- ๋ชจ๋ ๊ฐ์ ์์กด์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋๊ตฌ
|Vue ํ๋ก์ ํธ ๊ตฌ์กฐ
|node_modules, public/index.html
- node_modules — Django์ venv, ์ฉ๋์ด ์ปค์ ๊ณต์ ์ ์ง์ธ ๊ฒ!
- node.js ํ๊ฒฝ์ ์ฌ๋ฌ ์์กด์ฑ ๋ชจ๋
- public/index.html
- Vue ์ฑ์ ๋ผ๋๊ฐ ๋๋ ํ์ผ
- ์ค์ ์ ๊ณต๋๋ ๋จ์ผ html ํ์ผ
|src/assets, src/components, src/App.vue
- src/assets
- webpack์ ์ํด ๋น๋ ๋ ์ ์ ํ์ผ ex)์ด๋ฏธ์งํ์ผ
- src/components
- ํ์ ์ปดํฌ๋ํธ๋ค์ด ์์น
- src/App.vue
- ์ต์์ ์ปดํฌ๋ํธ
|babel.config.js, package.json
- babel.config.js
- babel ๊ด๋ จ ์ค์ ์ด ์์ฑ๋ ํ์ผ
- package.json -->Django์ requirements.txt ์ญํ !
- ํ๋ก์ ํธ์ ์ข ์์ฑ ๋ชฉ๋ก๊ณผ ์ง์๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๊ตฌ์ฑ ์ต์ ์ด ํฌํจ
|package-lock.json
- package-lock.json
- node_modules์ ์ค์น๋๋ ๋ชจ๋๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ์์กด์ฑ์ ์ค์ ๋ฐ ๊ด๋ฆฌ
- ํ์ ๋ฐ ๋ฐฐํฌ ํ๊ฒฝ์์ ์ ํํ ๋์ผํ ์ข ์์ฑ์ ์ค์นํ๋๋ก ๋ณด์ฅํ๋ ํํ
- ์ฌ์ฉ ํ ํจํค์ง์ ๋ฒ์ ์ ๊ณ ์
- ๊ฐ๋ฐ ๊ณผ์ ๊ฐ์ ์์กด์ฑ ํจํค์ง ์ถฉ๋ ๋ฐฉ์ง
'Development > Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Vue.js - Vue Router (0) | 2022.05.09 |
---|---|
Vue.js - Pass Props & Emit Events (0) | 2022.05.09 |
Vue.js - Vue CLI (0) | 2022.05.09 |
Vue.js - SFC(Single File Component) (0) | 2022.05.09 |
Vue.js - Lifecycle Hooks (0) | 2022.05.07 |
๋๊ธ