Vue 9

[WEB] Virtual DOM์ด๋ž€?

ํ˜„์žฌ ํ”„๋ก ํŠธ ์—”๋“œ ์‹œ์žฅ์˜ ๋ฆฌ๋”๋Š”? ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ์‹œ์žฅ์€ react.js์™€ vue.js๊ฐ€ ์–‘๋ถ„ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋ณ€ํ™”ํ•˜๊ณ  ์žˆ๋‹ค. ์‚ฌ์žฅ๋˜๊ณ ์žˆ๋Š” angular๋Š” ์ •๋ง๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. npm์—์„œ ์‚ดํŽด๋ณธ ์ฃผ๊ฐ„ ๋‹ค์šด๋กœ๋“œ์ˆ˜. react๊ฐ€ ์••๋„์ ์œผ๋กœ ๋†’๊ณ , ๊ทธ ๋‹ค์Œ vue๊ฐ€ ๋”ฐ๋ฅธ๋‹ค. angular์™€ svelte๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋” ๋‹ค์šด๋กœ๋“œ ์ˆ˜๊ฐ€ ์ ๋‹ค. ํ™•์‹คํžˆ react์˜ ์ ์œ ์œจ์ด ์••๋„์ ์ธ ๋ชจ์Šต์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์š”์ฆ˜ ๋– ์˜ค๋ฅด๋Š” svelte๋„ ์•„์ง์€ ์ ์œ ์œจ์ด ๋งค์šฐ ๋‚ฎ๋‹ค. vue์™€ react๋Š” ๋ถ„๋ช…ํžˆ ๋‹ค๋ฅด์ง€๋งŒ, vue๊ฐ€ react์˜ ๊ฐœ๋…์„ ๋งŽ์ด ์ฐจ์šฉํ•œ ๊ฒƒ์ด ์‚ฌ์‹ค์ด๊ณ , ์ด๋Š” vue3์˜ composition api์˜ ๋„์ž…์œผ๋กœ react์—๊ฒŒ ํ•œ ๋ฐœ์ง ๋” ๊ฐ€๊นŒ์›Œ์กŒ๋‹ค. ์ด๋Ÿฐ vue์™€ react๊ฐ€ ..

Programming/Web 2022.03.27

[Vue.js] ref๋กœ width, height ๊ฐ€์ ธ์˜ค๊ธฐ

ref๋กœ width๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑธ ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. hihi ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด width๊ฐ€ ์ถœ๋ ฅ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ elem.value.style๋งŒ์„ ์ถœ๋ ฅํ•ด๋ณด๋ฉด.. ์ด๋ ‡๊ฒŒ ๋น„์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. style๋กœ ์„ค์ •ํ•ด์ค€ width๋Š” ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ clientHeight, clientWidth ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. {{elem.clientWidth}}

Programming/Vue.js 2022.02.01

[Vue.js, tiptap] Editor์—์„œ tab์„ ๋“ค์—ฌ์“ฐ๊ธฐ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

ํ•„์ž๋Š” Vue์—์„œ tiptap Editor๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ํ•œ๊ฐ€์ง€ ๋ถˆํŽธํ•œ ์ ์ด ์žˆ๋‹ค. ๋ฐ”๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค ๋ฌด์˜์‹์ ์œผ๋กœ tab์„ ์ž…๋ ฅํ•˜๋Š”๋ฐ, ๊ทธ๋Ÿฌ๋ฉด focus๊ฐ€ ์ด๋™ํ•ด๋ฒ„๋ฆฌ๋Š” ํ˜„์ƒ์ด๋‹ค. IDE๋“ค ์ฒ˜๋Ÿผ ๋“ค์—ฌ์“ฐ๊ธฐ(indentation)์ด ๋œ๋‹ค๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ... ํ•ด๊ฒฐํ•ด๋ด…์‹œ๋‹ค. 1. focus ๋ง‰๊ณ  tab์„ ๋„์›Œ์“ฐ๊ธฐ๋กœ ๊ต์ฒดํ•˜๊ธฐ ๋จผ์ € html์—์„œ ์–ด๋–ป๊ฒŒ tab์œผ๋กœ focus ์ด๋™์„ ๊ธˆ์ง€์‹œํ‚ค๋Š”์ง€ ์ฐพ์•„๋ณด์•˜๋Š”๋ฐ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋‹ค. 1. ์ด๋™ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ณณ์— tabindex=-1 ์†์„ฑ ์ถ”๊ฐ€ 2. keydown ์ด๋ฒคํŠธ๋ฅผ ์ฐพ์•„์„œ e.preventDefault() ๊ฑธ๊ธฐ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ํŒจ์Šค(๋ชจ๋“  elements์— ๊ฑธ์ˆ˜๋Š” ์—†์œผ๋‹ˆ). ๊ฝค๋‚˜ lowํ•œ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ 2๋ฒˆ์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•ด ๋ณด์ธ๋‹ค. h..

Programming/Vue.js 2021.11.11

[ESlint, VSCode] VSCode ESlint ์„ค์ •

nuxt๋‚˜ vue์™€ ๊ฐ™์€ ๊ณณ์—์„œ ๊ธฐ๋ณธ ์„ธํŒ…์— eslint๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ด ์žˆ๋Š”๋ฐ, vscode์™€ ๋™๊ธฐํ™”๊ฐ€ ์•ˆ๋˜์–ด์„œ ์ €์žฅ๋งŒํ•˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ ์ƒํ™ฉ์—๋Š” { "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "eslint.alwaysShowStatus": true, "editor.formatOnSave": true } ๋˜๋Š” formatOnSave๋ฅผ ์ง€์šด { "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "eslint.alwaysShowStatus": true, } ๋ฅผ ํ˜„์žฌ ์ž‘์—…์ค‘์ธ .vscode/settings.json ์— ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ๋งŒ์•ฝ ํŒŒ์ผ์„ ๋ชป์ฐพ๊ฒ ๋‹ค๋ฉด ..

Programming/Vue.js 2021.11.05

[HTML] select tag์˜ style ๋ณ€๊ฒฝํ•˜๊ธฐ

, ์‚ฌ์šฉ๋ฒ• select๋Š” drop down menu๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ ํ•ด๋‹น ํ•ญ๋ชฉ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” html tag์ด๋‹ค. ์ด ๋•Œ, ์„ ํƒ์ง€๋“ค์€ select tag ๋‚ด๋ถ€์— option tag๋กœ ์ž‘์„ฑํ•œ๋‹ค. Volvo Saab Opel Audi ์ถœ์ฒ˜(ํ…Œ์ŠคํŠธ๊ฐ€๋Šฅ) vue๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ... {{car}} ... ... option์—์„œ ์„ ํƒํ•œ ํ•ญ๋ชฉ์ด car๋ผ๋Š” ๋ณ€์ˆ˜์™€ v-model๋กœ ๋™๊ธฐํ™”๋˜์–ด ๋ณ€๊ฒฝ๋œ๋‹ค. ๊ทธ๋ž˜์„œ style์€ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ? ์œ„์˜ ์‚ฌ์ง„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, select์˜ ๊ธฐ๋ณธ ๋””์ž์ธ์€ ์™„์ „ํžˆ '๊ธฐ๋ณธ'์ด๋‹ค. ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๊ฑด ํ˜„์žฌ ๋””์ž์ธ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋…น์•„๋“œ๋Š” select์ด๊ธฐ ๋•Œ๋ฌธ์— style ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜๋‹ค. โ€ป ์ฐธ๊ณ  ๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ธ€์— ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— vue๋ฅผ ์‚ฌ์šฉ..

Programming/Vue.js 2021.10.17

[Nuxt.js] nuxt.js์—์„œ vue-echarts ์‚ฌ์šฉํ•˜๊ธฐ

javascript์—๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์กด์žฌํ•œ๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ค‘ echarts๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. Examples - Apache ECharts echarts.apache.org ์ƒ๋‹นํžˆ ๋งŽ์€ ์–‘์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์กด์žฌํ•˜๊ณ , ๋””์ž์ธ/์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋‚˜๋ฆ„ ํŠธ๋ Œ๋””ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ฌผ๋ก  ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๋Š” ๋ถ€๋ถ„๋“ค๋„ ์žˆ์ง€๋งŒ, ๋งŽ์€ ์š”์†Œ๋“ค์ด ์ปค์Šคํ…€์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์„ฑ์ด ์ข‹๋‹ค. ์œ„ ์˜ˆ์ œ๋“ค์„ ์ฐธ๊ณ ํ•˜์ž. vue-echart, nuxt-echart๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. Vue-ECharts Apache ECharts component for Vue.js. ecomfe.github.io ์•„๋ž˜๋กœ ์Šคํฌ๋กค์„ ๋‚ด๋ฆฌ๋‹ค๋ณด๋ฉด nuxt.js์˜ setup์ด ๋‚˜์™€์žˆ๋‹ค. ... ์ž์ฃผ ๊ทธ๋Ÿฌํ•˜๋“ฏ, ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค..

Programming/Vue.js 2021.10.15

[Azure Storage] Vue.js์—์„œ Azure Storage๋กœ blob ์—…๋กœ๋“œ ํ•˜๊ธฐ

๋Š˜ AWS๋งŒ ์“ฐ๋‹ค๊ฐ€ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ฒ˜์Œ์œผ๋กœ Azure๋ฅผ ์“ฐ๊ฒŒ ๋˜์—ˆ๋‹ค. ํ˜„์žฌ ์šฐ๋ฆฌ ์‚ฌ์ดํŠธ ๊ตฌ์กฐ๊ฐ€ Vue.js(FE) - Django(BE) - Azure(Storage) ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ตฌ์กฐ๋‹ค. ํ˜„์žฌ๋Š” ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ์„ ์—…๋กœ๋“œ ํ•  ๋•Œ Django๋ฅผ ๊ฑฐ์น˜๊ณ , Azure๋กœ ์—…๋กœ๋“œ ํ•˜๋Š” ๋ฐฉ์‹์ด์–ด์„œ ํŠธ๋ž˜ํ”ฝ์ ์œผ๋กœ๋„ ์†ํ•ด์˜€๊ณ , Django๋ฅผ ๊ตด๋ฆฌ๋Š” ์„œ๋ฒ„ ์ž์ฒด๋„ ์Šค์ผ€์ผ ์—…์„ ํ•ด์•ผํ•  ์ˆ˜๋„ ์žˆ๋Š” ์ƒํ™ฉ์ด์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ Vue.js์—์„œ Azure Blob Storage๋กœ ๋ฐ”๋กœ ์—…๋กœ๋“œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ฒŒ๋˜์—ˆ๋‹ค. https://www.npmjs.com/package/vue-azure-blob-upload vue-azure-blob-upload VueJS service for multi-part uploading to MS Azure blob..

Programming/Vue.js 2021.08.20

nuxtjs/auth-next ์„ค์น˜

nuxt.config.js์— ๋‹ค์Œ ์ฝ”๋“œ๋“ค์„ ์ €์žฅํ•œ๋‹ค. buildModules:{ '@nuxtjs/axios', '@nuxtjs/auth-next' } auth: { strategies: { google: { clientId: configFile.client_id, // client_id๋Š” ๋…ธ์ถœ๋˜์ง€ ์•Š๊ฒŒ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด configFile์—์„œ ๊ฐ€์ ธ์˜ด codeChallengeMethod: '', responseType: ['token', 'id_token'], }, }, redirect: { login: '/login', logout: '/', callback: '/login', home: '/', }, }, ๊ทธ๋ฆฌ๊ณ  pages์— login.vue๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋กœ๊ทธ์ธ ํ›„ /login..

Programming/Vue.js 2021.05.23

[vuetify] v-rating Custom Icon ์‚ฌ์šฉํ•˜๊ธฐ

https://vuetifyjs.com/en/components/ratings/ Rating component The star rating component is a specialized widget for collecting user feedback via ratings. vuetifyjs.com vuetify์˜ v-rating ์ปดํฌ๋„ŒํŠธ๋Š” mdi-icon์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„์ฃผ ํŽธ๋ฆฌํ•˜์ง€๋งŒ, custom icon์„ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๊นŒ๋‹ค๋กญ๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์—์„œ๋Š” v-rating์—์„œ custom-icon์„ ์‚ฌ์šฉ๋ฒ•๊ณผ size ์กฐ์ ˆ๊นŒ์ง€ ์•Œ์•„๋ณธ๋‹ค. 1. custom icon ์ ์šฉ ์œ„ ์ฝ”๋“œ ์ฒ˜๋Ÿผ ํ‰๋ฒ”ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด v-rating์ด ์œ„์™€ ๊ฐ™์ด๊ฐ™์ด ๋‚˜์˜จ๋‹ค(์ƒ‰์ƒ์€ ๋ฌด์‹œํ•ด๋‹ฌ๋ผ). mdi-heart-outline(mdi-icon)์œผ๋กœ ์ง€..

Programming/Vue.js 2021.05.19