# ํ๋ฌ๊ทธ์ธ
ํ๋ฌ๊ทธ์ธ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฃผ ์ฌ์ฉ๋ ๋งํ ์์ฑ, ํจ์, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ์ฌ์ฉ์ฑ์ ๋์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ทฐ ๋ผ์ฐํฐ, ๋ทฐ์์ค ๋ฑ์ ์ฝ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ด๋ฏธ ๋ทฐ ํ๋ฌ๊ทธ์ธ ํํ๋ก ์ ๊ณต๋๊ณ ์์ต๋๋ค.
# ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ ๋ฐฉ๋ฒ
๋ทฐ๋ก ๊ฐ๋ฐํ๊ธฐ ์ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๊ฒ์ํ๋ค ๋ณด๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ๋ง์ฃผ์น ์ ์ด ์์ ๊ฒ๋๋ค.
Vue.use(VueRouter);
Vue.use(Vuex);
์ฌ๊ธฐ์ Vue.use()
์ฝ๋๊ฐ ๋ฐ๋ก ํ๋ฌ๊ทธ์ธ์ ์ค์นํ์ฌ ์ฌ์ฉํ๋ ์ฝ๋์
๋๋ค. ํ๋ฌ๊ทธ์ธ์ ํ๋ฒ ์ค์นํ๊ณ ๋๋ฉด ๋ทฐ ์ธ์คํด์ค์ ๋ด๋ถ์ ํ๋ฌ๊ทธ์ธ์ ์ ์ํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฌ๊ณ ๋๋ฉด ์ปดํฌ๋ํธ ๋ด๋ถ์์ this๋ก ํด๋น ๊ธฐ๋ฅ์ ํธํ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด๋ฐ ์ด์ ๋ก ์์ฃผ ์ฌ์ฉ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ธฐ๋ฅ๋ค์ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
# ํ๋ฌ๊ทธ์ธ ๊ตฌํ ๋ฐฉ๋ฒ
๊ทธ๋ผ ํ๋ฌ๊ทธ์ธ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋๋ ๊ฐ๋จํ ํ๋ฌ๊ทธ์ธ ์ ์ ์ฝ๋์ ๋๋ค.
// ChartPlugin.js
import Chart from 'chartjs';
export default {
install(Vue, options) {
Vue.prototype.ChartJS = Chart;
}
}
์ ์ฝ๋๋ chartjs๋ผ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ npm ๋ฐฉ์์ผ๋ก ํ๋ก์ ํธ์ ์ค์นํ ํ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฌ์ฉํ๋ ์ฝ๋์
๋๋ค. ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์ Chart
๋ผ๋ ๋ณ์์ ๋ด์๊ณ ๋ทฐ ํ๋ฌ๊ทธ์ธ์ ์ค์น(install)ํ ๋ ๋ทฐ์ ํ๋กํ ํ์
์์ฑ์ผ๋ก ํด๋น ๋ณ์๋ฅผ ์ฐ๊ฒฐํ๋ ์ฝ๋์
๋๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ๋ทฐ ์ธ์คํด์ค๋ฅผ ์ ์ํ๊ธฐ ์ ์ ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ฉด ์ปดํฌ๋ํธ์์ ๋งค๋ฒ ์ฐจํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์ค์ง ์๊ณ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
import ChartPlugin from './ChartPlugin.js';
Vue.use(ChartPlugin);
new Vue({
// ...
});
ํน์ ์ปดํฌ๋ํธ์์ ์ฐจํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์๋์ ๊ฐ์ด this.ChartJS
๋ก ์ฐจํธ๋ฅผ ํธ์ถํฉ๋๋ค.
<!-- Home.vue -->
<script>
export default {
mounted() {
new this.ChartJS(this.$refs.myChart, {
// ...
})
}
}
</script>
TIP
ํ๋ฌ๊ทธ์ธ ๋ณ์๋ช
์ $_
๊ฐ ์ข์ต๋๋ค. ๋ทฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ private ๋ณ์๋ _
๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ , ์ฌ์ฉ์์๊ฒ ๋
ธ์ถ์ํค๋ ์ธ์คํด์ค ๊ด๋ จ ์์ฑ์ $
๋ฅผ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด ๋ด์ฉ์ ๋ทฐ ๊ณต์ ๋ฌธ์์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ๋ฐ๋์ต๋๋ค.
โ Mixins Mixins vs HOC โ