์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” Vue.js ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๋“ค์–ด๊ฐ€๋ฉฐ

๋ทฐ์˜ ์žฅ์ ์€ ๋น ๋ฅธ ํ”„๋กœํ†  ํƒ€์ดํ•‘์ž…๋‹ˆ๋‹ค. ๋ทฐ CLI๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜๋ฉด npm์œผ๋กœ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋น ๋ฅด๊ฒŒ ํ™•์žฅํ•ด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ณต์žกํ•ด์ง„ ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฒ ์ €ํžˆ ์ €์˜ ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์ด ๋ฐ˜์˜๋œ ํด๋” ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ๊ณ ํ•˜์‹œ๊ณ  ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์ทจํ•ด๊ฐ€์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :)

๋ทฐ CLI๋กœ ์ƒ์„ฑํ•œ ๊ธฐ๋ณธ ํด๋” ๊ตฌ์กฐ

๋ทฐ CLI 2.9 ๋ฒ„์ „์„ ์ด์šฉํ•˜์—ฌ webpack-simple ํ”„๋กœ์ ํŠธ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

vue init webpack-simple folder-structure

ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜๋ฉด ๊ธฐ๋ณธ์ ์ธ ํด๋” ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

.
โ”œโ”€ README.md
โ”œโ”€ index.html
โ”œโ”€ webpack.config.js
โ”œโ”€ package.json
โ””โ”€ src
   โ”œโ”€ main.js
   โ”œโ”€ App.vue
   โ””โ”€ assets
      โ””โ”€ logo.png

์œ„์™€ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ src ํด๋” ๋ฐ‘์— ํด๋”๋“ค์„ ์ถ”๊ฐ€ํ•ด๋‚˜๊ฐ‘๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์—์„œ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ณ„๋กœ ๊ตฌ๋ถ„ํ•œ ํด๋” ๊ตฌ์กฐ

์‹ค๋ฌด์—์„œ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•„์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์šฐํ„ฐ, ์ƒํƒœ ๊ด€๋ฆฌ, ํ•„ํ„ฐ, ๋‹ค๊ตญ์–ด, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ์„ ์ด์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํด๋”๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.
โ”œโ”€ README.md
โ”œโ”€ index.html
โ”œโ”€ webpack.config.js
โ”œโ”€ package.json
โ””โ”€ src
   โ”œโ”€ main.js
   โ”œโ”€ App.vue
   โ”œโ”€ components        ์ปดํฌ๋„ŒํŠธ
   โ”‚  โ”œโ”€ common
   โ”‚  โ””โ”€ ...
   โ”œโ”€ routes            ๋ผ์šฐํ„ฐ
   โ”‚  โ”œโ”€ index.js
   โ”‚  โ””โ”€ routes.js
   โ”œโ”€ views             ๋ผ์šฐํ„ฐ ํŽ˜์ด์ง€
   โ”‚  โ”œโ”€ MainView.vue
   โ”‚  โ””โ”€ ...
   โ”œโ”€ store             ์ƒํƒœ ๊ด€๋ฆฌ
   โ”‚  โ”œโ”€ auth
   โ”‚  โ”œโ”€ index.js
   โ”‚  โ””โ”€ ...
   โ”œโ”€ api               api ํ•จ์ˆ˜
   โ”‚  โ”œโ”€ index.js
   โ”‚  โ”œโ”€ users.js
   โ”‚  โ””โ”€ ...
   โ”œโ”€ utils             ํ•„ํ„ฐ ๋“ฑ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜
   โ”‚  โ”œโ”€ filters.js
   โ”‚  โ”œโ”€ bus.js
   โ”‚  โ””โ”€ ...
   โ”œโ”€ mixins            ๋ฏน์Šค์ธ
   โ”‚  โ”œโ”€ index.js
   โ”‚  โ””โ”€ ...
   โ”œโ”€ plugins           ํ”Œ๋Ÿฌ๊ทธ์ธ
   โ”‚  โ”œโ”€ ChartPlugin.js
   โ”‚  โ””โ”€ ...
   โ”œโ”€ translations      ๋‹ค๊ตญ์–ด
   โ”‚  โ”œโ”€ index.js
   โ”‚  โ”œโ”€ en.json
   โ”‚  โ””โ”€ ...
   โ”œโ”€ images            ์ด๋ฏธ์ง€
   โ”œโ”€ fonts             ํฐํŠธ
   โ””โ”€ assets            ๊ธฐํƒ€ ์ž์›

์œ„์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ES6์˜ Import & Export ๊ธฐ๋Šฅ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ  ๊ณ„์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์›นํŒฉ์˜ ๋ชจ๋“ˆ ๋กœ๋”ฉ์— ๋Œ€ํ•ด์„œ๋„ ์ดํ•ดํ•˜๊ณ  ๊ณ„์‹œ๋ฉด ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ข€ ๋” ์ˆ˜์›”ํ•˜๊ฒŒ ๋กœ๋”ฉํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, VSCode์˜ ํŒŒ์ผ ์•„์ด์ฝ˜ ํ…Œ๋งˆ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜์‹œ๋ฉด ๋” ์ˆ˜๋ คํ•˜๊ณ  ๊ฐ€๋…์„ฑ ๋†’์€ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :)

VSCode์—์„œ ํ™•์ธํ•œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๋งˆ๋ฌด๋ฆฌ

๊ฐ ํด๋”์˜ ์˜ˆ์‹œ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์œผ๋‚˜ ๊ธ€์ด ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ๊ฒƒ ๊ฐ™์•„ ๋‚˜์ค‘์— ๊ธฐํšŒ๊ฐ€ ๋˜๋ฉด ์˜คํ”ˆ์†Œ์Šค๋กœ ๊ณต๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ˜น์‹œ ํด๋” ๊ตฌ์กฐ์™€ ๊ด€๋ จํ•˜์—ฌ ๋” ๊ดœ์ฐฎ์€ ์˜๊ฒฌ์ด ์žˆ์œผ์‹œ๋ฉด ์•„๋ž˜์— ํŽธํ•˜๊ฒŒ ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š” :)

๊ทธ๋Ÿผ ์˜ค๋Š˜๋„ ์ฆ๊ฒ๊ฒŒ ์ฝ”๋”ฉํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค! โ€ป์ด๋ฏธ์ง€ ์ถœ์ฒ˜: ํŒจ์ŠคํŠธ ์บ ํผ์Šค Vue.js ๊ฐ•์˜

๊ธ€๋ณด๋‹ค ๋” ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์˜จ๋ผ์ธ ๊ฐ•์˜

์ข€ ๋” ์นœ์ ˆํ•˜๊ณ  ์ƒ์„ธํ•œ ์„ค๋ช…์„ ์›ํ•˜์‹ ๋‹ค๋ฉด ์•„๋ž˜ ๊ฐ•์ขŒ๋ฅผ ์ด์šฉํ•ด๋ณด์‹œ๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š” ๐Ÿ˜„

์ธํ”„๋Ÿฐ ์˜จ๋ผ์ธ ๊ฐ•์˜ : Vue.js ์‹œ์ž‘ํ•˜๊ธฐ / Vue.js ์ค‘๊ธ‰ / Vue.js ์™„๋ฒฝ ๊ฐ€์ด๋“œ
์ธํ”„๋Ÿฐ ์˜จ๋ผ์ธ ๊ฐ•์˜ : Vue.js ๋์žฅ๋‚ด๊ธฐ / ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์›นํŒฉ / PWA ์‹œ์ž‘ํ•˜๊ธฐ
์ธํ”„๋Ÿฐ ์˜จ๋ผ์ธ ๊ฐ•์˜ : ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ž…๋ฌธ / ์‹ค์ „ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ / Vue.js + TypeScript ์™„๋ฒฝ ๊ฐ€์ด๋“œ