๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“  archive29

[Vue.js ์ƒํƒœ๊ด€๋ฆฌ 2ํŽธ] Vuex ๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๐Ÿ“Œ Vuex ๋ž€? Vuex ๋Š” vue ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ณต์‹ ์ง€์›ํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์•™์— ์ง‘์ค‘๋˜์–ด์žˆ๋Š” ๋•๋ถ„์— ๋ฐ์ดํ„ฐ๋ฅผ props ์™€ event emit ์œผ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค๊ณผ ํ†ต์‹ ํ•˜๋Š” ๋ณต์žก๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Vuex๋ฅผ ์™œ ์จ์•ผ ํ• ๊นŒ? ์•ฑ์ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๊ณผ์ • ์šฐ๋ฆฌ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด view, state, actions ์˜ ํ๋ฆ„์œผ๋กœ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • action ์„ ์ทจํ•˜๋ฉด ๊ทธ์— ๋”ฐ๋ผ state ๊ฐ€ ๋ฐ”๋€Œ๊ณ  ์ด๊ฒƒ์ด view ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์€ view ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ state ๋Š” ์ปดํฌ๋„ŒํŠธ์— ์ข…์†๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋Œ€๊ทœ๋ชจ ์•ฑ์—์„œ๋Š”? ์ž‘์€ ํฌ๊ธฐ์˜ ์•ฑ์ด๋ผ๋ฉด.. 2022. 3. 7.
[Vue.js ์ƒํƒœ๊ด€๋ฆฌ 1ํŽธ] Vue.Observable ์„ ํ†ตํ•œ ์ƒํƒœ๊ด€๋ฆฌ ๐Ÿ“Œ Vue.Observable? Vue 2.6 ๋ฒ„์ „๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์‘ํ˜•์œผ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ด๋ฅผ ํ™œ์šฉํ•œ ๊ฐ„๋‹จํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Store ํŒจํ„ด ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ๊ฐ„๋‹จํ•œ counter ์•ฑ์„ ํ†ตํ•ด์„œ Vue.observable ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด count ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด count ๊ฐ€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. {{ count }} ํด๋ฆญ ํ˜„์žฌ ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ ๊ฐ’์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” count ๊ฐ’์„ ์ „์—ญ์—์„œ ๊ด€๋ฆฌํ•˜๋„๋ก ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € store ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  index.js ํŒŒ์ผ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. import Vue f.. 2022. 3. 7.
[Vue.js] $el ์˜ต์…˜์€ ๋ฌด์—‡์ผ๊นŒ? ๐Ÿ“Œ el ์˜ต์…˜์ด๋ž€? Vue ๋ผ์ดํ”„ ์‚ฌ์ดํด ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ ์ƒ์†Œํ•œ el ์˜ต์…˜์ด ํŠ€์–ด๋‚˜์™€์„œ ํ•œ๋ฒˆ ์ฐพ์•„๋ดค์Šต๋‹ˆ๋‹ค. el ์˜ต์…˜์€ Vue ์ปดํฌ๋„ŒํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์˜ต์…˜์œผ๋กœ ๋งˆ์šดํŒ… ํฌ์ธํŠธ๋ฅผ ๊ฒฐ์ • ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ el ์˜ต์…˜์€ new ๋ฅผ ํ†ตํ•œ Vue ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์‹œ์—๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ el ์˜ต์…˜ ์‚ฌ์šฉ ์˜ˆ์‹œ {{message}} el ์—๋Š” querySelector ์™€ ๊ฐ™์ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง€์ •๋œ ์š”์†Œ์— Vue ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ template ์˜ต์…˜์ด๋‚˜ render ํ•จ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ์ง€์ •๋œ DOM ์š”์†Œ ๋‚ด๋ถ€ ๋‚ด์šฉ์ด ๋ Œ๋”๋ง ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์˜ˆ์‹œ์˜ ๊ฒฝ์šฐ message ๋‚ด์šฉ์ด p ํƒœ๊ทธ์— ๋‘˜๋Ÿฌ์‹ธ์—ฌ ๋ Œ๋”๋ง ๋˜๊ฒ ๋„ค์š”. ๐Ÿ“Œ $mount ๋ฉ”์„œ๋“œ๋ž€? el ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  $mount ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํŠน์ •ํ•œ ๋ชฉ์ ์œผ.. 2022. 3. 1.
[Vue.js] ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ๋ณด๋Š” ๋™์  ์ปดํฌ๋„ŒํŠธ ๐Ÿ“Œ Vue ๋™์  ์ปดํฌ๋„ŒํŠธ ์ด๋ฒˆ์— ์‚ฌ๋‚ด์—์„œ ๊ฐœ๋ฐœํ•˜๋Š” ์•ฑ์˜ ํ™”๋ฉด ํŽธ์ง‘ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ๋™์  ์ปดํฌ๋„ŒํŠธ ์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŽธ์ง‘ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ƒํ’ˆ ์นด๋“œ์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š”๋ฐ, ํ™”๋ฉด ๋ฆฌํ”„๋ ˆ์‹œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  DOM ์˜ ์ˆœ์„œ๋ฅผ ์กฐ์ž‘ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ๋™์  ์ปดํฌ๋„ŒํŠธ ์˜€์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋™์  ์ปดํฌ๋„ŒํŠธ๋ž€? ๋™์  ์ปดํฌ๋„ŒํŠธ ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๋ Œ๋”๋ง๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ์„œ๋กœ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งˆ์šดํŠธ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํด๋ฆญ ๋™์ž‘ ์˜ˆ์‹œ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. component ์˜ is ์†์„ฑ์— ๋ Œ๋”๋งํ•˜๊ณ ์ž ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ง€์ •ํ•ด์„œ ๋™์ ์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2022. 3. 1.
[Vue.js] computed ์†์„ฑ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ ๋“ค Vue computed ์†์„ฑ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜ํ•  ์ ๋“ค ๐Ÿ’ก ๋ณธ ํฌ์ŠคํŠธ๋Š” Vue.js ์ฝ”์–ด ํŒ€ ์ผ์›์ธ Thorsten Lünborg ์ด ๊ธฐ๊ณ ํ•œ ๊ธ€์— ๊ทผ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ computed ์†์„ฑ์ด๋ž€? export default { name: "HelloWorld", data() { return { todos: [ { title: "wash dishes", done: true }, { title: "remove trash", done: false }, ], }; }, computed: { needTodos() { return this.todos.filter((todo) => !todo.done); }, }, }; Vue ์—์„œ computed ์†์„ฑ์€ data ์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋™์ ์œผ๋กœ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ์ด์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. .. 2022. 2. 23.
[Vue.js] Error Boundary ๋กœ ์—๋Ÿฌ ํ•ธ๋“ค๋งํ•˜๊ธฐ Vue ์—์„œ Error Boundary๋กœ ์—๋Ÿฌ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๐Ÿ“Œ Error Boundary ๋ž€? ์ด์ „์— ์ž ๊น React ๊ณต๋ถ€ํ•  ๋•Œ ๊ณต์‹ ๋ฌธ์„œ์— Error Boundary ๋ผ๋Š” ๊ธฐ๋ฒ•์ด ์†Œ๊ฐœ๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. Error Boundary ๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ(Error Boundary)๋ฅผ ๋งŒ๋“ค์–ด ์•ฑ์˜ ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Vue ์—๋„ ํ•ด๋‹น ๊ธฐ๋ฒ•์ด ์žˆ์„๊นŒ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ดค์—ˆ๋Š”๋ฐ ์ด๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๊ธ€์ด ์žˆ์–ด์„œ ์ •๋ฆฌํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ Vue ์—์„œ Error Boundary ์‚ฌ์šฉํ•˜๊ธฐ Vue 2.5 ๋ฒ„์ „์—์„œ๋Š” errorCaputred ๋ผ๋Š” ํ›…์„ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํ›…์—์„œ๋Š” ์ž์‹ ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ๋ฅผ ๊ฐ์ง€ํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Error B.. 2022. 2. 20.