[Vue+Nuxt.js] Nuxt.js Data ํ˜ธ์ถœ ๋ฐฉ์‹๊ณผ API ์—ฐ๋™

2022. 5. 22. 03:55ใ†Front-End ์ž‘์—…์‹ค/Nuxt.js

728x90
๋ฐ˜์‘ํ˜•

 

Git Hub

 

 

 

 

ํ•œ ๊ถŒ์œผ๋กœ ๋ฐฐ์šฐ๋Š” Vue js 3 ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ธฐ์ดˆ ์‹ค์ „ (์˜์ง„์ฑ…)

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

๐Ÿ—‚ ๋ชฉ์ฐจ

โ— [Vue+Nuxt.js] Nuxt.js ๊ธฐ๋ณธ 
โ—[Vue+Nuxt.js] Nuxt.js ์‹œ์ž‘ํ•˜๊ธฐ 
โ— [Vue+Nuxt.js] Nuxt.js Data ํ˜ธ์ถœ ๋ฐฉ์‹๊ณผ API ์—ฐ๋™  
โ—[Vue+Nuxt.js] Nuxt.js๋ฅผ ์ด์šฉํ•˜์—ฌ ์‡ผํ•‘ ์ƒํ’ˆ ๋ชฉ๋ก ํŽ˜์ด์ง€์™€ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ฐœ๋ฐœ
โ— [Vue+Nuxt.js] Nuxt.js๋ฅผ ์ด์šฉํ•˜์—ฌ ์‡ผํ•‘ ์ƒํ’ˆ ๊ฒ€์ƒ‰ UI ๊ฐœ๋ฐœ
โ— [Vue+Nuxt.js] Vuex๋ฅผ ์ด์šฉํ•˜์—ฌ ์žฅ๋ฐ”๊ตฌ๋‹ˆ Page ๋งŒ๋“ค๊ธฐ

 

 

 

 

๐Ÿš€ API ์—ฐ๋™ํ•˜๊ธฐ

    ๐Ÿ”ฝ  Axios

        ๐Ÿ“ฆ Axios ์„ค์น˜ ๋ฐ API ํ˜ธ์ถœ

์ตœ์ดˆ Nuxt.js Root Path์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ axios๋ฅผ ์„ค์น˜ ํ•ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ช…๋ น์–ด

npm install axios

 

$npm install axios

 

 

/pages/main.vue

 

main.vue์— script ์ž…๋ ฅ๋ถ€์— ์œ„์™€ ๊ฐ™์ด `axios`๋ฅผ importํ•˜๊ณ , created()๋ฅผ ๋งŒ๋“ค์–ด `get`์œผ๋กœ Backend์—์„œ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค๊ฒŒ ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ

BackEnd๋Š” Mock ๋ฐฉ์‹์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์œผ๋ฉฐ, ํ•„์š”ํ•˜์‹  ๋ถ„๋“ค์€ ์ฃผ๋‹ˆํ•˜๋ž‘์˜ Git Page์—์„œ `backend` Package๋ฅผ ๋‚ด๋ ค๋ฐ›๊ธฐ ํ•˜์‹  ๋’ค Nuxt.js Package ์ตœ์ƒ๋‹จ์— ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋˜๊ณ , `backend` Package ์•ˆ์—์„œ `npm run dev`๋ฅผ ์ž…๋ ฅํ•˜์‹œ๋ฉด `Backend`๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

http:localhost:50540/main

Main Page๋ฅผ ๋“ค์–ด์™€๋ณด๋ฉด HTML์— ๋ณ„๋‹ค๋ฅธ ๋‚ด์šฉ์„ ๋„ฃ์–ด์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— `axios`๋ฅผ ํ†ตํ•ด ๋ถˆ๋Ÿฌ์˜จ Data๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋ฐ, ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํ™•์ธ์„ ํ•ด ๋ณด๋ฉด Data๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.




 

 

 

    ๐Ÿ”ฝ  Nuxt.js Port ๋ฐ ๋ฐ›์•„์˜จ Data ๋ฟŒ๋ ค์ฃผ๊ธฐ

        ๐Ÿ“ฆ Nuxt.js Port ๋ณ€๊ฒฝ

๋จผ์ € ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” Nuxt.js์— Port๋ฅผ ์ •์ ์œผ๋กœ ๋ฐ•์•„์ฃผ๋„๋ก ํ•ด ๋ณผ๊ฒŒ์š”.

`nuxt.config.js`์—์„œ ์ž‘์—…์„ ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

nuxt.config.js

 

39 ~ 41๋ฒˆ์งธ๋ฅผ ์ฃผ๋ชฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.
์œ„์™€ ๊ฐ™์ด server ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ , port๋ผ๋Š” ๊ฐ์ฒด์— port ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ•ด๋‹น ๋ฒˆํ˜ธ๋กœ Nuxt.js๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


์•„์ฃผ ์ž˜ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

 

        ๐Ÿ“ฆ Axios๋กœ ๋ฐ›์•„์˜จ Data ๋ฟŒ๋ ค์ฃผ๊ธฐ

/pages/main.vue

์ด๋ฒˆ์—๋Š” Axios๋ฅผ ํ†ตํ•ด https://localhost:3000/products์—์„œ get Method๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ Data๋ฅผ View์— ๋ฟŒ๋ ค์ฃผ๋Š” ์ž‘์—…์„ ํ•ด ๋ณผ ๊ฒƒ์ด์—์š”.

์ตœ์ดˆ Backend์—์„œ ๋ฐ›์•„์˜จ Data๋ฅผ `response`์— ๋‹ด๊ฒŒ 23๋ฒˆ์งธ ์ค„์— ์„ ์–ธ์„ ํ•ด ์ฃผ์—ˆ๊ณ , 27๋ฒˆ์งธ ์ค„์„ ๋ณด๋ฉด `response`์•ˆ์— `data`์— ๋‚ด์šฉ์„ `products` ํ•„๋“œ ๋ฐฐ์—ด ๋ณ€์ˆ˜์— ๋‹ด๊ฒŒ ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.


`Backend`์—์„œ ๋‹ด์•„์˜จ Data๋Š” ์šฐ๋ฆฌ๊ฐ€ ์„ ์–ธํ•œ ๊ฐ์ฒด ๋‚ด `data`๋ผ๋Š” ๊ณณ์— ๋‹ด๊ฒจ์˜ค๊ฒŒ ๋˜๋ฉฐ, ์ด `data` ๊ฐ์ฒด ์•ˆ์„ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ์ฒด๊ฐ€ ๋˜ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.

`main.vue`์˜ 17๋ฒˆ์งธ ~ 21๋ฒˆ์งธ๋ฅผ ์ฃผ๋ชฉํ•ด ๋ณด๋ฉด `data()` ์•ˆ์— return์„ ์„ ์–ธํ•˜๊ณ , ๊ทธ ๊ณณ์— `products`๋ผ๋Š” ๋นˆ ๋ฐฐ์—ด ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•ด ์ฃผ์—ˆ์–ด์š”. ๊ทธ๋Ÿฐ ๋’ค 27๋ฒˆ์งธ ์ค„์—์„œ `Backend`์—์„œ ์‘๋‹ต์œผ๋กœ ๋“ค์–ด์˜จ ๊ฐ’์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ์ด์—์š”.

5๋ฒˆ์งธ ~ 7๋ฒˆ์งธ ์ค„์„ ๋ณด๋ฉด `<div>` Tag๋กœ ๊ฐ์‹ธ์ค€ ๋’ค `products` ๊ฐ์ฒด ๋ฐฐ์—ด์— ๊ฐ’์„ ๋ฟŒ๋ ค์ฃผ๋„๋ก ํ•ด ์ฃผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ›์•„์˜จ Data๊ฐ€ ํ™”๋ฉด์— ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

/pages/main.vue

 

๊ฐœ๋ฐœ์ž ๋„๊ตฌ Console์— ๋‚˜์˜ค๋Š” ๊ฐ’ ์ค‘ ๋งจ ์•„๋ž˜๋ฅผ ๋ณด๋ฉด `[HMR]`์ด ๋‚˜์˜ค๋Š”๋ฐ, ์ด๋Š” `Hot Module Replacement`์˜ ์•ฝ์ž์ด๋ฉฐ, ๋‚ด๋ถ€์ ์œผ๋กœ Web Pack์ด ๋‹ค ๋Œ๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ธ ๊ฒƒ์ด์—์š”.

์ฐธ๊ณ ๋กœ ํ˜„์žฌ Page์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ํ•œ๋ฒˆ ๊นœ๋นก์ด๋Š” ํ˜„์ƒ์„ ๋งŒ๋‚  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋น„๋™๊ธฐ์ ์œผ๋กœ Data๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํŠน์„ฑ์œผ๋กœ ๋จผ์ € Data๋ฅผ ๋ถˆ์–ด์˜ค๊ธฐ ์ „์— ๋นˆ ๋ฐฐ์—ด์ด ๋จผ์ € ํ™”๋ฉด์— ๋ฟŒ๋ ค์ง€๊ฒŒ ๋˜๊ณ , ์ดํ›„์— Data๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฟŒ๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

 

 

๋ฐ˜์‘ํ˜•

 

    ๐Ÿ”ฝ  Data ํ˜ธ์ถœ

        ๐Ÿ“ฆ Data ํ˜ธ์ถœ ๋ฐฉ์‹

Nuxt.js ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ๋ฐฉ๋ฒ• ์ด๋ก ์€ `์ด ๊ณณ`์— ๋”ฐ๋กœ ์ค€๋น„ํ•ด ๋‘์—ˆ์–ด์š”.

 

์ตœ์ดˆ `asyncData()`๋ฅผ ํ•œ๋ฒˆ ์ด์šฉํ•ด ๋ณด๋„๋ก ํ• ๊ฒŒ์š”.

 

/pages/main.vue

`export default{}`์•ˆ ์ตœ์ƒ๋‹จ์— `acyncData()`๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ , ๊ธฐ์กด์— `created()`์— ์ ์—ˆ๋˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™€ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ์ด๋ ‡๊ฒŒ ํ•˜๊ณ , ์ €์žฅ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์–ด์š”.

โ€‹

 

Error๊ฐ€ ๋ฐœ์ƒํ•œ ์ด์œ ๋Š” ๋ฐ”๋กœ 22๋ฒˆ์งธ ์ค„์— `this` Keyword ๋•Œ๋ฌธ์ด์—์š”. 

`asyncData`๋Š” ๋น„๋™๊ธฐ๋กœ Data๋ฅผ ์š”์ฒญํ•˜๋Š” ์ฆ‰, ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ธ์Šคํ„ด์Šค ์†์„ฑ์ด์—์š”.


`asyncData()`๋Š” ํŠน์ • Page์— ์ง„์ž…ํ•˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. Page์— ์ง„์ž…ํ•˜๊ธฐ ์ „์— ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— `asyncData()` Logic์ด ์ž˜ ๋ชป ๋˜์—ˆ๋‹ค๋ฉด Page ์ง„์ž… ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ ํ•ด ์ง‘๋‹ˆ๋‹ค.

์ฆ‰, Page๊ฐ€ ๊ทธ๋ ค์ง€๊ธฐ ์ „์— ๋ถˆ๋ ค์ง€๋Š” Logic์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์€ Component๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์— Component๊ฐ€ ์ƒ์„ฑ๋œ ์ดํ›„์— ํ˜ธ์ถœ๋˜๋Š” `data()`, `created()`์™€ ๊ฐ™์€ ์นœ๊ตฌ๋“ค์ด ์กด์žฌํ•˜๊ธฐ ์ด ์ „์— ํ˜ธ์ถœ์ด ๋˜๊ณ , ์ด ๋•Œ๋ฌธ์— `data()`์— ๋งŒ๋“ค์—ˆ๋˜ `products:[]`๋Š” ์กด์žฌํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— `this` Keyword์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

`asyncData()`๋ฅผ ์‚ฌ์šฉํ•œ ๋’ค์— ํ•ด๋‹น Page์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜๋ฉด ํ™”๋ฉด ๊นœ๋นก์ž„๋„ ์ œ๊ฑฐ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
์ฆ‰, `asyncData()`๋ฅผ ์ด์šฉํ•˜๋ฉด Nuxt.js๊ฐ€ ์ถ”๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” SSR์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ณด๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

        ๐Ÿ“ฆ asyncData ์†์„ฑ ์ฃผ์˜์‚ฌํ•ญ

์ด๋ฒˆ์—๋Š” `ProductList.vue`๋ผ๋Š” Component๋ฅผ ํ•œ๋ฒˆ ๋งŒ๋“ค์–ด ๋ณผ๊ฒŒ์š”.

Component Package ๋ฐ‘์— `ProductList.vue`๋ฅผ ๋งŒ๋“ค๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด Code๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์—ˆ์–ด์š”.

/components/ProductList.vue

 

๊ทธ๋Ÿฐ ๋’ค `Main.vue`์—์„œ `ProductList.vue` Component๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์ด Code๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์—ˆ์–ด์š”.

/pages/main.vue

 

VS Code์—์„œ Compoent ์ด๋ฆ„์œผ๋กœ Tag๋ฅผ ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด ์ž๋™์œผ๋กœ import์™€ compoents๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

15๋ฒˆ์งธ ์ค„๊ณผ 18๋ฒˆ์งธ ์ค„์„ VS Code๊ฐ€ ์ž๋™์œผ๋กœ ์ž…๋ ฅํ•ด ์ค€ ๋‚ด์šฉ์ด์—์š”.


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด Code๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Error๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด์—์š”.
์™œ๋ƒํ•˜๋ฉด `main.vue`์—์„œ `ProductList.vue`๋ฅผ ๋ถˆ๋Ÿฌ์™”์ง€๋งŒ, `ProductList.vue`์—๋Š” ์•„๋ฌด ๋‚ด์šฉ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

์ด๋ฒˆ์—๋Š” `asyncData()`์˜ ์ฃผ์˜์ ์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด Code๋ฅผ ์ˆ˜์ • ํ•ด ๋ณด์•˜์–ด์š”.

/pages/main.vue

`main.vue`์— `asyncData()` ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ฃผ์„์ฒ˜๋ฆฌํ•˜๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด `ProductList.vue`์— ์˜ฎ๊ฒจ ์ฃผ์—ˆ์–ด์š”.


/components/ProductList.vue

์œ„์™€ ๊ฐ™์ด Code๋ฅผ ์ˆ˜์ •ํ•œ ๋’ค ์ €์žฅ์„ ํ•˜๊ณ  ์‹คํ–‰์„ ํ•˜๊ณ  ๋‚˜๋ฉด Error๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

http://localhost:4000/main


๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— Console์—์„œ ๋งจ ์œ— ๋ถ€๋ถ„์„ ๋ณด๋ฉด `Nuxt SSR`์ด๋ผ๊ณ  ํ‘œ์‹œ๊ฐ€ ๋˜๊ณ , ๊ทธ ๋‚ด์šฉ์„ ํŽผ์ณ๋ณด๊ธฐ ํ•˜๋ฉด ์œ„์™€ ๊ฐ™์ด Error๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” Nuxt ์ฆ‰, Server์—์„œ ๋‚˜๋Š” Error์ธ ๊ฒƒ์ด์—์š”.




์œ„์™€ ๊ฐ™์ด Error๊ฐ€ ๋‚˜๋Š” ์ด์œ ๋Š” ๊ฒฐ๋ก ์ ์œผ๋กœ `asyncData()`๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด
`console.log("asyncData Error ๋ฐœ์ƒ");'์„ ๋งŒ๋“ค์–ด ์ค€ ๋’ค ๋‹ค์‹œ ์‹คํ–‰ ํ•ด ๋ณด์•˜์–ด์š”.

/components/ProductList.vue


๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹คํ–‰ ํ•ด ๋ณธ ๋’ค ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ดํŽด ๋ณด์•˜์–ด์š”.

http://localhost:4000/main

๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์‚ดํŽด๋ณด๋‹ˆ log ์ฐ๋Š” ๋ถ€๋ถ„์— ์•„์˜ˆ ์ ‘๊ทผ ์กฐ์ฐจ ๋ชปํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

๊ทธ ์ด์œ ๋Š” `asyncData()`๋Š” ์œ„์—์„œ ์ด์•ผ๊ธฐ ํ•œ๋Œ€๋กœ `pages`๋ผ๋Š” Package ๋ฐ‘์— Component์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

์ด๋ฒˆ์— ์ฃผ๋‹ˆํ•˜๋ž‘์€ `components`๋ผ๋Š” Package ๋ฐ‘์— ์žˆ๋Š” Component์—์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

        ๐Ÿ“ฆ asyncData ์†์„ฑ ์ •๋ฆฌ

๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ๋ณด๋ฉด `asyncData()`๋Š” Page๊ฐ€ ๊ทธ๋ ค์ง€๊ธฐ ์ „์— Data๋ฅผ ๋ชจ๋‘ ๋ฐ›์•„์˜จ ๋’ค์— Page๋ฅผ ๊ทธ๋ฆฐ๋‹ค ํ˜น์€ ์ง„์ž…ํ•œ๋‹ค ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ต๋‹ˆ๋‹ค.


 

 

 

 

 

 

 

ํ•œ ๊ถŒ์œผ๋กœ ๋ฐฐ์šฐ๋Š” Vue js 3 ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ธฐ์ดˆ ์‹ค์ „ (์˜์ง„์ฑ…)

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

728x90
๋ฐ˜์‘ํ˜•