Vue.js10 [Vue.js] chunk-venders.js ์ฉ๋ ์ค์ด๊ธฐ ๋ฐ ์๋ ๊ฐ์ Vue.js ๋ก ๊ฐ๋ฐ ํ ์ด์ ์ค์ธ ์ฌ์ดํธ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. Vue.js ๋ ์ฒ์์ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ํ๋ฒ์ ๋ฐ์์ค๋๊ฒ ๋ฌธ์ ์๋ค. ๊ทธ ๋ชจ๋ ๊ฒ์ด ์์ถ๋ ํ์ผ์ธ chunk-vendors.js ํ์ผ์ ํฌ๊ธฐ๊ฐ ์์๋๋ ๋ฌธ์ ๊ฐ ์์ง๋ง, ์ด๋์ 12.3MB ๊น์ง ๋ถ์ด๋ ํ์ ์ธํฐ๋ท ์๋๊ฐ ๋๋ฆฐ ๋๋ผ์์๋ ์ฒ์์ ํ๋ฉด์ ๋ถ๋ฌ์ค๋๋ฐ ๋๋ฌด ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ํ๋ค. ์ฒ์์๋ lazy-loading ์ผ๋ก ์ปดํฌ๋ํธ ๋จ์๋ก ๋ถ๋ฆฌ๋ฅผ ์์ผ๋ณด์์ง๋ง, ์ฐจ์ด๊ฐ ๋ฏธ๋ฏธ ํ๋ค. ์ด ๋ฐ์๋ ์ด๋ฏธ์ง ์ฌ์ด์ฆ ์ค์ด๊ธฐ ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ง๋ง ๊ตฌ๊ธ๋ง์ ํตํด chunk-vendors.js ์ ์ผ์ ํ ํฌ๊ธฐ๋ก ์ชผ๊ฐ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ค. // vue.config.js ํ์ผ configureWebpack:{ mode: 'development', devtool:.. 2023. 5. 18. [Vue.js] Chart.js ์ฐจํธ ๋ฐ์ดํฐ 0 ์ธ ๊ฐ ์จ๊ธฐ๊ธฐ Chart.js ํ๋ฌ๊ทธ์ธ์ ์ฒ์ ์ฌ์ฉํ ๋๋ custom ์ด ์ฝ์ง ์์ ๋ณด์๋๋ฐ, ์ด๊ฒ ์ ๊ฒ ์ ์ฉํ๋ค ๋ณด๋ ์ญ์๋ ๋ด๊ฐ ์ ๋ชฐ๋๋ ๊ฒ์ด์๋ค. ๋์ ์ฐจํธ๋ฅผ ๋ง๋ค๊ณ ๋์ ์๋์ ๊ฐ์ด Mon ~ Sun ๊น์ง ๊ฐ์ด 0์ธ ๋ฐ์ดํฐ๊น์ง ํ์ํ๋ ๊ฒ์ ๋ถํ์ํ๋ค ์๊ฐ๋์๋ค. ์ด์ ๊ฒ์๊ธ์์ total ๊ฐ์ ๋ํ๋ด๋ ๊ฒ์ ํ์ฉํ์ฌ 0 ์ธ ๋ฐ์ดํฐ๋ค์ ์จ๊ฒจ๋ณผ ๊ฒ์ด๋ค. tooltips: { callbacks: { footer: function (data) { // ๋์ ์ดํฉ์ ๋ํ๋ด๋ ์ฝ๋ var total = 0; for (var i = 0; i < data.length; i++) { total += data[i].xLabel; } return "Total: " + total; }, // ์ถ๊ฐ๋ ์ฝ๋ label: functio.. 2022. 11. 8. [Vue.js] Chart.js labels hover ์ ๋ฐ์ดํฐ(tooltip) ๋ณด์ด๊ธฐ Chart.js ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋น ๋ง๋/์ฐจํธ ์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ค์ผ tooltp ์ด ๋ณด์ธ๋ค. ๊ทธ๋ฐ๋ฐ ์์ ๊ฐ์ด June ์ 8000๊ฑด ์ด์์ด๊ณ January ๋ 10๊ฑด์ผ๋ ๋ฒ์ ์ฐจ์ด๊ฐ ๋๋ฌด ์ปค์ ธ์ ๋ง๋์์ ์ ํํ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ฆฌ๊ธฐ ์ฝ์ง ์๋ค. ์ด ์ํ๋ ์ฌ์ฉ์ฑ์ด ๋๋ฌด ๋จ์ด์ ธ์ January ๋ผ๋ฒจ ์์ ๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์๋๋ tooltip์ด ๋ณด์ด๋๋ก ์ฆ, ๊ฐ ๋ผ๋ฒจ์์ hover ๊ฐ ๋์ํ๋๋ก ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ค. options: { tooltips: { mode: 'index', intersect: false }, } ๊ฐ๋จํ๊ฒ options ์ ์ด๋ ๊ฒ ์ถ๊ฐํ๋ฉด ๋๋ค. chart.js Document ์ ๋ค์๊ณผ ๊ฐ์ด ์ค๋ช ํ๊ณ ์๋ค. ์ค์ ์ด true ์ด๋ฉด intersect์ฒซ ๋ฒ์งธ ๊ต์ฐจ ํญ๋ชฉ์ด ๋ฐ์ดํฐ์ ์ธ๋ฑ์ค๋ฅผ ๊ฒฐ์ ํ.. 2022. 11. 4. [Vue.js] Char.js ๋ผ๋ฒจ ๊ฐ(value) ํ์ํ๊ธฐ Chart.js ํ๋ฌ๊ทธ์ธ์ ์ต์ ๊ณผ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๋ถ ๋ค ์๊ณ ์ฌ์ฉํ๊ธด ์ด๋ ค์ฐ๋ ํ์ํ ๋๋ง๋ค ์ฐพ์๋ณด๊ฒ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์๊ฐ๋ณด๋ค ๋ฒ์ ๋ณ๋ก ์ ์ฉํ๋ ๊ฒ๋ ๋ฌ๋ผ์ ๋ผ๋ฒจ ๊ฐ ํ์ํ๋๋ฐ ์ ๋ฅผ ์ข ๋จน์๋ค. ๋ด๊ฐ ์ฌ์ฉํ chart.js ๋ฒ์ ์ ๋ค์๊ณผ ๊ฐ๋ค chart.js : 2.9.4 chartjs-plugin-datalabels : 0.7.0 vue-chartjs : 3.5.1 ๋๋ chart.js 2.x ๋ฅผ ์ฌ์ฉํด์ datalabels ๋ฅผ 2.x ๋ฅผ ์ค์นํ์๋๋ ๋์์ ํ์ง ์์๊ณ , 1.x๋ก ๋ด๋ ธ์๋๋ ๋์ํ์ง ์์๋ค. ์ฐพ๊ณ ์ฐพ์์ 0.7.0 ๋ฒ์ ์ ์ค์นํด์์ผ ๋ผ๋ฒจ ๊ฐ์ ํ์ ํ ์ ์์๋ค. ๋ง์ฝ chart.js 3.x ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด datalables ๋ 2.x ์ด์ ํ์ํ๋ฉฐ ์์ธํ ๋ด์ฉ์ ์๋ ๊ณต์๋ฌธ์์์ ํ์ธ.. 2022. 10. 28. [Vue.js] Chart.js ๋์ ๋ง๋ ๊ทธ๋ํ ์ดํฉ ํ์ํ๊ธฐ (Stack Bar, Total) Chart.js ํ๋ฌ๊ทธ์ธ ๊ธฐ๋ณธ ์ต์ ์ผ๋ก๋ ๋์ ๋ง๋๊ทธ๋ํ์ total ๊ฐ์ ๋ํ๋ด์ง ์๋๋ค. ์ด๋ option ์ tooltips ๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํ ๊ฐ๋ฅํ๋ค. tooltips: { mode: "label", callbacks: { footer: function (data) { var total = 0; for (var i = 0; i < data.length; i++) { total += data[i].yLabel; // ์ธ๋ก๋ง๋๋ yLabel , ๊ฐ๋ก๋ง๋๋ xLabel } return "Total: " + total; }, }, },option ๋ค์ ์ ์ํ ๋ ์ด ์ฝ๋๋ง ์ถ๊ฐํ๋ฉด ๋๋ค. ๋ง๋ ๊ฐ๋ณ ๊ฐ๊ณผ ์ด ํฉ์ ํ์ธ ํ ์ ์๋ค. 2022. 10. 25. [Vue.js] Hot Reload ๋์ ์ํ ๋ ์์ ์ ๋ง๋ค์ด ๋จ๋ Vue.js + SpringBoot ํ๋ก์ ํธ๋ฅผ ์๋ก ๋์ ๋๋ฐ Vue ์ ์ฅ์ ์ธ hot reload ๊ฐ ๊ฐ์๊ธฐ ๋์์ ํ์ง ์์๋ค. Vue ์ ์ฝ๋๋ฅผ ๋ฐ๊พธ๋ฉด ํญ์ rebuild ํ ์คํ๋ง์ ์ฌ์์ํ๋ ๊ฒ์ด ๋๋ฌด ๋ถํธํด์ ๊ธํ๊ฒ ๊ตฌ๊ธ์ ๊ฒ์ํด์ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ์ฐพ์๋ค. package.json ์ --watch ์ถ๊ฐ build --watch ๋ฅผ ํตํด ์ค์๊ฐ์ผ๋ก ์ฌ๋น๋ ํ์ฌ ๋ณํ๋ฅผ ๊ฐ์งํ๋๋ก ์ถ๊ฐ ํ์๋ค. ์ด์ ์์ ์ฒ๋ผ Vue์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ฉด ๋ฐ๋ก ๋ฐ์์ด ๋์๋ค. 2022. 10. 18. Vue.js(4) Router ๋ฐ Axios, async await ๊ฐ๋ Vue Router ์ฑ๊ธํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ค. ํ์ด์ง๊ฐ์ ์ด๋ํ๋ ๊ธฐ๋ฅ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ค. ๋ผ์ฐํฐ ์ธ์คํด์ค ์์ฑ var router = new VueRouter({ ... }) ๋ผ์ฐํฐ ์ต์ ์ถ๊ฐ ๊ฐ๋ฅ routes : ๋ผ์ฐํ ํ URL ๊ณผ ์ปดํฌ๋ํธ ๊ฐ ์ง์ path : ํ์ด์ง url component : ํด๋น ํ์ด์ง๊ฐ ๋ฟ๋ ค์ง ์ปดํฌ๋ํธ mode URL ์ ํด์ฌ ๊ฐ ์ ๊ฑฐ ์์ฑ mode=''history' ===> # ๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ถ๋ ๊ฒ์ ์ ๊ฑฐ ์ธ์คํด์ค์ ๋ผ์ฐํฐ ์ธ์คํด์ค ๋ฑ๋ก new Vue({ router: router ...}) ์ค์น https://router.vuejs.org/installation.html ๊ณต์์ฌ์ดํธ ์ค์น ๋งํฌ npm install vue-router .. 2022. 10. 9. Vue.js(3) Vue ์ธ์คํด์ค ์์ฑ ๋ฐ ์ปดํฌ๋ํธ Vue ์ธ์คํด์ค new Vue({ el:, template:, data: , methods: , created: , watch: , }); el: ์ธ์คํด์ค๊ฐ ๊ทธ๋ ค์ง๋ ํ๋ฉด์ ์์์ template: ํ๋ฉด์ ํ์ํ ์์ data: ๋ฐ์ดํฐ methods: ์ด๋ฒคํธ ํจ์๋ค created: ๋ผ์ดํ์ฌ์ดํด ์ค ํ๋ watch: data์์ ์ ์ํ ์์ฑ์ด ๋ณ๊ฒฝ๋์ ๋ ์ถ๊ฐ ๋์์ ์ ์ computed: ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ์์ฑ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์ฌ์ฉ methods ํจ์์ ์ฅ์ computed ๋ฐ์ดํฐ์ ๊ฐ์ ๋ฐ๋ผ์ ๋ฐ๋๋ ๊ฐ์ ์ ์ํ๋ ์์ฑ์ด๋ค. ํ ํ๋ฆฟ ๋ด์ ํํ์์ ๋ฃ์ ์ ์๋ค. ํ์ง๋ง ๊ฐ๋จํ ์ฐ์ฐ์ผ ๋๋ง ์ด์ฉํ๋ ๊ฒ์ด ์ข๋ค. {{ message.split('').reverse().join('') }} ์ด๋ ๊ฒ ์ฐ์ฐ.. 2022. 10. 9. Vue.js(2) vue ์ธ์คํด์ค ๋ฐ ํ ํ๋ฆฟ ๋ฌธ๋ฒ Vue Instance Vue.js ํ๋ฉด ๊ฐ๋ฐ์ ์ํด ๊ผญ ์์ฑํด์ผ ํ๋ ํ์ ๋จ์์ด๋ค.Instance ์์ฑ // ์๋กญ๊ฒ Vue๋ฅผ ์ ์ธ new Vue({ el: '#app', // ์ด๋ค ์์์ ์ ์ฉ์ ํ ์ง ์ ํจ ์ฌ๊ธฐ์๋ HTML ์ฝ๋์ ์ ์ธ๋ id="app"์ธ div ํ๊ทธ๋ฅผ ์ง์ data: { // data ๋ ํด๋น VueJS์์ ์ฌ์ฉํ ์ ๋ณด๋ค์ ์ ์ธํด์ฃผ๋ ์ญํ title: '์๋ VueJS!' } }) ์ธ์คํด์ค ์ฌ์ฉํ ์ ์๋ ์์ฑ๊ณผ API new Vue({ el: , // ์ธ์คํด์ค๊ฐ ๊ทธ๋ ค์ง๋ ํ๋ฉด์ ์์์ (ํน์ HTMLํ๊ทธ) template: , // ํ๋ฉด์ ํ์ํ ์์ (HTML, CSS ๋ฑ) data: , // ๋ทฐ์ ๋ฐ์์ฑ(Reactivity) ๊ฐ ๋ฐ์๋ ๋ฐ์ดํฐ ์์ฑ methods: , // ํ.. 2022. 10. 9. Vue.js(1) ํ๋ก์ ํธ ์์ฑ ๋ฐ ํ๋ก์ ํธ ๊ตฌ์ฑ MVVM ์ด๋? ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ ์ ํ ์ด์ ๋ก์ง์ UI๋ก๋ถํฐ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค. ์ญ์ฌ : ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํ์ฉํ ํ๊ฒฝ์์ ๋ฐ์ดํฐ์ ํ๋ ์ ํ ์ด์ ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด์ ๋ง๋ค์ด์ง ๋์์ธ ํจํด์ด๋ค. 1. ๋ชจ๋ธ Model ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค.2. ๋ทฐ View UI์ UI ๋ก์ง์ ๋ค๋ฃฌ๋ค.3. ๋ทฐ ๋ชจ๋ธ View Model View ๋ฅผ ํํํ๊ธฐ์ํด ๋ง๋ , View๋ฅผ ์ํ Model์ด๋ค. View๋ฅผ ๋ํ๋ด์ฃผ๊ธฐ ์ํ Model ์ด์ View ๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ถ๋ถ์ด๋ค. ๋์ ์ฌ์ฉ์์ Action๋ค์ View๋ฅผ ํตํด ๋ค์ด์ค๊ฒ ๋จ View์ Action์ด ๋ค์ด์ค๋ฉด, Command ํจํด์ผ๋ก View Model์ Action์ ์ ๋ฌ View Model์ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ Model์ .. 2022. 10. 9. ์ด์ 1 ๋ค์ ๋ฐ์ํ