๐Ÿ“• Language/Vue

[Vuejs] Webpack์ด๋ž€?

a n u e 2022. 7. 12. 17:24

 

 

Webpack์ด ๋ญ” ์ง€ ๊ฐ๋„ ์•ˆ์™”๋Š”๋ฐ, ์ •๋ง ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๊ธ€์„ ๋ฐœ๊ฒฌํ•˜์—ฌ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค. ์ถœ์ฒ˜๋Š” ํ•˜๋‹จ์—! ๐Ÿ˜Ž


Webpack?

๋ธŒ๋ผ์šฐ์ €๋Š” HTML, CSS, Javascript (์ฆ‰, ํ™•์žฅ์ž๊ฐ€ .html, .css, .js ์ธ ๊ฒƒ๋“ค)๋งŒ ์ธ์‹ํ•œ๋‹ค.

JSP๋Š” HTML ์ฝ”๋“œ ์•ˆ์— Java ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•จ์œผ๋กœ์จ, ์„œ๋ฒ„์—์„œ ๋™์  ์˜์—ญ์„ ์ฑ„์›Œ๋†“์€ HTML ์ฝ”๋“œ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ™•์žฅ์ž๊ฐ€ .jsp ์ด์–ด๋„, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ตœ์ข…์ ์œผ๋กœ๋Š” ํ•ด๋‹น ํŒŒ์ผ์„ HTML ํŒŒ์ผ๋กœ ์ธ์‹ํ•œ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, Vue.js๋Š” ํ™•์žฅ์ž๊ฐ€ .vue์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ธ์‹ํ•˜์—ฌ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ ์ผ๊นŒ?

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” .vue ํ™•์žฅ์ž๋ฅผ Javascript ํŒŒ์ผ๋กœ ์ธ์‹ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ , ์ด๋ฅผ ๊ฐ€๋Šฅ์ผ€ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ Webpack์ด๋ฉฐ, Webpack์€ Bundle์ด๋ผ๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ, .vue ํŒŒ์ผ์„ .js ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.

๊ทธ๋ž˜์„œ Webpack์€ Module Bundler๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

(vue cli๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ํŒฉ ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋œ๋‹ค.)


Webpack์ด Bundle์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์‹œ์ž‘์  ์—ญํ• ์„ ํŒŒ๋Š” ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค.

๊ทธ ํŒŒ์ผ์„ Entry File(์—”ํŠธ๋ฆฌ ํŒŒ์ผ)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํŒŒ์ผ์ด ์กด์žฌํ•œ๋‹ค๊ณ , ๋ฌด์กฐ๊ฑด ๋ฒˆ๋“ค๋ง์„ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—”ํŠธ๋ฆฌ ํŒŒ์ผ์„ ๊ธฐ์ ์œผ๋กœ ํ•˜์—ฌ ๋ฒˆ๋“ค๋ง ํ•ด์•ผํ•˜๋Š” ํŒŒ์ผ๋งŒ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

(๋ณดํ†ต main.js๊ฐ€ ์—”ํŠธ๋ฆฌ ํŒŒ์ผ ์—ญํ• ์„ ํ•œ๋‹ค. Vue ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์—ญํ• . vue.config.js์—์„œ ์—”ํŠธ๋ฆฌ ํŒŒ์ผ์„ ์ž„์˜๋กœ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.)

 

 

์‹ค์ œ๋กœ, ๋‚ด๊ฐ€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์…‹ํŒ…ํ•œ main.js๋ฅผ ๋ณด๋ฉด

import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import App from './App'
import BootStrapVue from 'bootstrap-vue-3';
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap-vue-3/dist/bootstrap-vue-3.css';
import router_main from './router/index.js'

//createRotuer : ์‹ค์ œ Vue Router ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์“ฐ์ด๋Š” function
const router = createRouter(
    {
        /** process.env.BASE_URL์€ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ "/"๋ฅผ ๊ฐ–๋Š”๋‹ค. 
         ๋‹ค๋งŒ, vue.config.js ํŒŒ์ผ์—์„œ ์ž„์˜๋กœ ์„ค์ • ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. */

                  //createWebHashHistory : Vue Router๋ฅผ ํ†ตํ•ด URL๋กœ ๋งคํ•‘๋œ vue ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ „ํ™˜ํ•  ์‹œ์— ํ•„์š”ํ•œ ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ ๊ธฐ๋ฒ•์„, ํ•ด์‹œํ˜•์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” function 
                  //createWebHistory : ๋˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๊ธฐ๋ฒ•. hash(#)๊ฐ€ ๋ถ™์ง€ ์•Š๋Š”๋‹ค.
        history : createWebHistory(process.env.BASE_URL),
        routes : router_main
    }
)

const app = createApp(App);
app.use(router);
app.use(BootStrapVue);

const instance = app.mount('#app');

export { app, instance };

 

createApp function์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒŒ, Vue Application ์ธ์Šคํ„ด์Šค

์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ, ์ „๋‹ฌ๋˜๋Š” ์ € App์ด๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” App.vue์ด๋ผ๋Š” ๋ชจ๋“ˆ(ํŒŒ์ผ)์ด๋‹ค.

์—”ํŠธ๋ฆฌ ํŒŒ์ผ์ด ๋ฒˆ๋“ค๋ง์˜ ์‹œ์ž‘์ ์„ ์•Œ๋ ค์ค€๋‹ค๋ฉด, App.vue ํŒŒ์ผ์€ .vue ํŒŒ์ผ๋“ค์˜ ์ง„์ž…์ ์„ ํ•ด์ฃผ๋Š” ์—ญํ• ์ด๋‹ค. (์—ฌ๊ธฐ์„œ ์•ฝ๊ฐ„ ๋ฉˆ์นซ ,,ใ…Ž ๊ทธ๋ƒฅ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๋ผ๋Š” ์˜๋ฏธ์ธ ๊ฒƒ ๊ฐ™๋‹ค.)

 

๋ชจ๋“  .vue ํ™•์žฅ์ž์ธ ํŒŒ์ผ๋“ค์ด ์ตœ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์ธ App.vue์— ๋ชจ์—ฌ, ์ด๋ฅผ main.js์— importํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ.

์ฆ‰, main.js์—์„œ๋Š” createApp function์„ ํ†ตํ•ด App.vue๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ํ•˜๋Š” app ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.


๋งˆ์ง€๋ง‰์œผ๋กœ, app.mount('#app'); ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ

์—ฌ๊ธฐ์„œ #app์ด๋ž€, ๋‹จ ํ•˜๋‚˜์˜ HTML ํŒŒ์ผ์ธ, index.html์˜ div ํƒœ๊ทธ์˜ id ๊ฐ’์ด๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ ๊ทธ๋ ค์ง€๋Š” ์ฝ”๋“œ๋Š” App.vue๊ฐ€ ๋  ๊ฒƒ.


 

 

Reference (๐Ÿ‘๐Ÿป)
 

[Vue.js_#03] N : 1 (feat. webpack)

0. ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ์‚ฌ์‹ค ์ €๋ฒˆ ํŽธ์— ์ด์–ด์„œ ์ด๋ฒˆ ํŽธ๋„ ์ข€ ์ง€๋ฃจํ•˜์ง€ ์•Š์„๊นŒ, ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ๋Œ€์ฒด Vue.js ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๋Š” ํฌ์ŠคํŒ…์ด๋ผ๊ณ  ํ•ด๋†“๊ณ  Vue.js๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ์„ค๋ช…์€ ์–ด๋”” ์žˆ

blinders.tistory.com